タグ

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

  • 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
  • PyTorch Tabular による表形式データの深層学習 - プログラムを自動生成したい

    sh19910711
    sh19910711 2024/03/10
    "PyTorch Tabular: PyTorch や PyTorch Lightning の上に実装 + 手軽に表形式データ(pandas のデータフレーム)に対する深層学習を実現することを狙い / TabNetの実装が提供されている" 2021
  • Seq2seqモデルのBeam Search Decoding (Pytorch) - The jonki

    この記事では,Pytorchで作ったseq2seq型の翻訳モデルを使って,ビームサーチによるデコーディングをします. OpenNMTやfairseqを使えば簡単に利用できるのですが,ビームサーチのためだけにこのようなフレームワークを使うのはちょっとなぁ,ということと,ビームサーチ自体はDNNに限らず様々な場面で役に立つ手法なので,この際ピュアに実装してみた,というのがこの記事です. ちなみに一般的なseq2seqのデコードは,各タイムステップで予測したtop-1の単語を,次ステップのデコーダーの入力に使います. ビームサーチでは,このようなgreedyな条件を緩め,上位K個の予測を使って,デコードしていきます.ビームサーチをよく知らんという方は,Andrew Ngの神説明が参考になると思います. C5W3L08 Attention Model, Andrew Ng. できたもの seq2s

    Seq2seqモデルのBeam Search Decoding (Pytorch) - The jonki
    sh19910711
    sh19910711 2024/03/09
    "ビームサーチをよく知らんという方は,Andrew Ngの神説明が参考になる (C5W3L08) / 上位K個の結果の取得は,pytorchであればtorch.topk関数で簡単に値とその引数を取得できる" 2020
  • Chainerでマルチタスクニューラルネットワークを実装した - 人間だったら考えて

    注:この記事の実装は非効率的かもしれません. この記事は何? マルチタスク学習をニューラルネットワークに適用した研究がいくつか報告されています. 適用例として,Georgeら(2014)の研究では,タンパク質に対する化合物の活性予測にニューラルネットワークを用いたマルチタスク学習を適用しています. また,Xiaodongら(2015)の研究では,自然言語処理のタスクとしてクエリ分類と情報検索の2つのタスクを同時に解くマルチタスク学習を提案しています. 私はDNNを実装する時はChainerを使っているのですが,Chainerでマルチタスク学習を実装した例が見当たらなかったため自分で実装してみました. ネットワーク構造 解くタスクは2つとします.2つのタスクに対応するネットワークが存在し,それぞれのネットワーク間で一部の層を共有するようなネットワーク構造を考えます(下図参照). 学習の進め方

    Chainerでマルチタスクニューラルネットワークを実装した - 人間だったら考えて
    sh19910711
    sh19910711 2024/03/08
    "Xiaodongら(2015)の研究: クエリ分類と情報検索の2つのタスクを同時に解くマルチタスク学習を提案 / 2つのタスクに対応するネットワークが存在し,それぞれのネットワーク間で一部の層を共有" doi:10.3115/v1/N15-1092 2017
  • 実務で使えるニューラルネットワークの最適化手法 - Taste of Tech Topics

    メリークリスマス。 @tereka114です。 記事はDeep Learning論文紹介 Advent Calendar 2019の25日です。 qiita.com 私はKaggleの画像コンペに頻繁に参加しています。 そのときに、毎度選定にこまるのがニューラルネットワークの最適化手法(Optimizer)です。 学習率やWeight Decayなどハイパーパラメータが多く、選択パタンが無数にあると感じています。 そのため、Kaggleでよく利用される(されうる)最適化手法を振り返ります。 もちろん、実務でも十分使えるので、皆さんの学習に活かしてくれると幸いです。 最適化手法 SGD(Momentun) Adam AdamW AdaBound RAdam 実験 Optimizer間の比較 RAdamとAdamの学習率 AdamWのWeight Decayの値 最後に 最適化手法 今回紹介

    実務で使えるニューラルネットワークの最適化手法 - Taste of Tech Topics
    sh19910711
    sh19910711 2024/03/06
    "Adam: SGDと比較して収束が安定しない / RAdam: Warmupと呼ばれる最初に小さい学習率で学習し、通常の学習率で学習させていく手法 + このWarmupを人手で行うのではなく、分散を考慮した学習率を推定" 2019
  • 「TensorFlowはじめました2」を読んだ - すぎゃーんメモ

    sh19910711
    sh19910711 2024/03/06
    "第3章: 「予想に反し上手くいかない」「原因を推察する」「改善し試してみる」という過程がとても丁寧に書かれていて、とても面白い / 第4章ではさらに踏み込んで質を向上させるための実験、評価について" 2017
  • PFRLでスーパーマリオ1-1をクリアするまで - Qiita

    以前はStableBaselinesを使っていましたが、ニューラルネットワークの構造をいじりにくいことやアルゴリズムに手を加えにくいと思っていました。ネットワークにAttentionを加えるだけでも一苦労でした。 そもそもTensorFlow向けであった点も使いづらかったので、PyTorch向けの深層強化学習ライブラリを探していたところPFRLというライブラリを見つけました。 Hello World代わりにスーパーマリオブラザーズ1-1をクリアしてみようと思います。 まずネットワークを定義します。 class Network(nn.Module): def __init__(self, hidden_dim, space_shape, n_actions): super(Network, self).__init__() h, w, c = space_shape self.hidden_

    PFRLでスーパーマリオ1-1をクリアするまで - Qiita
    sh19910711
    sh19910711 2024/03/05
    "StableBaselines: TensorFlow向け + ニューラルネットワークの構造をいじりにくい / PyTorch向けの深層強化学習ライブラリを探していたところPFRLというライブラリを見つけました" 2021
  • dlshogiのPyTorch Lightning対応 - TadaoYamaokaの開発日記

    dlshogiの学習は、PyTorchを使用して、モデルの訓練処理を独自に実装していた。 マルチGPUによる分散学習に対応させようと考えているが、独自に実装するより、PyTorch lightningに対応させた方が実装が楽になるため、dlshogiをPyTorch Lightningに対応させたいと考えている。 まずは、訓練の基部分の実装を行った。 PyTorch Lightning CLI ボイラープレートをできるだけ削除するため、PyTorch Lightning CLIを使用して実装する。 PyTorch Lightning CLIを使用すると、コマンド引数のパース処理など含めて自動で行ってくれる。 起動部分の処理は以下のように記述するだけでよい。 def main(): LightningCLI(Model, DataModule) if __name__ == "__main

    dlshogiのPyTorch Lightning対応 - TadaoYamaokaの開発日記
    sh19910711
    sh19910711 2024/03/04
    "PyTorch Lightning CLI: コマンド引数のパース処理など含めて自動で行ってくれる / データセットとデータローダをデータモジュールというクラスで管理 / データモジュールのコンストラクタの引数をconfigファイルに記述できる"
  • RでKerasを使う(短歌手習い編) - Qiita

    概要 『新しき 年の始めの うれしきは 古き人どち あへるなりけり』 以前に{tensorflow}のPythonライブラリをimportする関数を用いることで、gensimを活用できるという記事を書きました。 これにより、R/RStudio上ですべてを管理したい/されたいRおじさん(重度なRユーザーを指す。女性でも「おじさん」と呼称するので、淑女の方々はご配慮いただきたい)のできる幅が広がったと言えます。 今回はさらにTensorflowとTheanoのラッパーであるKerasというライブラリを用いてモデルを構築し、新年の挨拶によさそうな短歌の生成を試みました。具体的には「上の句を入力することで下の句を生成する」というタスクを設定しています。 なお、{tensorflow}自体の設定や使い方などは{tensorflow}でデータ分析のHello Worldであるirisデータの分類を行っ

    RでKerasを使う(短歌手習い編) - Qiita
    sh19910711
    sh19910711 2024/03/04
    "R上からKerasを用いたモデルを構築し、短歌のデータを適用して下の句を生成することに挑戦 / 上の句と下の句で対応づけるようにしているので、画像でよく採用されているCNNによるアプローチも使えるかも" 2017
  • PyTorch 2.0の新しいコンパイラで機械学習を速くする – Rest Term

    12/02にPyTorch 2.0のアナウンスがありました。まだnightly版(α版)で正式リリースされるのは2023年3月頃のようですが、機能自体は試すことができるので早速使ってみました。 12/05現在、絶賛検証中なので結論のようなものは書けませんが、全体の傾向としては概ね公称通りに高速化の効果が認められました。 精度が低下することはない 小さなモデルに対して、学習は速くならず、コンパイルオーバヘッドのためepochsが少ない場合は全体として遅くなる、GPU使用率はAMPだと僅かに低くなる傾向 大きなモデルに対して、学習は速くなり(約5 ~ 30%高速化)、デフォルト設定ではVRAM使用率は少し低くなる(5 ~ 10%弱程度) GPUだけでなくCPUも効率良く使えるケースだと特に高い効果が期待できる コンパイルオプションはいくつかあるけどデフォルトで使うのが一番良さそう あくまで後述

    PyTorch 2.0の新しいコンパイラで機械学習を速くする – Rest Term
    sh19910711
    sh19910711 2024/03/02
    "torch.compile: 公式ドキュメントはものすごく重厚長大で同じ事を何度も書いていましたが使い方はシンプル + GPUだけでなくCPUも効率良く使えるケースだと特に高い効果が期待できる" 2022
  • PyTorch を使って Transformer による翻訳モデルを実践する - 見習いデータサイエンティストの隠れ家

    DeepLGoogle 翻訳などの翻訳サービスは、既に人間以上の性能になっており、多くの人々が日常的に使用しています。このような翻訳サービスに使われている予測モデルは、BERT や GPT-3 によって近年精度が格段に上がりました。そして、これらのモデルのベースになっているのが、今回実践する Transformer です。 今回は、その Transformer を使って翻訳モデルを作ります。Transformer のアルゴリズムの詳細に関しては触れないので、気になる方は以下の記事をご覧ください。私も参考にさせていただきました。 qiita.com 今回のコードはこちらにあります。大部分は PyTorch の公式HPのトライアルを参考にしているので、原文が気になる方はこちらをご覧ください。 準備 必要なモジュールのインポートとディレクトリの設定 学習に使うデータの取得 データを学習用の

    PyTorch を使って Transformer による翻訳モデルを実践する - 見習いデータサイエンティストの隠れ家
    sh19910711
    sh19910711 2024/03/01
    "出力データも使って学習させるため、何も処理をしなければ答えを知った上で答えを導き出すというチート状態 / ◯文字目以降の出力データがモデルに入力されないようにマスクする" 2021