芋出し画像

#48クロスアテンションの深むむ話——「あなたは昚日映画を芋たか」が英語になるたで

Transformer の解説図を眺めおいるず、Encoder ず Decoder のあいだに匕かれた矢印が、どうしおも「単語ず単語の察応衚」に芋えおきたす。日本語の「芋た」が英語の "watch" に線で結ばれおいる——そんなむメヌゞです。
ずころが実際に掚論の手順を䞀歩ず぀远っおみるず、そこで起きおいるこずは察応衚ずはたったく違いたす。この蚘事は、その確認䜜業の蚘録です。
 
題材は䞀文だけ。
 
あなたは 昚日 映画を 芋た か ➡ Did you watch a movie yesterday?
 
ここでは話を Encoder–Decoder 型 Transformer の掚論時に限定したす。孊習時ではありたせん。この区別が、あずで効いおきたす。

 1. Encoder は日本語を「䞀床に」読む


たず入力文をトヌクン化したす。簡単のため 5 トヌクンずしたしょう。
```
あなたは 昚日 映画を 芋た か
  ↓    ↓   ↓  ↓  ↓
  X1   X2   X3  X4  X5
```
これを Encoder にたずめお入力したす。Encoder の Self-Attention では、各トヌクンから Q, K, V を䜜り、互いを参照させたす。ここに Causal Mask未来を隠すマスクはありたせん。原文はすでに党郚そこにあるのですから、隠す理由がないわけです。
したがっお「芋た」の Q4 は、「あなたは」「昚日」「映画を」「か」のすべおの K を芋るこずができたす。
ここが最初のポむントです。Encoder から出おくる「芋た」の衚珟は、蟞曞的な意味での「芋た」ではありたせん。「あなたは昚日映画を芋たか」ずいう文脈のなかでの「芋た」になっおいたす。
Encoder の凊理が終わるず、その出力から Cross-Attention 甚の K, V を䜜りたす。
```
Encoder 出力
↓
K₁,V₁  K₂,V₂  K₃,V₃  K₄,V₄  K₅,V₅
```
この5組のK,Vは、翻蚳が終わるたでDecoderのCross-Attentionから繰り返し参照されたす。 

2. Decoder は英語を1トヌクンず぀生成する


Decoder には最初、`<BOS>`翻蚳開始を瀺す特殊トヌクンだけが入りたす。
Decoder Self-Attention では、この 1 トヌクンから Q, K, V を䜜りたす。1個しかないので、参照できるのは自分自身だけです。
そしお、Encoder–Decoder 型の栞心である Cross-Attention に進みたす。 

3. Cross-Attention ——「圢」を芋るず性質が分かる


Cross-Attention では、Q は Decoder から、K ず V は Encoder から来たす。
```
Decoder Encoder日本語
Q<BOS> → K₁ V₁
       K₂ V₂
       K₃ V₃
       K₄ V₄
       K₅ V₅
```
蚈算するのは QKᵀ です。Decoder 偎の Q は 1 本、Encoder 偎の K は 5 本ですから、
(1×d)(d×5)=1×5
結果は 1×5 のベクトル、぀たり「日本語5トヌクンそれぞれずの関連床を衚すAttention Score」になりたす。
 
この圢を芋れば、Cross-Attention が䜕をしおいるかは明らかです。
Cross-Attentionでは、QずKの本数がそもそも䞀臎しおいたせん。日本語 5 トヌクンず英語の生成枈みトヌクンを䞀察䞀で結んでいるのではなく、英語偎の 1 本の Q が、日本語偎の 5 本の K ずの類䌌床を蚈算し、「いた次の英単語を出すために、日本語のどこを芋るべきか」を決めおいるのです。
必芁なのは、Qの1本あたりのベクトル次元ず、Kの1本あたりのベクトル次元が同じであるこずです。
 
これが Cross-Attention です。翻蚳においお日英でトヌクン数も語順も違うのに、なぜ機械翻蚳が成立するのか——その答えがここにありたす。そもそも数を合わせる必芁がないのです。 

4. 掚論䞭、Encoderは䞀床だけ蚈算する


`<BOS>` の次に "Did" が生成されたずしたす。Decoder の生成履歎は `<BOS> Did` になりたした。
このずき、Encoder は再蚈算されたせん。K₁〜K₅、V₁〜V₅ はそのたた保存されおおり、次のステップでもそのたた䜿われたす。日本語の原文は倉わらないのですから、圓たり前ずいえば圓たり前ですが、これが Cross-Attention 偎の KV Cache です。
䞀方、Decoder Self-Attention では珟圚 `<BOS> Did` の 2 トヌクンがありたす。
孊習時や Prefill 段階なら、ここには Causal Mask が必芁です。
```
   BOS   Did
BOS  ○   ×
Did    ○   ○
```
ずころが Decode 段階1 トヌクンず぀生成しおいる最䞭で KV Cache を䜿っおいる堎合、新しく生成された "Did" に察応する Q だけを蚈算し、K_BOS ず K_Did を芋るだけです。
未来の英語は、ただ存圚したせん。
`you watch a movie yesterday` はこの時点ではこの䞖にないのですから、隠すべき未来がない。぀たり Decode 段階では Causal Mask は原理的に䞍芁ずいうこずになりたす。マスクは「未来を芋えなくする」ための仕組みですが、逐次生成では未来がそもそも生成されおいないからです。
ここでいう「原理的に䞍芁」は、KV Cacheを利甚しお新しい1トヌクンを逐次凊理するDecode段階を指したす。実装䞊は、同じCausal Attentionの仕組みを残しおいる堎合がありたす。
 
こうしお、
```
<BOS>
↓ Did
↓ Did you
↓ Did you watch
↓ Did you watch a
↓ Did you watch a movie
↓ Did you watch a movie yesterday
↓ ?
```
ず䌞びおいきたす。各ステップで Decoder は、Self-Attention で「ここたで曞いた英語」を芋お、Cross-Attention で「日本語の党文」を芋お、次の 1トヌクンを決めおいたす。 

5. 深むむ話 その 1 ——「か」だけでは過去圢は決たらない


さお、ここからが本題です。
最初の "Did" を生成するずきのアテンション重みは、たずえばこうなっおいる——ずいう説明をよく芋かけたす。
```
あなたは  昚日  映画を 芋た か
 0.05   0.10    0.05   0.05  0.75
```
疑問文だから「か」に匷く泚目する。いかにもありそうな説明です。
しかしこの説明では、次のような鋭い突っ蟌みが返っおきそうです。
> 「か」に泚目するだけでは、過去圢かどうか分からないのでは
 
たったくその通りで、この説明は単玔化しすぎおいたす。「か」が教えおくれるのは、疑問文であるこずだけです。それだけでは `Do` なのか `Did` なのか `Will` なのかは決たらない。
実際には、"Did" を決める情報は 1 個の K から出おくるものではありたせん。


 

これらが Encoder の各トヌクンの衚珟のなかに分散しお存圚しおおり、Q_BOS はそのすべおを重み付きで受け取りたす。
そしお、ここでステップ 1 の話が効いおきたす。
K₄は単なる「芋た」ずいう単語の情報ではなく、その呚囲の文脈を反映した衚珟になっおいたす。同じようにK₂「昚日」にも、「芋た」ず結び぀いた時間情報が反映されおいたす。぀たり、Cross-Attention が参照しおいるのは玠の単語ではなく、Encoder が文脈から味付けを斜した衚珟です。
「か」に泚目するこずがあったずしおも、過去圢に関する情報はK₂やK₄など、他の文脈化された衚珟にも含たれおいたす。
「『か』だけでは過去圢は分からない」——この匕っかかりは、Cross-Attention が逐語的な察応衚ではないこずを理解するうえで、これ以䞊ないほど良い入口だず思いたす。 

6. 深むむ話 その 2 —— 矛盟した原文をどう蚳すか


同じ調子で、もう䞀段いじわるな問いを立おおみたす。
> 人間なら「あなたは明日映画を芋たか」ず蚀われれば、「文法的におかしいのでは」ず思いながらも "Did you watch a movie tomorrow?" ず蚳すず思われるが、 AI には、これは難しいのではないか
未来の時間衚珟ず過去圢の動詞が同居した、壊れた原文です。
結論から蚀うず、AI にもこの蚳は十分に生成できたす。ただ、この盎感には重芁な郚分が含たれおいたす。
 
Encoder は矛盟を「保持できる」
```
あなたは ─┐
明日        ──
映画を     â”€â”€â†’ 文脈化された衚珟
芋た        ──
か        ─┘
```
「明日」は未来、「芋た」は過去。Encoder の Self-Attention は党文を双方向に芋たすから、この䞍自然な組み合わせそのものが衚珟のなかに反映され埗たす。Encoder は「明日」ず「芋た」を別々に凊理しお終わりではなく、䞡者の関係を含んだ衚珟を䜜っおから Decoder に枡しおいる、ずいうこずです。

人間はそこで「もう䞀段の刀断」をする

人間の翻蚳者には、この時点で遞択肢がありたす。
·        原文忠実型Did you watch a movie tomorrow?矛盟ごず蚳す
·        意味修正型Will you watch a movie tomorrow?誀蚘ず刀断しお盎す
·        確認型「"Will you watch a movie tomorrow?" の意味でしょうか」ず聞き返す
この分岐には、文法や意味の敎合性を刀断する人間の翻蚳者ずしおの刀断が関わっおいたす。 

モデルの偎で起きおいるこず

Transformerには、人間が曞いた文法芏則をそのたた栌玍した文法゚ンゞンがあるわけではありたせん。倧量の蚀語デヌタから、文法や意味の関係を含む耇雑なパタヌンを孊習し、それを次のトヌクンの確率分垃ずしお出力したす。
したがっお、孊習した倧量の蚀語パタヌンや翻蚳パタヌンの䞭から、その文脈に続く可胜性の高い衚珟を生成するため、原文を忠実に蚳す堎合もあれば、文脈から䞍自然さを補正する方向に進む堎合もありたす。さらに、Decoder 自身が `Did ... tomorrow` ずいう組み合わせを生成しおいく過皋で、「この英語は䞍自然だ」ずいう方向に確率が䞋がるこずも起こり埗たす。
ただし、ここで「AI には文法理解がない」ず蚀い切るのも正確ではありたせん。倧芏暡モデルは、`Did you ... tomorrow?` より `Will you ... tomorrow?` のほうが自然だ、ずいう極めお耇雑な統蚈的構造を獲埗しおいたす。矛盟をある皋床怜出するこずはできる。しかしそれは、時制ずいう芏則に照らしお明瀺的に掚論した結果ではない——ここが人間ずの違いです。 

7. 䞉぀のアテンションを䞀枚に敎理する

ここたでの話を衚にたずめたす。 

Cross-Attention の郚分だけ、Q の出所ず K・V の出所が違いたす。この 1 行が、Cross-Attentionの栞心です。
ここでは、珟圚のLLM掚論でよく䜿われる甚語を借りお、入力をたずめお凊理する段階をPrefill、生成を1トヌクンず぀進める段階をDecodeず呌びたす。
 
そしお生成の流れを図にするず、こうなりたす。
```
【Encoder】日本語 5 トヌクン
      ↓ Self-Attentionマスクなし・双方向
 文脈化された衚珟
      ↓ K, V ずしお保持以埌、再蚈算なし
      │
      ↓
    Cross-Attention ←─┐
      ↑        │
      │ Q      │
【Decoder】        │
 <BOS> → Did → you → .. │
      ↑       │
Self-Attention ─────────┘
 過去の英語を芋る
```
新しいトヌクンから出た Q が二手に分かれ、片方は自分の過去英語を、もう片方は原文日本語を芋に行く。この二重の参照が、Encoder–Decoder 型 Transformer の蚭蚈そのものです。 

補足珟圚䞻流のDecoder-only LLMには、Cross-Attentionがない

最埌に、混同しやすい点をひず぀。
ここたで説明したのは Encoder–Decoder 型オリゞナルの Transformer、T5、翻蚳モデルなどの構造です。䞀方、いた広く䜿われおいる GPT 系・Claude 系ずいった倧芏暡蚀語モデルの倚くは Decoder-only 型で、Encoder も Cross-Attention も持ちたせん。
では Decoder-only のモデルはどうやっお翻蚳しおいるのか。答えは単玔で、原文を「生成枈みトヌクン」ずしお同じ系列に入れおしたうのです。
```
Translate to English: あなたは昚日映画を芋たか → Did you watch ...
```
原文も蚳文も䞀本の系列に䞊び、Self-Attention だけで凊理されたす。Cross-Attention がやっおいた「原文を参照する」仕事は、Self-Attention が兌務するこずになりたす。
構造ずしおは別物ですが、「文脈化された衚珟を通じお原文党䜓を参照する」ずいう本質は倉わりたせん。Cross-Attention を理解しおおくず、Decoder-only モデルが䜕を統合したのかがよく芋えるようになりたす。 

たずめ

  • Cross-Attention の Q は Decoder から、K・V は Encoder から来る。この非察称性がすべお

  • Cross-AttentionではQずKの本数は䞀臎しなくおよい。だから日英で語順もトヌクン数も違っおよい

  • 参照される K は玠の単語ではなく、Encoder が党文を芋お䜜った文脈化枈みの衚珟

  • ゆえに「か」に泚目しおも過去圢の情報は倱われない。情報は文党䜓に分散しおいる

  • Decode 段階では未来のトヌクンがただ存圚しないため、Causal Mask は原理的に䞍芁

Cross-Attention は察応衚ではなく、「いた䜕を曞くために、原文のどこを芋るか」を毎ステップ決め盎す仕組み

図の矢印を「察応衚」ず読むず、Transformer の翻蚳はい぀たでも䞍思議なたたです。「毎回、原文党䜓を参照しおいる」ず読み替えた瞬間に、腑に萜ちたす。



いいなず思ったら応揎しよう

ゞェミナ南醍 よろしければ応揎お願いしたす いただいたチップはクリ゚むタヌずしおの掻動費に䜿わせおいただきたす