selecao3のブログ

技術系の備忘録

DeepLearningモデルメモ

何これ

自作DeepLearningエンジンを作成しているわけだが、ちょっとわけわかんなくなったのでメモ

モデルの各概要

skip-gram

ターゲットとなる一つの単語から両隣の単語をそれぞれ推測する。
候補の単語が比較的多いので難しい(訓練次第では性能のいいものが作れる)

Word2Vec

両隣の単語からターゲットとなる一つの単語をそれぞれ推測する。
候補の単語が比較的少ないので簡単(しかし、そんなに性能はよくない)

上記2つは単語の並びを含めて推論することができないという問題点を抱えている。
具体的に言えば、(you,say)と(say,you)は同じものと捉える。
この問題点を解決するにはモデルに単語の並びを記憶させることが必要。
その問題点を解決するのが以下のモデル

RNN

ざっくり言うと、何度もループさせることで記憶を保持するモデル。
しかし、大規模なデータを保持することができない。構造上、逆伝搬の際に勾配が消失するか爆発し、記憶が保持できないからである。

LSTM

RNNの強化版。RNNゲートを追加したことで大規模なデータを記憶することができるようになったモデル。

その他メモ

MatMulレイヤ

小規模のデータならMatMulレイヤ(積レイヤ)を使えばいいが大規模のデータになると現実的ではなくなる(極端な話100万の行列×100万の行列をするから)
その代わりにEmbeddingレイヤなどを使って効率よく演算することになる