「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
コチラで説明した通り。
詳細 †
Encoder-Decoder †
- Encoder:
GRUを使用して、
- 文(x1, x2, ... ,xi)を意味ベクトルCへ変換。
- 意味ベクトルCは一番最後の再帰段階の隠れ状態(hj)
- P(yi)=P(yi|yi-1, Si^(d), C)
- RNNにはどの再帰の段階でも意味ベクトルCと隠れ状態(Si-1^(d))を入力する。
- 一番最初の再帰段階のRNNへの入力はBOSで、隠れ状態は、例外的に意味ベクトルCを指定する。
- RNNからの出力は単語の確率分布(p(yi))で、出力層(Affine変換+Softmax)では、
この確率分布(p(yi))と意味ベクトルCをconcatしたものから、単語(yi)を選ぶ(BEAM search)
- ニ番目以降の再帰段階のRNNへの入力は前段の出力(p(yi-1))から選択した単語(yi-1)
<注意表現を学習する仕組み>
- Attentionとは、
- 意味ベクトルに入力単語への参照を追加する。
- 注意の英単語である Attentionからきている。
- LSTMなどで使用されているゲート機構に似ている。
- 必要な情報は強調し、不必要な情報は目立たなくする。
- より良い注意表現を学習できれば膨大な情報から
注意を向けるべき情報に焦点を当てて処理をすることが可能になる。
<RNN Encoder-Decoder>
- Encoder:
Bidirectional な GRUを使用し、
- 文(x1, x2, ... ,xi)の前後の文脈を加味して単語をベクトル化(Annotation)。
- 一番最後の再帰段階の単語ベクトルをEncoderの最初の隠れ状態として使用する。
- P(yi)=P(yi|yi-1, Si^(d), Ci)
- RNNにはどの再帰の段階でも隠れ状態(Si-1^(d))を入力する。
- 一番最初の再帰段階のRNNへの入力はBOSで、隠れ状態は、例外的にEncoderの一番最後の単語ベクトルを指定する。
- ニ番目以降の再帰段階のRNNへの入力は前段の出力(p(yi-1))から選択した単語(yi-1)
- C → Ci は、従来の意味ベクトルではなく、どの単語に注目するか決めるhjの重み付き和で、
再帰セルに2層のNNを重ね(Attention機構、Align(softalign / softsearch))以下の計算を行い決定する。
- eij = νa^t tanh(WSi-1^(d) + Uhj)
- Si-1^(d):Decoderの隠れ状態(再帰セルの出力)
参考 †
YouTube? †