Transformerの基本構造

Transformerは、エンコーダ(Encoder)とデコーダ(Decoder)の2つの主要な部分から構成されます。

エンコーダ(Encoder)

エンコーダは、入力シーケンスを固定長のベクトルに変換します。エンコーダは以下のような複数の層から成ります:

  1. 入力埋め込み(Input Embedding): 入力シーケンスの各要素を高次元の埋め込みベクトルに変換します。
  2. 位置エンコーディング(Positional Encoding): シーケンスの各位置に関する情報を埋め込みベクトルに追加します。
  3. マルチヘッドセルフアテンション(Multi-Head Self-Attention): 各単語の埋め込みベクトルに対し、他の全ての単語に対するアテンションを計算し、重要な情報を抽出します。
  4. フィードフォワードネットワーク(Feed-Forward Neural Network): アテンションの結果に対して個別の全結合ネットワークを適用します。

エンコーダは通常、これらの層を数回(例えば6回)繰り返します。

デコーダ(Decoder)

デコーダは、エンコーダが生成した中間表現から出力シーケンスを生成します。デコーダはエンコーダと類似した構造を持ちますが、いくつかの追加要素があります:

  1. 入力埋め込み(Input Embedding): デコーダの入力シーケンスを埋め込みベクトルに変換します。
  2. 位置エンコーディング(Positional Encoding): シーケンスの各位置に関する情報を追加します。
  3. マルチヘッドセルフアテンション(Masked Multi-Head Self-Attention): 出力シーケンスの各単語に対し、他の全ての単語に対するアテンションを計算しますが、将来の単語へのアテンションは遮断します(マスキング)。
  4. エンコーダ-デコーダアテンション(Encoder-Decoder Attention): エンコーダの出力に対するアテンションを計算し、エンコーダからの情報を取り込みます。
  5. フィードフォワードネットワーク(Feed-Forward Neural Network): アテンションの結果に対して全結合ネットワークを適用します。

アテンション機構(Attention Mechanism)

アテンション機構は、Transformerの中心的な要素です。アテンションは、入力シーケンスの異なる部分に対して異なる重みを割り当て、重要な情報を強調します。

スケールドドットプロダクトアテンション(Scaled Dot-Product Attention)

これは最も基本的なアテンションの形式で、以下の手順で計算されます:

  1. クエリ(Query)キー(Key)、**バリュー(Value)**行列を入力から生成します。
  2. クエリとキーの転置行列のドット積を計算し、スケーリングします。
  3. ソフトマックス関数を適用して正規化します。
  4. 正規化された重みをバリュー行列に掛け算して出力を得ます。