Encoder-Decoder の構造差 | Transformer
概要 で扱った Transformer ブロック(Attention + FFN)を、実際のモデルがどう組み合わせているかを整理します。
記法
本ドキュメントは以下の記法で統一します。
| 記号 | 意味 |
|---|---|
| $\cdot$ | 行列積(ドット積) |
| $\odot$ | 要素積(アダマール積、element-wise product) |
| $C$ | コンテキスト長 |
| $E$ | 埋め込みベクトル次元数 |
| $D$ | クエリ、キー次元数 |
3種類のアーキテクチャ
元祖Transformer論文(機械翻訳向け)は Encoder と Decoder の両方を持つ構造でしたが、その後のモデルは目的に応じてどちらか一方だけを使うものが主流になりました。
| 構造 | 代表モデル | Attention の種類 | 得意なタスク |
|---|---|---|---|
| Encoder-only | BERT | 双方向(マスクなし)Self-Attention | 文章分類、固有表現抽出など「理解」系 |
| Decoder-only | GPT系 | 因果(マスクあり)Self-Attention | 文章生成など「生成」系 |
| Encoder-Decoder | T5、元祖Transformer | Encoder:双方向 / Decoder:因果 + Cross-Attention | 翻訳、要約など「変換」系 |
Encoder(BERT型):双方向 Self-Attention
各トークンが自分より前後どちらの位置のトークンも参照できます。Attention の「マスク」の節で扱ったマスク(下三角行列、$-\infty$ で未来を遮断)を適用しません。
\[Attention(Q,K,V) = Softmax\left(\frac{Q\cdot K^\top}{\sqrt{D}}\right)\cdot V \quad \text{(マスクなし)}\]- 文全体の文脈を一度に見られるため、文の意味理解に強い
- BERT は事前学習として、文中の一部をマスクして周囲の文脈から当てる Masked Language Model(MLM) を使う(次のトークンを予測する自己回帰的な学習ではない点が GPT と大きく異なる)
- 構造上、左から右へ1トークンずつ生成していく用途(文章生成)には向かない
Decoder(GPT型):因果 Self-Attention
Attention の「マスク」の節で説明した下三角マスクを適用し、自分より未来の位置は参照できません。
\[Attention(Q,K,V) = Softmax\left(mask\left(\frac{Q\cdot K^\top}{\sqrt{D}}\right)\right)\cdot V\]- 位置 $t$ の出力は $x_1,\dots,x_t$ だけから計算される → 学習時も推論時も同じ計算方式で「次のトークンを予測する」タスクに一貫して使える(自己回帰的言語モデル)
- LLMの交差エントロピー誤差とカテゴリカル分布の尤度関数 で扱った $q_t(k_t)$ の予測がまさにこれに対応
Encoder-Decoder(T5型):Cross-Attention
翻訳・要約のように「入力系列」と「出力系列」が別物であるタスクでは、Encoder と Decoder を両方使い、両者を Cross-Attention でつなぎます。
\[\text{CrossAttention}(Q_{\text{dec}}, K_{\text{enc}}, V_{\text{enc}}) = Softmax\left(\frac{Q_{\text{dec}}\cdot K_{\text{enc}}^\top}{\sqrt{D}}\right)\cdot V_{\text{enc}}\]- $Q$:Decoder 側の現在の隠れ状態から算出(「今どこまで訳したか」)
- $K, V$:Encoder 側の出力から算出(「入力文全体の情報」)— Encoder は入力全体に対して1回だけ計算すればよく、Decoder の各ステップで使い回される
Decoder 内の処理順序は以下の3段構成になります。
- Masked Self-Attention:Decoder がこれまで自分で生成したトークン列だけを参照(因果マスクあり)
- Cross-Attention:1. の出力を $Q$、Encoder の出力を $K,V$ として、入力文のどこに注目すべきかを計算
- FFN
NOTE
Cross-Attention の $Q$ と $K,V$ が異なる系列(Decoder側/Encoder側)から来る点が、Self-Attention($Q,K,V$ がすべて同じ $x$ から来る)との本質的な違いです。
まとめ
| Self-Attention(Encoder) | Self-Attention(Decoder) | Cross-Attention | |
|---|---|---|---|
| $Q,K,V$ の出所 | すべて同じ入力系列 | すべて同じ出力系列(生成済み部分) | $Q$:Decoder/$K,V$:Encoder |
| マスク | なし(双方向) | あり(未来を遮断) | なし(Encoder側全体を参照可) |
| 代表モデル | BERT | GPT | T5、元祖Transformer |