タグ

*algorithmと*programに関するsh19910711のブックマーク (381)

  • 物体検出モデルの推論高速化入門

    はじめに 株式会社EVERSTEELで機械学習エンジニアをしている加藤です。 機械学習システムの運用において、推論の高速化は重要な課題です。特にリアルタイムでの処理が求められるアプリケーションでは、レスポンス時間の短縮がユーザー体験に直結します。また、クラウド環境のコスト削減やエッジデバイスのリソース制約など、様々な観点から推論の効率化が必要とされます。 記事では特に物体検出モデルのCPU推論に焦点を当て、ディープラーニングモデルの推論を高速化する方法を紹介するとともに、それらのベンチマーク結果を共有します。 「鉄ナビ検収AI」における推論高速化ニーズ 弊社では鉄スクラップの画像解析を行う「鉄ナビ検収AI」というアプリケーションを開発しています。アプリケーションを提供するために多様な画像認識モデルを運用していますが、その中でも速度要件が厳しいものとして、荷台検出モデルが存在します。 荷

    物体検出モデルの推論高速化入門
    sh19910711
    sh19910711 2025/10/18
    "PyTorchのテンソルはデフォルトでcontiguous (NCHW) メモリ形式 / channels last形式では空間的に隣接するピクセルがメモリ上でも近い位置に配置されるため、畳み込み演算時のキャッシュ効率が改善"
  • Label Studioによる固有表現抽出のデータアノテーション ~ spacy のファインチューニング

    ほかにもHomebrewやDockerなどでインストールすることもできます。詳細は公式ドキュメントをご参照ください。 インストールできた場合は、次のコマンドでLabel Studioを立ち上げられます。 localhost:8080 に接続して以下のような画面が表示されたら成功です。 HumanSignal. Label Studioのログイン画面のスクショ アノテーション ユーザー作成 「SIGN UP」を選択し、適当なメールアドレス、パスワードを入力してアカウントを作成してください。(メールアドレスは実際に使用しているものでも、user@example.com のようなものでもよいと思います。) 無事にユーザー作成ができた場合は以下のような画面に移ります。 HumanSignal. Label Studioのプロジェクト一覧画面のスクショ プロジェクト作成 「Create Projec

    Label Studioによる固有表現抽出のデータアノテーション ~ spacy のファインチューニング
    sh19910711
    sh19910711 2025/10/18
    2024 / "Label Studio: LLMのfine-tuningや訓練に用いるデータを作成できるツール / 物体検出やNER、話者分離など、多様なタスクに対応 / モデルを用いたpre-annotationやactive-learning"
  • Evolutionary Optimization of Model Merging Recipesを理解する(論文編)

    Evolutionary Optimization of Model Merging Recipesについて 先日、sakana.aiが発表した論文になっています。大規模言語モデル(LLM)のパラメータと下流タスクでの性能の関係は、Task Arithmeticなどで研究されてきました。そこから、複数のLLMのレイヤーをパラメータを混ぜて一つにする方法が提案されてきました。この論文では、パラメータの混ぜ方だけでなく、レイヤーのマッチングまで一化して最適化する手法を提案しています。 個人的に、この手法の発展が楽しみです。行く末は、ビッグテックが要するクローズドな大きなモデル(GPT4, Geminiなど)を、オープンソースの複数のモデルが超えていく未来が来るかもしれません(スイミーのように)。 この論文が扱う問題の理解 この論文が解く問題は、モデルの合体(model merging)の最適

    Evolutionary Optimization of Model Merging Recipesを理解する(論文編)
    sh19910711
    sh19910711 2025/10/06
    2024 / "Task Arithmetic: パラメータと下流タスクでの性能の関係 / 学習で使われたデータの違いから、モデルAのレイヤーの出力を、モデルBのレイヤーへ入力すると分布違いから、最終的な生成結果がおかしくなってしまう"
  • 偽陽性を許容して空間効率良くキーの存在を確認するBloom filterとCuckoo filter - sambaiz-net

    例えばデータストアへのアクセス抑制のためにキーの存在を確認する際、 全てのキーを保持して探索すれば100%正しく判定できるが、キーが長く数が膨大になるとメモリの使用量が問題になることがある。 もし偽陽性が許容できるなら、次のフィルタを使うことで空間効率良くキーの存在を確認できる。 Bloom filter 1970年に考案されたフィルタで、 LevelDBやCassandraで使われている。 GoogleのkvsライブラリLevelDBを使う - sambaiz-net 初期値0のビット配列と、そのいずれかのビットにデータをマッピングするk個のハッシュ関数を定義し、 含めるデータを各ハッシュ関数に通して、マッピングされたビットを1に更新していく。 これにより、いずれかのハッシュ関数によって0のビットにマッピングされるデータは、必ずフィルタに含まれないことが分かる。 また、ビット配列のAND

    偽陽性を許容して空間効率良くキーの存在を確認するBloom filterとCuckoo filter - sambaiz-net
    sh19910711
    sh19910711 2025/10/02
    2021 / "Cuckoo filter: バケットの空きが十分ならCounting filterよりも高速 + 埋まるに連れて追い出しが頻発しパフォーマンスが下がっていく"
  • timmのModelEmaについて(ISIC2024コンペ振り返り①)

    先日のKaggleのISICコンペは結構時間をかけて参加しましたが、惨敗でした…。(1088位/2739チーム) 上位解法で気になったものをいくつかまとめようと思います。まずは4thが画像モデルに使っていたtimmのModelEMAについてです。 timmのModelEmaとは? ModelEMA(Exponential Moving Average)は、モデルの重みの移動平均を保持するテクニックで、モデルの安定性や汎化性能を向上させるために用いられます。先日の関東kaggler会でもちょろっと紹介されていたようです。 1. EMAの基的な考え方 EMAは、現在のモデルの重みと過去の重みの指数関数的な移動平均を計算します。これにより、学習中に過度に更新された重みを平均化し、より滑らかな更新結果を得ることができます。一般的には、次の式で表されます。 ​EMAの重み更新は次の式で表されます:

    timmのModelEmaについて(ISIC2024コンペ振り返り①)
    sh19910711
    sh19910711 2025/09/28
    2024 / "EMA: 現在のモデルの重みと過去の重みの指数関数的な移動平均を計算 + 過度に更新された重みを平均化 / EMA適用後は学習曲線の推移が滑らか + 学習の進みは遅くなる"
  • Claude Codeと数理最適化をやってみる

    こんにちは、ペルソナ4 リバイバルを楽しみにしているデータサイエンティストのoddgaiです。 先日、Claude CodeでKaggleをやってみた記事を書いたのですが、数理最適化もできるの?と思ったのでやってみました。 結論 単純な問題ならざっくり指示しても割とちゃんと解いてくれる OR-tools, PuLPなどのライブラリも使える 他分野よりネットに情報が落ちてない印象があったので心配してたけど意外と大丈夫だった 数秒で数百行のコードを書いてくるので人間による確認&精度担保が大変 今回はテストデータなので甘めにやってしまった・・・ C++やらRustやらでヒューリスティックをゴリゴリ書いてもらうとかは未調査だが、こちらも強そう 参考:AI vs 人間まとめ【AtCoder World Tour Finals 2025 Heuristic エキシビジョン】 - chokudaiのブロ

    Claude Codeと数理最適化をやってみる
    sh19910711
    sh19910711 2025/09/27
    "Python-MIPを使ってと指示したのにPuLPを使う / 最適解です!と言いつつ微妙に違う解を出してくる / 人間がAIの出力を確認しやすい仕組みを作るのが大切"
  • LightFMから始める推薦システム入門

    アドベントカレンダー 株式会社GENDAでデータサイエンティストをしているtoma2です。 この記事は、GENDAアドベントカレンダー2023の9日目の記事になります。 GENDAアドベントカレンダーでは、プロダクト開発や組織開発に関わるメンバーを中心に多様なテーマの記事を投稿しています。ぜひ、購読登録をしていただき12月25日までお楽しみください。 はじめに 最近、推薦モデルを調べる中でLightFMについて勉強したので、その内容をまとめとデータセットMovieLensでの実行例を示します。また、私が推薦モデルから推薦システムを作ろうとした際に躓いた、新規データへの対応やモデル更新といった実用的な内容も記載しています。 参考文献 こうもとさんのブログ「宇宙 日 世田谷 機械学習」は、lightFMの理論から実用上の細かい点まで詳しく記載されており、大変参考にさせていただきました。 Li

    LightFMから始める推薦システム入門
    sh19910711
    sh19910711 2025/09/20
    2023 / "LightFM: 名前の通り動作が軽くCPUで動き + 環境構築が比較的容易で入門に最適 / Pythonライブラリであるlightfmの完成度が非常に高い + データ形式の変換関数やloss functionなどが充実"
  • ワーシャルフロイド法をJuliaで(強引に)アニメーション

    はじめに 競プロとかやってると、たまに聞くワーシャルフロイド法 コードは短くて悩むところないけど、これで「抜け」ないんだっけ? とか思ったりするので、一度動画にしてみる。 Julia言語にはGraphPlotなるものがあるのでそれの練習 ワーシャルフロイド法 WikipediaとかもあるけどJuliaでは for k ∈ 1:n , i ∈ 1:n , j ∈ 1:n Dist[i,j]=min(Dist[i,j],Dist[i,k]+Dist[k,j]) end Dist #Distは有向グラフをマトリクスにしたもの 短いです 解説 ググれば素晴らしい解説があると思いますが簡単に 負の閉路のない(クルクル回るとマイナス無限になったりしない)有向(無向)グラフで、最短の経路を求めるには ある中継点を通った方が直通より短ければ、直通の距離をそれに書き換える。 それを各中継点で全通り調べると、

    ワーシャルフロイド法をJuliaで(強引に)アニメーション
    sh19910711
    sh19910711 2025/09/12
    2022 / "グラフ描画にGraphs GraphPlotを用いますが、上にテキストを重ねたかったりしたので融通を効かせる為、Compose(GraphPlotは元々この形式出力"
  • アノテーションツールをClaudeに作らせて、自分の設計力を見直してみた

    イントロ ELEMENTS開発部AiQグループの森です。私は、AiQ PERMISSIONというプロダクトの開発を担当しております。AiQ PERMISSIONは、セルフガソリンスタンドで義務化されている給油者の行動監視をAIが代替し、人手不足の解消や業務効率化、安全性の向上を目的としています。 AiQ PERMISSIONでは、設置しているカメラ映像から行動を検知して、給油者が不審な行動を対象のレーンに許可を出したり、給油を緊急停止したりします。 この処理を行う際に、ガソリンスタンドのカメラの映像情報と各レーンの番号の対応、並びに監視する範囲を指定するために、下記のオレンジ色や赤紫色の枠を設定し、アノテーション情報を付加する必要があります。 問題/課題 ツールを作成したのは2025年3月時点で、Vibe Codingで簡単なLPなどは作れるような状況でした。が、実際に業務をしていたら「

    アノテーションツールをClaudeに作らせて、自分の設計力を見直してみた
    sh19910711
    sh19910711 2025/09/06
    "「なんか違う」出来のものができる / 動くものでフィードバックを得て自分の言語化力の不足している点に気づく、というのが特に良かった"
  • 特徴量エンジニアリングの道標

    門脇大輔 阪田隆司 保坂桂佑 平松雄司 著 Kaggleで勝つデータ分析技術 2019-10-09 技術評論社 https://gihyo.jp/book/2019/978-4-297-10843-4 polarsの練習も兼ねて、データの前処理と特徴量エンジニアリングについて網羅的にメモを残します。 ダミーのデータセットを基に相関のあるデータを作成し、このデータを使って遊んでいきます。 TL;DR 欠損値は平均で埋めるだけにせず、欠損かどうかのカテゴリ変数へ掃き出して、よりよい補完値で埋める。または埋めなくても良い手法で分析する。 スケーリングは標準化だけではなく、順位や分布の裾野を見ながら最適なもの(モデルが扱いやすいもの)を選ぶ。 カテゴリ変数のエンコーディングは、one-hot化やLabel Encodingだけでなく、精度重視ならTarget Encodingなども試す。 列同士

    特徴量エンジニアリングの道標
    sh19910711
    sh19910711 2025/08/20
    2024 / "入力からは読み取れないデータを作ることが特徴量作成の肝 / スケーリングは標準化だけではなく、順位や分布の裾野を見ながら最適なもの(モデルが扱いやすいもの)を選ぶ"
  • 【論文解説+Tensorflowで実装】VQ-VAEを理解する

    今回は、VQ-VAE(Vector Quantised-Variational AutoEncoder)を解説したいと思います。 VQ-VAEもVAE(Variational AutoEncoder)と同じで潜在変数を使った画像などの生成モデルです。 通常のVAEと違うところは、VAEでは潜在変数\(z\)が連続的なベクトルを取りましたが、VQ-VAEでは潜在変数が離散的なベクトルを取る点です。 画像や自然言語は来離散的なもので、例えば「犬」から「」へ少しずつ変化していくものでありません。 ですので、潜在変数を離散的にすることは自然であると言えます。 では、以下の論文をもとに解説していきたいと思います。 『Neural Discrete Representation Learning』 最後にTensorflowで実装していますので、そちらも参考にしていただければと思います。 PyTo

    【論文解説+Tensorflowで実装】VQ-VAEを理解する
    sh19910711
    sh19910711 2025/07/26
    2021 / "通常のVAEと違うところは、VAEでは潜在変数𝑧が連続的なベクトルを取りましたが、VQ-VAEでは潜在変数が離散的なベクトルを取る / 潜在変数の事前分布、事後分布をカテゴリカル分布とする"
  • 角度を用いた深層距離学習(deep metric learning)を徹底解説 -PytorchによるAdaCos実践あり-|はやぶさの技術ノート

    こんにちは。 現役エンジニアの”はやぶさ”@Cpp_Learningです。最近、距離学習を楽しく勉強しています。 今回は、角度を用いた深層距離学習のSphereFace・CosFace・ArcFace・AdaCosについて勉強したので、備忘録も兼ねて記事を書きます。

    角度を用いた深層距離学習(deep metric learning)を徹底解説 -PytorchによるAdaCos実践あり-|はやぶさの技術ノート
    sh19910711
    sh19910711 2025/07/22
    2020 / "ArcFaceやCosFaceなどには、スケール:s, マージン:mといったハイパーパラメータ / AdaCosでは、それらのハイパーパラメータを自動で設定"
  • WGANの論文読んでTensorflowで実装する その1 - 時給600円

    前回、間違えてUnrolledGANの論文を読んでしまった。 このWGANというのが当は読もうと思った論文。正直UnrolledGANを先に読んでなかったらWGANの理解が深まらなかったと思う。読んでてよかった という訳で論文はここからどうぞ [1701.07875] Wasserstein GAN あとコードも先に置いておく github.com WGANという名前が付いてるから、このWが重要になってくる。WはWassersteinの略。わずさーなのかわっさーなのか英語がカスなので読み方がわからん・・・ Wassersteinというのは論文ではEarth Mover (EM) distanceとも呼ばれる。distanceだから距離を表すもの。この距離をGANに使ったらいい感じになったってことなのか?と読み始めに思った。 今まで自分が読んだGANはどれも GeneratorとDiscr

    WGANの論文読んでTensorflowで実装する その1 - 時給600円
    sh19910711
    sh19910711 2025/07/05
    2018 / "EM: 二つの分布をそれぞれ四角のブロックの集まりで表す + コンパクトじゃない集合においても使えるらしい。その時不思議な結果が出る / 志賀浩二先生の「位相への30講」"
  • Go1.19で採用された Pattern-defeating Quicksort の紹介

    今回はPattern-defeating Quicksortの論文を読んでいき、Goでどのように実装されているか簡単に見ていく

    Go1.19で採用された Pattern-defeating Quicksort の紹介
    sh19910711
    sh19910711 2025/06/20
    2022 / "イントロソートの改良版 / 再帰の深さが深くなりすぎるとヒープソートに切り替えたり、パーティションのサイズが小さくなりすぎると挿入ソートに切り替え"
  • [Package] 最適輸送問題のパッケージを試す | POT, OTT-jax, OptimalTransport.jl

    最適輸送 (Optimal Transport) は近年機械学習などの分野で注目されているトピックです. 私も前世に,Optimal Transportに関するPDFファイル (というか?でしょうか) を読んだ記録を書いていたことがあります (以下のQiita検索を見てください). これまでPythonの代表的なパッケージとしてPOT (Python Optimal Transport),JuliaのパッケージとしてOptimalTransport.jl などがありましたが,最近ネットサーフィンしていると Google Research謹製のJAXパッケージ Optimal Transport Tools (OTT) と呼ばれるものが登場していたことに気付いたので比較をしてみました.またPOTとOTT-jaxの比較については公式ドキュメントが公開しているものを実行して挙動を確認しました.

    [Package] 最適輸送問題のパッケージを試す | POT, OTT-jax, OptimalTransport.jl
    sh19910711
    sh19910711 2025/05/11
    2021 / "最適輸送: Pythonの代表的なパッケージとしてPOT (Python Optimal Transport),JuliaのパッケージとしてOptimalTransport.jl など / OTT: Google Research謹製のJAXパッケージ"
  • Deep SVDDに基づく外れ値検知をPyTorchで実装した - 備忘録

    はじめに 外れ値検知の機械学習モデルの一つとして"Deep SVDD" が知られている。 今回はこれを、異常検知/外れ値検知のためのPythonパッケージPyODの仕様に沿った形で、PyTorchにより実装したということである。 外れ値検知は1クラス分類と捉えることができ、「通常」クラスか「それ以外(=外れ値、つまり異常)」という分類が行われる。 "Deep SVDD"は、外れ値検知の既存手法であるOne-Class SVM / Support Vector Data Description (SVDD) の非線形カーネルをニューラルネットワークで置き換えたものである。 準備 PyODはpipでインストール可能である。 pip3 install pyod ほか、torch, sklearn, numpy, tqdmのインストールを済ませておく。 Deep SVDDについて 概要は以下の記事

    Deep SVDDに基づく外れ値検知をPyTorchで実装した - 備忘録
    sh19910711
    sh19910711 2025/05/04
    2021 / "Deep SVDD: 外れ値検知の既存手法であるOne-Class SVM / Support Vector Data Description (SVDD) の非線形カーネルをニューラルネットワークで置き換え"
  • Go Conference 2019 Autumn Go で超高速な 経路探索エンジンをつくる/Go Conference 2019 Autumn go-ch

    Go Conference 2019 Autumn Go で超高速な 経路探索エンジンをつくる/Go Conference 2019 Autumn go-ch

    Go Conference 2019 Autumn Go で超高速な 経路探索エンジンをつくる/Go Conference 2019 Autumn go-ch
    sh19910711
    sh19910711 2025/04/26
    2019 / "Bidirectional Dijkstra: 両端からダイクストラで交互に探索 + 片方で探索済みのノードにあたったら終了 / Contraction Hierarchy: 隣り合っていないノード間の最短経路をショートカットとして事前にエッジとして追加"
  • 検索タスクにおけるBM25のコサイン類似度とスコアの精度比較 - Qiita

    追記 比較する条件を整理した改良版を書きました。記事は記録として残しておきます。(2024/11/28) 概要 以下の記事の疑問に自分なりに答えを出すために、実際にBM25スコアとBM25ベクトルのコサイン類似度で検索精度にどう違いがあるのか検証しました。 【疑問】BM25でもTFIDF同様にコサイン類似度に基づいてランキングしてよいのか 背景 上記別記事で抱いた疑問の概略は以下です。 検索タスク等において、ランキングの指標として、TFIDFではTFIDF重みベクトルのコサイン類似度を用いるが、BM25ではBM25スコアを用いることが多い BM25スコアはクエリに含まれる単語を検索対象文書におけるその単語のBM25の重みに変換して足し合わせた値である。 BM25でもBM25の重みベクトルのコサイン類似度(BM25コサイン類似度)をランキングに用いたらだめなのか? 記事で書いていない内容も

    検索タスクにおけるBM25のコサイン類似度とスコアの精度比較 - Qiita
    sh19910711
    sh19910711 2024/10/13
    "どちらかというと、rank_bm25のほうがシンプルな実装をしており、scikit-learnのBM25Vectorizerは、低頻度語のフィルタリングなど、いろいろ気の利いた処理が入っていそう"
  • Julia によるレコメンドアルゴリズム実装 - Speaker Deck

    2018/10/04 MACHINE LEARNING Meetup KANSAI #3

    Julia によるレコメンドアルゴリズム実装 - Speaker Deck
    sh19910711
    sh19910711 2024/10/13
    "BPMF: MAP推定ではなくベイズ推定 + 因子行列のパラメータにも事前分布を設定 + ハイパーパラメータチューニングの手間が掛からない / 数値計算部分だけJulia + DB入出力等はPython" '18
  • Kernel t-SNEを使ったデータの分類をフルスクラッチ実装でやってみた - Qiita

    $ $ 記事で取り扱う内容は下記の3点となります. SNE の理論と実装 $t$-SNE の理論と実装 Kernel $t$-SNE の理論と実装 $ $記事では Kernel $t$-SNE によりデータを分類することを目標としますが,その過程において,SNE,$t$-SNE の理論と Python による実装例もご紹介したいと思います. はじめに 機械学習手法の一つであるクラスタリング (Clustering) や分類 (Classification) は実社会の様々な場面で活用されています. 例えば次のような活用例が挙げられ,実は私達の身近なところで使われていることがわかります. 顧客タイプを分類しマーケティングやセールスへ活用 スパムメールのフィルタリング 株価予測 悪意のある金融取引の検知 なお,クラスタリング (Clustering) と分類 (Classification

    Kernel t-SNEを使ったデータの分類をフルスクラッチ実装でやってみた - Qiita
    sh19910711
    sh19910711 2024/10/12
    "クラスタリング (Clustering) と分類 (Classification) は異なり / この違いは t-SNE と Kernel t-SNE の違いにもなる / 類似度を計算する際に,SNEではガウス関数を使用しますが t-SNE ではスチューデントの t 分布を使用" '20