Transformerのメモ

Transformer

- Transformerの特徴のひとつは、学習を並列実行させることができることである。

  • RNNでは、時系列毎に結果を渡していく必要があるためシーケンシャルに処理をする必要がある。

- Transformerでは、並列学習させるため、以下の機構がある。

- Encoderへの入力は、データを配列で一気に渡す。(実際には、ミニバッチ学習させるため、「バッチ数 x 単語数 x 単語ベクトル次元数」となる。)
- 単語の順番で文章ベクトルを計算するのではなく、Attentionで単語間の関連を見て文章ベクトル化する。
- 但し、単語の順番を考慮しないと、文章の意味が変わる場合があるので、位置情報を単語ベクトルに付与して、文章ベクトルに入れていく。
- Multi-Head Attentionで、複数のAttentionを使い複数の関連を計算する。
- Multi-Head Attentionの層を複数重ねるためFeedForward(全結合)を入れる。
- Decorderでも、学習時にはデータを一気に渡すため、先の結果(予測結果の次の単語)を見ないようにマスクして、Attentionで関連を計算する。(Masked Multi-Head Attention)
- Multi-Head Attentionは、上記の「バッチ数 x 単語数 x 単語ベクトル次元数」のうちの「単語ベクトル次元数」をヘッド数で割って、各ヘッド毎に計算して、concatする。

 

参考情報