Transformer 入門: 自己注意機構を理解する
現代 LLM のコア技術である Transformer アーキテクチャの直感的な理解を目指す入門記事。自己注意 (Self-Attention) の計算とその意味を丁寧に追う。
Transformer は 2017 年の論文「Attention Is All You Need」で提案されて以降、自然言語処理の事実上の標準アーキテクチャになりました。GPT・Claude・Gemini などの大規模言語モデルはすべてこの系統の拡張です。本記事では数式よりも直感を優先して、その中核である自己注意機構を解きほぐします。
なぜ自己注意が必要なのか
「彼は銀行で口座を開いた」と「川の土手を歩いた」では、同じ「銀行/bank」でも意味が違います。単語の意味を決めるには文中の他の単語との関係を見る必要があります。これを計算可能な形にしたのが自己注意です。
Query / Key / Value という三役
各トークンは学習された線形変換によって、3 つの役割ベクトルに写像されます。
- Query (Q): 「自分はどんな情報を知りたいか?」
- Key (K): 「他のトークンが提示する目印」
- Value (V): 「実際に受け渡される中身」
Q と K の内積で「どのトークンが注目に値するか」のスコアを作り、softmax で正規化してから V を重み付き合計する。これが 1 層の self-attention です。
RNN / CNN より優れている点
- 並列計算: 全トークンの注意を同時に計算できる。GPU/TPU と相性がよい
- 長距離依存: 距離に関係なくどのトークン間の関係も 1 ステップで取れる
- スケーラビリティ: モデルサイズを増やすほど性能が伸び続ける (いわゆる “scaling law”)
Multi-Head Attention とは
ひとつの注意機構だけでは「文法的関係」「意味的関連」「参照解決」など複数の関係性を同時に捉えにくいため、複数の独立した注意ヘッドを並列に走らせ、結果を concat します。モデルによって 8〜128 ヘッド程度です。
位置情報をどう伝えるか
self-attention は対称的な操作で単語の順序を認識できないため、位置エンコーディングをトークン埋め込みに足して順序情報を注入します。初期の論文は三角関数ベース、近年は RoPE や ALiBi など学習型 / 相対位置ベースが主流です。
次に学ぶとよい話題
- Decoder-only (GPT 系) と Encoder-Decoder (T5) の違い
- FlashAttention などの高速化テクニック
- 文脈長の限界を広げる手法 (sliding window attention, sparse attention)
論文 “Attention Is All You Need” を元に、PyTorch で小さな Transformer を自分で組んでみると理解が一気に深まります。