制御可能な文章生成RAG - RAG学習スクリプト

はじめに 前回 まで単純なデータセットに対してRAG1の学習を行ってきたが、 RAGのモデルを学習するまでの一連の処理をまとめてgithubで公開した。 https://github.com/NeverendingNotification/rag-japanese.git RAG学習一連の処理 RAGの学習を行うためには…

制御可能な文章生成RAG - RAG学習

はじめに 前回 RAG1を学習する前段階としてDPR2の学習を行った。 今回は学習済みのDPRを利用してRAGの学習を行った。 RAGの構成要素 RAGは入力文に対して、関連する知識文章を検索してから、 それに対応する出力文を返すseq2seqモデルである。 RAGは以下の3…

制御可能な文章生成RAG - DPR

はじめに 前回まではRAGについて調査し、 学習に必要なデータを準備した。 今回はRAG学習に必要なDPRの学習を行う。 DPR Dense Passage Retrieval1 (DPR)はある質問に回答するために必要な知識文(passage)を 文章群から推定するためのモデルである。 質問文…

制御可能な文章生成RAG - 学習用データ作成

はじめに 前回調査したRAGを学習するための単純なデータセットを作成した。 RAGのためのデータセット RAGは入力文章に対して、知識を用いて出力文章を生成するモデルである。 RAGは内部的にはDPRとBARTという2つのモデルからなり、DPRは知識の retrieve(検索…

制御可能な文章生成RAG - 技術概要

はじめに 蓄えられた知識を元に文章生成を行うTransformerモデル Retrieval-augmented generation (RAG)の技術について調査した。 Deep Learning による文章生成 T5, GPT-3などのDeep Learningを用いたモデル1は一見すると 人間に近い性能の文章を生成できる…

XAIについての検証 - 手法比較

はじめに 前回までいくつかのXAI手法の検証を行ってきた。 今回はそれらの手法を比較するコードを実装し、githubに公開した。 https://github.com/NeverendingNotification/pytorch-xai-analyze このコードを用いていくつかの状況で各XAIアルゴリズムの挙動…

XAIについての検証 - Grad-CAM

はじめに 前回、前々回に引き続きfashion-mnistデータについてXAIの検証を行う。 今回はGrad-CAMについて検証した。 Grad-CAM Grad-CAMはXAIアルゴリズムのひとつであり、 特定のクラス予測に対する特徴量マップの勾配から計算した重みで 特徴量マップの重み…

XAIについての検証 - SHAP

はじめに 前回に引き続きfashion-mnistデータに対するXAIの検証を行う。 今回はSHAPアルゴリズムについて検証する。 SHAP SHAP1はXAIアルゴリズムの一つである。 各特徴量が加減算的に予測に寄与するとする ある特徴を使う場合と使わない場合の差から寄与度(…

XAIについての検証 - Anchors

はじめに 画像系Deep LearingにおけるXAI (Explainable AI)のひとつAnchorsを用いて Fahion-mnistデータに対して学習を行ったモデルの解析を行った。 XAI Deep Learning モデルはその性能の高さから様々な分野で利用されているが、 処理の多くがNeural Netwo…

OpenCVjsとtensorflow.jsによるモデル検証アプリ

はじめに OpenCVjsは画像処理ライブラリであるOpenCVのjavascript版。 tensorflow.jsはtensorflowのjavascript版である。 これらを組み合わせて、webブラウザ上で簡単な画像修正と モデル推論を行うプログラムをgithubに公開した。 https://github.com/Never…

PFRLを試してみる - self play

はじめに 前回 、 PFRLを用いてslime volleyballを学習した。 今回は同じ slime volleyballl環境に対して, 複数のagent を用いたself playを試してみる。 self play 対戦型ゲームにおける強化学習は対戦相手となるエージェントに依存する。 前回の学習では、…

PFRLを試してみる - slime volleyball

はじめに 前回はPFRLでatari SpaceInvadorの学習を行ったが、 計算時間が足りず、うまく学習できなかった。 今回はもう少し簡単な、Slime Volleyball1に対して学習を行う。 slime volleyball slime volleyballは2人のプレイヤーがボールを相手のコートに 落…

PFRLを試してみる - atari

はじめに [前回] までPFRLの簡単な使い方を学び、 openai-gymの pendulum問題の検証を行った。 今回はatari環境においての検証を行う。 検証 PFRLのexampleを参考にした。 https://github.com/pfnet/pfrl/blob/master/examples/atari/reproduction/rainbow/t…

PFRLを試してみる - アルゴリズム比較

はじめに 前回、 PFRLのSAC1でPendulum問題について強化学習を行った。 今回は別のアルゴリズムでも学習を行い比較を行う。 前回の訂正 前回 policyネットワークの出力をtorch.distributions.Normalにすると そのままではSACが動かず修正が必要だとしていた…

PFRLを試してみる

はじめに 最近Preferred Networksが公開したpytorchによる強化学習ライブラリ PFRLの内容を確かめて、openai-gymに実装されている Pendulum問題を学習させてみた。 PFRL PFRLはchainerによる強化学習ライブラリchainerrl1の後継ライブラリである。 強化学習…

stylegan2による猫画像生成 - 2

はじめに 前回 stylegan21 により Oxford-IIIT2の猫画像を学習した。 今回は前処理を少し変更して再学習した。 設定や用語等は前回参照。 前処理の変更 前回はannotation情報を利用して、猫が写っている部分以外は 白塗りになるように学習したが、輪郭部分が…

stylegan2による猫画像生成

はじめに GANの一種であるstylegan21を使い、 Oxford-IIIT2の猫画像を学習して、結果を解析した。 stylegan2 Generative Adversarial Network (GAN)3は2つのネットワークが 競い合うように学習することでリアルな画像生成を行うアルゴリズムである。 オリジ…

Gradient Accumulation と Normalization

はじめに batch sizeは学習の安定性やモデル性能に大きな影響を与えるパラメータである。 大きなbatch sizeは学習を安定化するが、GPUのメモリを使い果たしてしまう。 GPT31などの近年の大規模モデルは複数のGPUに分散して非常に大きな batch sizeをとってお…

3D Deep Learning について学ぶ - pytorch3d

はじめに 3D オブジェクトを扱うDeep Learning技術について知りたいと 思ったので、pytorch3d1のチュートリアルを行った。 概要 1次元的なデータを取り扱う自然言語処理や音声信号処理、 2次元的なデータを取り扱う画像処理だけでなく、 3Dオブジェクトを取…

JVSデータによるWaevGlowの再学習

はじめに 前回までJVSコーパス1、JSUTコーパス2を用いて、 Flowtron3を学習してきた。 今回はメルスペクトルグラムから 音声を復元するWaveGlow4部分の再学習を行った。 現状の課題 これまで検討してきたTTS (Text To Speech)システムは、 Flowtroonによるメ…

Flowtron でJVS+JSUTデータを学習

はじめに 前回 Flowtorn1というText To Speechアルゴリズムにより 日本語音声コーパスであるJVSコーパス2の学習を行った。 今回は同じく日本語の音声コーパスである、JSUTコーパス3を追加して 学習を行い性能変化を検証した。 前回の問題点 前回 ある程度Flo…

FlowtronでJVSデータを学習

はじめに FlowtronはFlow-baseのText to Speech (TTS)アルゴリズムである1。 今回は日本語の複数話者コーパスであるJVSコーパス2によってこの Flowtronを学習してみた。 Flowtron TTSは文章を入力として、音声を合成するタスクである。 Tacotron23などが有名…

Anchor-FreeなObject Detection アルゴリズム

はじめに 今回はAnchor-FreeなObject Detectionアルゴリズムについて ソースコードを読みながら理解する。 Anchor-Free なObject Detection SSDなどのObject Detectionアルゴリズムは画像にAnchor-Boxと呼ばれる 矩形領域を敷き詰めて、それぞれのAnchor-Box…

学習済みFlowtronを試してみる

はじめに 前回、 Flowtron (Valle et al. 2020)の内容を理解しようとしたが、 今回は公開されている学習済みFlowtronを動かしてみる。 学習済みモデル Flowtronの学習済みモデルFlowtron LibriTTS を用いた。 複数スピーカーによる音声データセットであるLib…

Flowtronを理解する

はじめに 文章から音声データを生成するタスク Text to Speech (TTS)におけるDeep Learning手法として Tacotron2 (Shen et al. 2017)が有名である。そのTacotron2を拡張して生成する音声データを ある程度調整可能にしたFlowtron (Valle et al. 2020)が最近…

日本語CTRLのFine-tuning

はじめに 前回学習した日本語CTRLをFine-tuningにより制御コードを 追加した結果をまとめる。 追加データ 制御コード「生活」として健康アドバイスデータのライフログを利用した。(10000件) それに加え、制御コード「科学」として、手動で収集したWeb上の科…

Object Detectionアルゴリズム (2020/5)

はじめに Deep LearningによるObject Detectionのアルゴリズム論文をまとめる。 以下を参考にした。 https://engineer.dena.com/posts/2019.07/cv-papers-19-keypoint-object-detection https://www.slideshare.net/pfi/a-brief-history-of-object-detection…

日本語CTRL学習結果まとめ

はじめに これまで学習してきた日本語CTRLの最終モデルをまとめる。 学習曲線 学習は500Kステップ行った。 train loss の学習曲線(span=5000のewmaでスムージング済み) 学習曲線を見る限りはほぼ収束しているように見える。 推論結果 いくつか推論して見た結…

日本語CTRLを1から学習する - 15

はじめに 前処理を修正した学習の途中経過。 オリジナル文章生成 250000ステップの学習結果。 物理学には愛がある。 青空 物理学には愛がある。或る種の物理学はすなわち思慮の機である。空想は恋愛であるという一つの型である。例えば恋愛は内的自由とか内…

日本語CTRLを1から学習する - 14

はじめに 日本語CTRL学習2回目の結果をまとめる。 結論だけ述べると前処理を修正して再学習する必要がある オリジナル文章の生成 600000ステップの結果 物理学には愛がある。 青空 物理学には愛がある。之を見つけるまでには、必ずこの題材を考えなくてはな…