FreeStyleWiki

Seq2seqを理解するまでの事前知識

[機械学習]

Seq2seqを理解する

Sequence-to-SequenceモデルはSequence to Sequence Learning with Neural Networksの論文で提案され、「Seq2Seqモデル」「Encoder-Decoderモデル」「系列変換モデル」といった名前で呼ばれています。

  Encoder-Decoder Model

Encoder-decoderモデルは,ソース系列をEncoderと呼ばれるLSTMを用いて固定長のベクトルに変換(Encode)し,Decoderと呼ばれる別のLSTMを用いてターゲット系列に近くなるように系列を生成するモデルです

??何がなにやら

ソース系列, ターゲット系列
これは文脈的に入力データ、出力データのこと
LSTM(長・短期記憶)
回帰型ニューラルネットワーク(RNN)のアーキテクチャの1つ
回帰型ニューラルネットワーク(RNN)
① ノード間の結合が配列に沿った有向グラフを形成する人工ニューラルネットワークのクラス。 ② RNNは任意のひと続きの入力を処理するために内部状態(記憶)を使うことができる。 ③ RNNは2種類のネットワークのクラスを指す, 有限インパルス応答, 無限インパルス応答

ニューラルネットワーク (Neural Network)

左から順にノードがいっぱい

  • 入力層 (Input)
  • 隠れ層 (Hidden Layer)
  • 出力層 (Output)
    • これらのノードはただの行列で、階層の数だけ特徴値θを求めて入力値に対する適切な出力を求めるものだった

回帰型ニューラルネットワーク(RNN)

これまでのニューラルネットワークをNN,回帰型ニューラルネットワークをRNNと呼ぶことにする

  • NNとRNNの比較
    • 左がRNNで右がNN、ノードの計算時に自分自身を参照しているのがわかる(繰り返し処理)
    • 繰り返し処理部分は複数のニューラルネットワークに展開される

上記を参考にしてイメージ図を書いてみた

  • ニューラルネットワークの図は左にINPUTのデータが書いてあることが多いが、RNNは下にINPUTが書いてある
  • 畳み込みニューラルネットワークが二次元や三次元の関係性を失わずに学習するための仕組みである一方で、RNNはひと続きの入力を処理するためのニューラルネットワークの構造と言えそう

LSTM(長・短期記憶)

RNNの説明でひと続きの入力を処理するためのニューラルネットワークの構造と計算がなんとなくわかった → 次にLSTMとは?

  • LSTMは何ができるのか?

文章生成ならば、「今までの単語列を入力として、もっともらしい次の単語を予測する」ことをLSTMが担います。正しい文章を繰り返しLSTMに覚えさせる(重みベクトルを更新する)ことで、このLSTMは"this"の後に"is"が来るようなルールを「事実上」学習します。

  • LSTMはRNNと何が違うのか?

LSTMはRNNの中間層のユニットをLSTM blockと呼ばれるメモリと3つのゲートを持つブロックに置き換えることで実現

  • LSTM blockはどんなもので、何の役に立ったのか?
    • どんなものか?
      • 解説を見る限り、RNN内部に配置される論理的な回路
      • 以下のような機構が研究が進むにつれ追加されていった
世代 追加されたもの 効果
第一世代LSTM(95,97年) CEC,入力ゲート,出力ゲート 勾配消失問題の解決、前のユニットの入力/出力を受け取るか否かを判断可能に
Forget Gateの導入(99年) 忘却ゲート 記憶が不必要になった時点で素早くセルを初期化可能に
Peephole Connectionの導入(00年) 覗き穴ゲート LSTM blockの内部をデバッグ可能に

  まとめ

用語を整理しよう

-> Seq2Seqとは
  - 「Encoder-Decoder Model」とも呼ばれる
  - 機械学習のモデルの一種
  - LSTM という機構で入力をDecode, 出力をEncodeする
    -> LSTMとは
      - 回帰型ニューラルネットワーク(RNN)の発展型
      - 学習の際に傾き/勾配がなくなる問題を解消
      - ニューラルネットワークのノードの中で記憶ができる
        -> 回帰型ニューラルネットワーク(RNN)とは
          - ニューラルネットワークの一種
          - ノードの計算時に前後のノードの値を参照する
          - 連続するデータ(前後のデータの関連に意味をもつ)の処理に強い