タグ

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

  • 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

    はじめに 競技プログラミングで、しゃくとり法 (Two-pointer) を使いたくなることがあります。 その場で短く実装しようとすると、いろいろな操作を 1つのループ中に書きがちです。うっかりバグらせてしまうことも多いです。 そこで、先人の実装を参考に、Rust で動くしゃくとり法ライブラリを作ってみました。 Haskellでしゃくとり法を攻略する 尺取り法の最強ライブラリを作った。 - isyumi_netブログ このライブラリが実用的かどうかは分かりません。「しゃくとり法を部品に分けて考える」ことの練習になるはずです。そんな紹介記事です。 2024年エイプリルフールのネタ記事でもあります。 記事で行うこと しゃくとり法の簡単な紹介と、複数の関数に分ける考え方を示します Rust のイテレーターで扱うライブラリを 3通り実装します 「A. 有効な区間のみ返す」Iterator トレイ

    しゃくとり法を 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
  • 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
  • tensorflow2を用いたCNNの実装方法 - 八谷大岳の覚え書きブログ

    最近ようやくtensorflow2に移行しはじめたが、kerasの流れがあるからなのか実装方法が沢山あって、なんだかややこしい。 以下のサイトに詳しくまとまっているように、Sequential API、Functional APIおよびSubclassing APIの3つの実装方法がある。 qiita.com 以下は、tensorflow2.1を用いている。 Sequential API Functional API Subclassing API Sequential API 初心者向けで、ネットワークの定義から、学習方法の設定、学習および評価まで一貫してtf.keras.models.Sequentialのインスタンスを用いて行う。具体的には、以下のようにSequentialのインスタンスであるmodelにaddメソッドを用いてレイヤーのインスタンスをしていく。そして、compileメ

    tensorflow2を用いたCNNの実装方法 - 八谷大岳の覚え書きブログ
    sh19910711
    sh19910711 2024/04/10
    "tensorflow2に移行しはじめたが、kerasの流れがあるからなのか実装方法が沢山あって、なんだかややこしい / Subclassing API: SequentialとFunctionの利点であった一貫性の高い実装方法を完全に捨てたような実装" 2020
  • Neural Tangentsによる無限幅深層ニューラルネットワークの構築とベイズ推論

    要点¶Neural TangentsはGoogle AIが開発したJAXのラッパーライブラリです。無限幅 (中間層のユニット数$\to \infty$)のニューラルネットワーク (以後, NN: neural networks)を高速かつ簡単に構築及び学習させることを目的としています。 Neural Tangentsでは無限幅のNNを学習させる手法としてNNGP (Neural Network Gaussian Process)と NTK (Neural Tangent Kernel)の2つを実装しています。 この記事ではNNGPとNTKの要点を紹介し、Neural Tangentsを用いた実装について紹介していきます。 Neural-Tangentsに関連する文献¶ Paper : https://arxiv.org/abs/1912.02803 OpenReview : https:/

    sh19910711
    sh19910711 2024/04/07
    "Neural Tangents: JAXのラッパーライブラリ + NNGPとNTKの2つを実装 / 隠れ層が1層で無限幅 (各層のユニット数 →∞→∞)のニューラルネットワークがガウス過程と等価であることについては (Neal, 1994)で示され" arXiv:1912.02803 2020
  • じゃんけんグリコでDQN(deep Q-network)に挑む - Qiita

    じゃんけんグリコでDQN(deep Q-network)に挑む たかが、じゃんけん。されど、じゃんけん。東大入試に出題されたこともあれば、某スタンド系少年マンガでは空飛ぶ熱い勝負が繰り広げられました。 ここまで言ってのけた某ファイヤーシスターズの実戦担当もいました。 ジャンケン強ければ人生どんだけ得かって話だよ。ロシアンルーレットやってさあ?どっちが先に引き金を引くかで揉めた時、もしもジャンケン必勝法を知っていたら! 記事では、じゃんけんから派生した遊び、じゃんけんグリコ(以下グリコ)という遊びで、DQNに勝負を挑んでみたいと思います。 グリコとは 以下、Wikipediaよりの引用です。 概要 主に屋外の階段で行われる、じゃんけんから派生した遊びのひとつ。日の子供の遊びとして広く知られている。 ルール 環境 階段 ある程度の段数を有する階段が必要となる。階段の最上と最下で最低限の意思

    じゃんけんグリコでDQN(deep Q-network)に挑む - Qiita
    sh19910711
    sh19910711 2024/04/06
    "Keras-RL: Kerasと同レベルに抽象化 + シンプルに書けます / もし相手がランダムに手を出し続けるなら、自分はチョキを出し続けることで、期待値を最大化できる / 数学的に導き出される性質を機械学習が再発見" 2018
  • 確率的DeepLearningライブラリEdwardのサンプルコードとその理論 - Qiita

    from __future__ import absolute_import from __future__ import division from __future__ import print_function import edward as ed import numpy as np import tensorflow as tf import matplotlib.pyplot as plt from edward.models import Normal def build_toy_dataset(N=100, noise_std=0.05): D = 1 X = np.linspace(-np.pi, np.pi, num=N) y = np.cos(X) + np.random.normal(0, noise_std, size=N) X = X / np.pi X =

    確率的DeepLearningライブラリEdwardのサンプルコードとその理論 - Qiita
    sh19910711
    sh19910711 2024/04/04
    "Edward: DeepLearningを確率的に扱えるモジュール + 学習するのはネットワークの重みではなく、重みを生成する分布のパラメータ / 分散がわかるということは推論に対する信頼度を測ることができる" 2017
  • 今更ながらchainerでSeq2Seq(2)〜Attention Model編〜 - Qiita

    少し複雑になりますが、図中の[At]と書いてあるところがAttention Modelとなります。 Encoder側では、毎回出力される中間ベクトルをAttention Modelの中に記憶させていきます。 Decoder側では、1つ前の中間ベクトルをAttention Modelに入力します。 入力されたベクトルを元にAttention ModelがEncoder側で入力された中間ベクトルの加重平均をとってリターンします。 Encoderの中間ベクトルの加重平均をDecoderに入力することで、前にある単語、後ろにある単語、どこでも注目できるようにするのがAttention Modelとなります。 Attention Modelには大きく分けて2種類存在し、Global AttentionとLocal Attentionと呼ばれます。 以降では、Global Attention、Loca

    今更ながらchainerでSeq2Seq(2)〜Attention Model編〜 - Qiita
    sh19910711
    sh19910711 2024/04/04
    "RNN系: 初期に入力したデータは最終的に出力される特徴ベクトルに反映されにくく / Attention Model: Encoderの中間ベクトルの加重平均をDecoderに入力 + 大きく分けて2種類存在し、Global AttentionとLocal Attention" arXiv:1508.04025 2017
  • spaCyを用いて日本語の固有表現抽出(NER)モデルを学習する - Sansan Tech Blog

    はじめに 最近、固有表現抽出(Named Entity Recognition: NER)の学習をspaCyを用いて行う機会があったため、そのやり方について簡単にまとめたいと思います。 Ref spacy.io Version python: 3.11.3 spaCy: 3.6.0 使用したNotebook github.com 全体の流れ 学習データの用意 spaCyのconfigファイルの用意 学習 評価 推論 学習データの用意 今回は、ストックマーク株式会社が公開しているWikipediaを用いた日語の固有表現抽出データセットを利用します。 まずはデータセットを読み込みます。 with open("../ner-wikipedia-dataset/ner.json") as f: stockmark_data = json.load(f) 次にデータセットを、train, dev,

    spaCyを用いて日本語の固有表現抽出(NER)モデルを学習する - Sansan Tech Blog
    sh19910711
    sh19910711 2024/04/04
    "spaCy: configファイルに全ての設定を記載し、spacy trainコマンドにて学習 / 基本的な設定を行ったconfigファイルを、spaCyのサイトから取得 / 出力されたモデルはmodel-lastとmodel-bestがあり / spacy.displacy.render(..., jupyter=True)" 2023
  • Tensorflow Eager vs PyTorch (強化学習編) - Qiita

    Introduction 強化学習におけるTensorflowの実装たるや、その多くは可読性が低いです。それに比べて、PyTorchやchainerといったDefine-by-Run型のフレームワークの実装は読みやすく作りやすい。しかし、その時代もEager Modeの出現により終わりました。 稿では、Eager Modeの実践的な記述方法と、強化学習における有用性を示すことを目指します。 主な内容として PyTorchからTensorflow Eagerへの1対1の移植方法 Eager Modeにおけるsummary Eager Modeにおける学習結果のsave&load PyTorchよりEagerを高速に動作させる を含みます。 今回、題材として用いるのは、ICML2018に採択されたFujimotoらの「Addressing Function Approximation Err

    Tensorflow Eager vs PyTorch (強化学習編) - Qiita
    sh19910711
    sh19910711 2024/03/28
    "強化学習におけるTensorflowの実装たるや、その多くは可読性が低い / しかし、その時代もEager Modeの出現により終わりました / Eager Modeを用いることで、すべてのTensorflow部分がPython上で動作する" 2018
  • 名詞・形容詞ペアの抽出によるレビュー分析 - Qiita

    概要 冒頭の例のように、レビューテキストから名詞と形容詞のペアを抽出 してみます。 これを複数のレビューで集計することで、レビュー文を1つずつ読まずとも、傾向としてどんな部分がどういった評価を受けているのか が見えてきそうですよね。 (例えば、ラーメン店であれば、スープ、麺、値段それぞれがどんな評価が多いのか、とか) 基的には、以下のような流れで実装しています。 GiNZAで形態素解析+係り受け解析 名詞・形容詞のペアを抽出 特定の係り受け関係であれば採用 やや苦慮した部分は、以下の2点です。 複数の形態素からなる形容詞 の扱い(例:高価な=高価+な) GiNZAの係り受け解析結果(UD: Universal Dependency) の扱い 両者とも、私の知識が十分でなく、今回の扱いが適切でない可能性も多分にあります。その点はご了承ください(お気づきの点はコメントいただけるととても嬉しい

    名詞・形容詞ペアの抽出によるレビュー分析 - Qiita
    sh19910711
    sh19910711 2024/03/26
    "Universal Dependencies: 多言語で一貫した構文構造とタグセットを定義 + 従来は言語毎で異なる構文表現を用いていたが、それを統一的に扱っていこうという取り組み / 「静かな」は形態素解析の結果「静か」「な」に分解" 2023
  • Neural Factorization Machines for Sparse Predictive Analytics (SIGIR 2017) 読んだ & Chainer で実装した - 糞糞糞ネット弁慶

    [1708.05027] Neural Factorization Machines for Sparse Predictive Analytics みんなが好きな Factorization Machines (FM) とニューラルネットワークを組み合わせて Neural Factorization Machines (NFM) を提案する. FM とその派生手法がいくら変数間の交互作用を表現するモデルであったとしても,しかしそれは線形モデルのままであり,表現力に乏しい,というのがモチベーション. FM FM は という形で予測を行う.三項目で各特徴量をで低次元表現しつつその積で交互作用を扱う,というのが FM の特徴. NFM NFM では として, をニューラルネットワークにすることで交互作用を考慮しつつ非線形性を表現する. ネットワークは Embedding Layer Bi-In

    Neural Factorization Machines for Sparse Predictive Analytics (SIGIR 2017) 読んだ & Chainer で実装した - 糞糞糞ネット弁慶
    sh19910711
    sh19910711 2024/03/20
    "FM や NFM が扱うのはたいていスパースなので,値がある次元をそれぞれ低次元に Embedding / 値を埋め込んだベクトルに掛ける + 陽に交互作用を考える / 「埋め込みを行いつつ元の値を掛ける」という操作" 2018
  • 簡単な迷路問題を例に強化学習を実装 〜テーブルのQ学習とDQN〜 - Qiita

    S: スタート G: ゴール W: 壁 このような複数経路ある迷路を、スタートからゴールまで最短で到達することを目指します。 ちなみにこの迷路は迷路自動作成ツールを使って作りました。 エージェントはマップ全体を見ることができず、上、下、左、右の4つのどれかの行動をした結果、移動できれば移動し、移動できなければ(壁なら)その場に留まります。 暗闇で移動しているイメージです。 移動した結果、ゴールならゴールであると認識できます。 テーブルのQ学習 実装部分 呼び出し側 Qテーブル テーブルのQ学習では、「状態$s$ $\times$ 行動$a$」の価値を表すテーブル$Q(s, a)$を持ち、これを更新していくことで学習を進めます。 迷路の例では、状態$s$は位置情報、行動$a$は上下左右の4つです。 学習(更新式) 状態$s$で行動$a$を選択して、状態$s'$になったときに、価値テーブル$Q

    簡単な迷路問題を例に強化学習を実装 〜テーブルのQ学習とDQN〜 - Qiita
    sh19910711
    sh19910711 2024/03/12
    "古典的なテーブルのQ学習とそれをニューラルネットで表したDQNの実装 / Deep Q Network(DQN): 行動した履歴を蓄えておく + 学習に使うデータは蓄えられたメモリからランダムにサンプリング / 一定確率でランダムな行動" 2021