ChatGPTの「T」はTransformerのTです。RNNを使わずアテンションだけで組み上げたこの構造が、いまの生成AIの土台になりました。
こんにちは、zawato(@zawato7)です!
本記事はディープラーニング入門ロードマップの第24回です。文章を扱うモデルの流れは、ここでひとつの到達点にまとまります。
- RNNを使わない構造が何を解決したのか
- Positional Encodingが必要になる理由
- Multi-Head Attentionとマスクの役割
Transformerはアテンションだけで組み立てられている
Transformerは、RNNを使わずアテンション機構だけでエンコーダとデコーダを構成したモデルです。2017年の論文「Attention Is All You Need」で提案され、文章生成の主役だった再帰構造を丸ごと捨てました。
| RNNの弱点 | Transformerでは |
|---|---|
| 前の時刻の計算が終わるまで次に進めない | 全単語を同時に処理でき並列化が効く |
| 離れた単語どうしの関係が薄れる | どの2単語の関係も直接測れる |
並列化できれば、GPUの計算力をそのまま学習速度に変えられます。この構造がのちのLLMの土台になりました。
Positional Encodingで語順の情報を足す
全単語を同時に処理すると語順の情報が消えるため、位置を表す値を入力に足して補います。これがPositional Encodingです。RNNは1時刻ずつ処理するので順序が構造に埋め込まれていましたが、Transformerでは「何番目の単語か」が残りません。
これでは「犬が猫を追う」と「猫が犬を追う」を区別できません。そこで位置ごとに異なる数値パターンを単語のベクトルに加算してから入力します。G検定では計算式より、失われた順序の情報を補う仕組みという役割を押さえれば十分です。
Query・Key・ValueとMulti-Head Attention
アテンションは、QueryとKeyを照合して重みを求め、その重みでValueを混ぜ合わせる計算です。Queryは「探したい内容」、Keyは各単語の見出し、Valueはその中身です。一致度をSoftmaxで合計1の重みに変え、Valueを足し合わせて出力します。
Multi-Head Attentionは、このアテンションを複数並べて実行し、結果を連結(concat)する仕組みです。ヘッドごとに別の重みを学習するので、文法的な係り受けと意味的な結びつきなど、複数の観点を同時に捉えられます。
Self AttentionとMasked Multi-Head Attention
同じ文の中で関係を測るのがSelf Attention、未来の単語を隠して測るのがMasked Multi-Head Attentionです。Transformerには3種類のアテンションがあります。
| 場所 | 種類 | 何と何の関係を見るか |
|---|---|---|
| エンコーダ | Self Attention | 入力文の単語どうし |
| デコーダ① | Masked Multi-Head Attention | 出力文の単語どうし(未来は隠す) |
| デコーダ② | エンコーダ・デコーダアテンション | 入力文と出力文 |
マスクが要るのは1単語ずつ生成するからです。学習時は正解の文をまとめて与えるので、何もしないと先の単語まで見えてしまい、先読みできない本番と条件がずれてしまいます。
まとめ
- Transformerは再帰構造を使わずアテンションだけで作られたモデル。並列化が効き、離れた単語の関係も捉えられる
- 並列処理で失われる語順の情報はPositional Encodingを加算して補う
- アテンションはQuery・Key・Valueの計算。複数並べて連結するのがMulti-Head Attentionで、デコーダの入力側では未来を隠すMaskedを使う
よくある質問
Q. TransformerはなぜRNNより学習が速いのですか?
A. RNNは前の時刻の結果を待つ必要がありますが、Transformerは全単語をまとめて処理できます。この並列化がそのまま速さにつながります。
Q. Positional Encodingを使わないとどうなりますか?
A. 語順の情報が届かず、単語の集合としてしか文を扱えません。語順を入れ替えただけの別の文と区別できなくなります。
Q. Multi-Head Attentionのヘッドは何個にすればよいですか?
A. 決まった正解はなく設計時に決めるハイパーパラメータで、元の論文では8個。増やすほど多様な関係を捉えられますが計算量も増えます。
Q. Self Attentionとエンコーダ・デコーダアテンションはどう違いますか?
A. Self Attentionは同じ文の中で関係を測り、エンコーダ・デコーダアテンションは入力文と出力文という別の系列のあいだで注目先を決めます。



コメント