Transformer以前のSequence Modelでは、文章を順番に処理するRecurrent Architectureがよく使われていました。
それでも学習できますが、Step-by-Step処理が多いとTrainingを大規模にParallelizeしにくくなります。
2017年の論文**“Attention Is All You Need”**は、Attentionを中心にしたTransformer Architectureを提示し、現代LLMへ大きな影響を与えました。
Attentionは「今、どのTokenが重要?」を計算する
たとえば英語文で代名詞“it”が出たとき、そのTokenは前に出た名詞との関係を使う必要があります。
Self-Attentionでは、一つのSequence内の各Tokenが他Tokenを参照し、関連度に応じて重みを付けます。
これは人間の意識や集中力ではありません。
数値的なWeighted Information Mixingです。
Query・Key・Value
各Tokenから学習された三種類の表現を作る説明がよく使われます。
- Query (Q) — このTokenが何を探しているか
- Key (K) — 他Tokenがどんな情報を提供できるか
- Value (V) — 関連すると判断されたとき実際に渡す情報
QueryとKeyを比較してAttention Scoreを作り、その重みによってValueをMixします。
今は式より、
関連度を比較 → Weightを決める → 情報をMixする
という流れを覚えれば十分です。
Multi-head Attention
一種類の関係だけでは足りないため、複数のAttention Headを並べて違うPatternを学べるようにします。
あるHeadが近いSyntax、別Headが長距離のReferenceを見るようなBehaviorが現れることがあります。
ただし、各Headが必ず人間に分かりやすい一つの言語概念を担当するわけではありません。
Parallelismが重要だった
Transformer Layerでは多くのTokenをMatrix Operationとして一緒に処理できます。
GPUやAcceleratorと相性が良く、大規模TrainingをParallel Hardwareへ載せやすくなりました。
これは第028回のCUDAの話ともつながります。
AI Architectureは数学だけでなく、Hardware上で効率よく動かせるかにも影響されます。
順番の情報は別に必要
Attentionだけでは「1番目のWord」と「5番目のWord」の順序を自然には知りません。
そのためPositional Encoding、Learned Position、Rotary Positional Embeddingなど、位置情報を表す仕組みを使います。
Full Attentionは長文で高Cost
Classic Self-Attentionでは多くのToken Pairを比較するため、Sequence LengthをnとするとAttention Matrixはおおむねn²で増えます。
Long Contextでは大きなCostになります。
現代ModelではFlashAttention、Sliding Window、Grouped Query Attentionなど、異なる方向のOptimizationが使われます。
Transformer = Attentionだけではない
Transformer BlockにはFeed-forward Network、Normalization、Residual Connectionなどもあります。
“Attention Is All You Need”は印象的なPaper Titleであり、現代LLMがAttentionだけで構成されるという意味ではありません。
今日の一文
Self-Attentionは、各Tokenが他Tokenから必要な情報を重み付きで集める仕組みで、TransformerはそれをParallelに扱いやすいSequence Architectureの中心へ置きました。
次の第032回ではApplication側へ戻り、Model、Tool、RAGなどを組み合わせるFrameworkのLangChainを見ます。
コメント
質問、感想、補足したいことがあれば、ここに残せます。
まだコメントはありません。1Fになってみませんか。