タグ

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

  • 【論文解説+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は、低頻度語のフィルタリングなど、いろいろ気の利いた処理が入っていそう"
  • 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
  • Word2Boxの実装を読み解く - Qiita

    はじめに 近年、単語表現を点で表すのではなく、箱のような幅を持つような表現で埋め込む手法が流行ってきています。そこで、私の研究でもこの分散表現を使ってみたいと思い、 Word2Box: Capturing Set-Theoretic Semantics of Words using Box Embeddings の論文を読んでみましたが、内容を理解するのが困難でした。そこで、Github上のソースコードからなんとかモデルの内容について理解しようと試みてみました。理解が不十分なところが多々ありますので、ご教示いただけると幸いです。 提案手法 Box Embedding とは まず、Box EmbeddingやWord2Boxについて簡単に説明します。 Box Embeddingはその名の通り、Box状に埋め込みます。 例えば、 "bank" という英単語を2次元で埋め込むことを考えます。Bo

    Word2Boxの実装を読み解く - Qiita
    sh19910711
    sh19910711 2024/09/07
    "Word2Box: 周辺語から中心語を予測するような学習 / 正例と周辺語との距離は近づけ + 負例と周辺語との距離は遠ざける / torchtext.data.Field: 自然言語処理のあらゆる前処理をサポート" doi:10.18653/v1/2022.acl-long.161 ACL'22
  • グラフ向け深層学習ライブラリDeep Graph Library (DGL)の初歩の初歩 - Qiita

    グラフ向けの深層学習ライブラリDeep Graph Library(DGL)の基的な使い方について紹介します。公式ドキュメントに事例やAPIの説明が詳細に載っていたりチュートリアルも豊富にありますが、DGLの一番基的な動作(だと個人的に思っている)ノードの特徴量のmessageとreduceという2つの処理について、丁寧に説明している記事がなかったので説明してみます。 Deep Graph Library (DGL)とは? New York UniversityとAWSが開発しているPytorch-basedの(?)グラフと対象としたDeep Learningのライブラリです。 画像や言語など従来よく研究されているデータ構造ではTensorFlow, Pytorch, Chainerなど有名なライブラリがあり、CNNやRNNなどが1つの関数(公式ではbuilding-blocksと言っ

    グラフ向け深層学習ライブラリDeep Graph Library (DGL)の初歩の初歩 - Qiita
    sh19910711
    sh19910711 2024/06/20
    "DGL: New York UniversityとAWSが開発しているPytorch-basedの(?)グラフと対象としたDeep Learningのライブラリ / ちなみにDGLのリポジトリに結構最新のモデルも実装されているので使えそう" 2019
  • アルゴリズム設計に欠かせない問題解決のための「還元」 with Clojure - Qiita

    システムエンジニアプログラマーは、問題解決に取り組むことが主な仕事ですが、 直面する問題解決に取り組む中で、過去に似たような問題に出会っていたことに気が付くことがよくあると思います。 この記事では、問題を別の問題に置き換えて考えることを言語化した、計算理論の世界の「還元」という概念を紹介しようと思います。 紹介の中で使うコードは、今の仕事で使っているClojureで書きました。(Clojureがわからなくても内容は理解できると思います) また、個人的な解釈を含むので、誤っている場合があります。個人的な解釈については、「~ていそうです」「~と思いました」「~な気がします」みたいな表現になっています。 1. 還元(reduce) 還元(reduce)とは、ある計算問題Aを別の計算問題Bに変換することです。 問題解決においては、 「この問題(A)って要はあの問題(B)なのでは?」 「あの問題(

    アルゴリズム設計に欠かせない問題解決のための「還元」 with Clojure - Qiita
    sh19910711
    sh19910711 2024/06/19
    "問題を別の問題に置き換えて考えることを言語化した、計算理論の世界の「還元」という概念 / 「この問題(A)って要はあの問題(B)なのでは?」「あの問題(B)さえ解ければ、この問題(A)が解ける」みたいな" 2021
  • しゃくとり法を Rust のイテレーターで扱うライブラリを作ってみた - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 競技プログラミングで、しゃくとり法 (Two-pointer) を使いたくなることがあります。 その場で短く実装しようとすると、いろいろな操作を 1つのループ中に書きがちです。うっかりバグらせてしまうことも多いです。 そこで、先人の実装を参考に、Rust で動くしゃくとり法ライブラリを作ってみました。 Haskellでしゃくとり法を攻略する 尺取り法の最強ライブラリを作った。 - isyumi_netブログ このライブラリが実用的かどうかは分かりません。「しゃくとり法を部品に分けて考える」ことの練習になるはずです。そんな紹介記

    しゃくとり法を Rust のイテレーターで扱うライブラリを作ってみた - Qiita
    sh19910711
    sh19910711 2024/06/14
    "Two-pointer: 短く実装しようとすると、いろいろな操作を 1つのループ中に書きがちです。うっかりバグらせてしまう / 変数が何を指すかが参考実装によって異なりがち + 問題にあわせて実装を更新する際に混乱しやすい"
  • CNNによる画像分類:背景の影響を低減させる正則化 - Qiita

    はじめに CNNを用いた画像分類モデルを構築するときに、認識したい物体をちゃんと認識したモデルを作るのは結構難しかったりします。特に学習に用いるデータが少なくて偏りがあると以下の例のように画像の背景に基づいた分類モデルになってしまうこともあり得ます。 画像引用:https://arxiv.org/abs/1602.04938 この記事では画像の背景の影響を少しでも減らして認識したい物体を認識したモデルを作るための手法として、Orthogonal Sphere Regularizationという正則化があったので試してみます。 今回の記事で参考にした論文はこちら↓ 使用したコードは以下のGitHubリポジトリに置いてあります。PyTorchCNNを構築し、学習はGoogle ColaboratoryのGPUを用いて行なっています。 Orthogonal Sphere Regularizat

    CNNによる画像分類:背景の影響を低減させる正則化 - Qiita
    sh19910711
    sh19910711 2024/06/14
    "CNN: 学習に用いるデータが少なくて偏りがあると以下の例のように画像の背景に基づいた分類モデルになってしまう / OS Regularization: 背景の空の部分の重要度が減少したことが良い効果をもたらした感じ / ord=fro" 2022
  • 競プロにおける「実験コード」の書き方

    競技プログラミングにおける「実験コード」の書き方について、自分なりにどのような点に気を遣って書いているかをまとめたスライドです。 (このスライドは「競プロ道場鯖」にて 2022/04/30 に行われたLTで使用されたものです。) 配布資料はこちら : https://drive.google.com/file/d/1Po6310ABSxUVf1csmIJWNztnmqhEo677/view?usp=sharing

    競プロにおける「実験コード」の書き方
    sh19910711
    sh19910711 2024/06/07
    "実験コード: 小さな問題を実験的に解いて観察する + 計算量が悪くても良い / 問題から順向きに解法を導くのが理詰めだとすると、答え(結果)から逆向きに解法を導くのが実験 / 解を眺めるとパターンが見えてくる" 2022
  • Poincaré Embeddings でJ1リーグのチーム・選手を可視化 - u++の備忘録

    ふと「Poincaré Embeddings」*1で遊んでみたいと思い立ち、サッカーJ1リーグのデータで試してみました。 Poincaré Embeddings gensimでの実装とデータセット Poincaré Embeddingsの学習 活用方法 おわりに Poincaré Embeddings Poincaré Embeddingsに関する説明は、ABEJA*2やscouty*3のブログに譲ります。 Poincaré Embeddings は端的に言うと word2vec の埋め込み先をユークリッド空間ではなく双曲空間にするという手法で、階層構造やべき分布をもつデータを埋め込むという問題設定において、低次元でもよい表現を与えられるという特徴があります。 Poincaré Embeddings による職種の類似度計算とその利用 - LAPRAS AI LAB gensimでの実装とデ

    Poincaré Embeddings でJ1リーグのチーム・選手を可視化 - u++の備忘録
    sh19910711
    sh19910711 2024/05/11
    "gensimの実装では正則化の影響で周囲にノードが集結しすぎないような工夫 / チーム名が中心 + 円周側に選手 / 「浦和レッズ」の近くに「サンフレッチェ広島」が配置 + 移籍した選手の影響ではないか" 2019
  • ランダムフォレストをスクラッチで実装したい - Qiita

    非Deepな機械学習手法としてランダムフォレスト (Random Forest) を選択する場面は多々ありますが、基的にライブラリ任せになってあまり中身を意識することがありません。ので、今回はランダムフォレストの内部的な仕組みを確認しつつ、それを踏まえてPythonでスクラッチ実装していこうと思います。 ランダムフォレストについて ランダムフォレストの仕組みに関する分かりやすい記事は探せばいくらでもあるので、ここでは以降が読みやすくなるよう実装の視点から少し解説をつけておきます。 ランダムフォレストはたくさんの決定木から構成され、決定木はノードから構成されます。イメージとしては以下のようになります。 なので、実装の手順としては、 ノード : Node 決定木 : DecisionTree ランダムフォレスト : RandomForest の3つのクラスを実装していきます。 1. ノード

    ランダムフォレストをスクラッチで実装したい - Qiita
    sh19910711
    sh19910711 2024/05/09
    "sklearn.tree は使わない縛り / RandomForest: 入力されたデータからランダム抽出したサブセットを各決定木への入力とすることで多様な木を構築 + 抽出の際、使用する特徴量についても選択" 2020
  • 論文での疑似コードの書き方 - 大人になってからの再学習

    以前のエントリで、TeXを使って疑似コードを記述する方法を紹介した。 ■TeXでのアルゴリズム(擬似コードの記述) algorithms パッケージ http://d.hatena.ne.jp/Zellij/20110421/p1 一般に疑似コードは「特定のプログラミング言語の知識を持たない人でも理解できるように、自然言語に近い形で記述する」ということになっているが、いざ論文を作成する時になると、具体的なアルゴリズムをどのような疑似コードで表現すべきか悩ましいことが多い。 そこで、疑似コードの書き方のガイドラインが参考になる。 ■ PSEUDOCODE STANDARD http://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html ■ Pseudo Code Guide http://ironbark.bendigo.latrobe.edu.

    論文での疑似コードの書き方 - 大人になってからの再学習
    sh19910711
    sh19910711 2024/05/02
    "論文を作成する時になると、具体的なアルゴリズムをどのような疑似コードで表現すべきか悩ましい / 疑似コードの書き方のガイドラインが参考 / LaTeXを使うのだから、Algorithms パッケージの解説を参考にするのもよい" 2011
  • [R] トピックモデル(LDA)を用いた大量文書の教師なし分類 - Qiita

    #はじめに テキストマイニングの手法、トピックモデルを用いて文書の自動分類に挑戦します。 理論的な部分はこちらの。 先人の拵えた偉大なパッケージ群を活用させてもらい、Rでの実装部分を中心に書いてみたいと思います。 自分の振り返りためにも、困ったポイント、未解決ポイント含めて書いてるので、かなり回りくどいかもしれませんがご了承ください。 #トピックモデルとは テキストマイニングではネット上のブログやニュースなど、多量の文書を取り扱うことが多いですが、トピックモデルを用いることによって、そういった文書を教師なし学習で分類することができます。 ざっくりとしたイメージですが、「文書中に出現する単語の出現確率を推定するモデル」ということ。スポーツなら「サッカー」「野球」「バレーボール」のような単語が出現しやすく、料理なら「レシピ」「献立」「まな板」みたいな単語がきっと多く出てくるのはイメージがわき

    [R] トピックモデル(LDA)を用いた大量文書の教師なし分類 - Qiita
    sh19910711
    sh19910711 2024/04/12
    "tmパッケージ: VCorpus(DirSource(dir="xxx")))で読み込むことで、全txtデータをコーパスとして取り込むことができます / DTM: tidytext::cast_dtm()関数で、頻度表から文書単語行列(Document Term Matrix)に変換" 2019
  • (Part 1) tensorflow2でhuggingfaceのtransformersを使ってBERTを文書分類モデルに転移学習する - メモ帳

    現在、NLPの分野でも転移学習やfine-tuningで高い精度がでる時代になっています。 おそらく最も名高いであろうBERTをはじめとして、競ってモデルが開発されています。 BERTは公式のtensorflow実装は公開されてありますが、画像分野の転移学習モデルに比べると不便さが際立ちます。 BERTに限らず、公式のtensorflow実装は難解で、tf.kerasの学習済みモデルに関してもほとんど画像のモデルしかないです。 ただし、pytorch用のライブラリにpytorch-transformersという有用なものがありまして、 BERT, GPT-2, RoBERTa, DistilBert, XLNetなどの多言語学習済みモデルが利用可能で、カスタマイズもしやすいということで有名でした。 このライブラリが名前をかえてtensorflow2に対応してくれました。 Transform

    (Part 1) tensorflow2でhuggingfaceのtransformersを使ってBERTを文書分類モデルに転移学習する - メモ帳
    sh19910711
    sh19910711 2024/04/11
    "公式のtensorflow実装: 難解 + tf.kerasの学習済みモデルに関してもほとんど画像のモデルしかない / pytorch-transformers: 名前をかえてtensorflow2に対応 + BERT, GPT-2, RoBERTa, DistilBert, XLNetなどの多言語学習済みモデルが利用可能" 2019