Transformer って全単語いっぺんに見れるんですよね。
ほんとに便利!
じゃあ語順は自動でわかるでしょ?
ジャスミンちゃん、そこが実は落とし穴。
Self-Attention は単語集合として扱うから、並び替えても計算結果は変わらない性質があるの。
えっ、じゃあ「犬が猫を追いかけた」と「猫が犬を追いかけた」を同じに扱っちゃうの?
それはめっちゃヤバいじゃん!
ふぇぇ、犬と猫の立場が逆になっちゃうの…かわいそう。
そのままだとそうなるの。
だから Transformer は「何番目の単語か」を明示的に教えるために位置エンコーディングという仕組みを入れているのよ。
元の論文ではサイン・コサイン関数を使って位置ごとに固有のベクトルを作り、それを単語埋め込みに足し算するの。
足し算するだけで「順番」になるの?
なんだか不思議…
三角関数は周期性を持つから、位置の違いが自然な形でベクトルに反映されるの。
近い位置は似た位置ベクトル、遠い位置は違う位置ベクトルになるわ。
音楽のリズムに近い感覚ね。
確かに、音楽のリズムみたいなもんだね!
近い拍は似てて、離れると違って聞こえる。
じゃあ最近のモデルは他の方式もあるんですか?
最近のモデルでは位置表現も進化していて、学習可能な位置エンコーディングやRoPE(回転位置埋め込み)、ALiBi など、より長文に強い方式が使われているわ。
補足すると、RoPE は長い文脈でも性能を保ちやすいため、LLaMA 系や Mistral など最近のオープンソース LLM で広く採用されていますね。
位置エンコーディング方式の選択は「扱える最大文脈長」と直結するんです。
その通り。
100万トークン級の超長文を扱うモデルが出ている背景には、RoPE の拡張や位置補間(ロングコンテキスト拡張技術)といった改良が大きく貢献しているのよ。
100万トークンって、文庫本何冊分だよ…すご〜い、語順教えるだけでそこまでいけるんだね。
語順は人間には当たり前だけど、AI にはちゃんと教えてあげなきゃいけないんだ…なんだかAIが子供みたいで愛らしい。
ましろの詩人モード、今日も好調。
ふふ、当たり前のことほど実装は工夫が要る、というのがAIの面白さよ。
試験的には「語順情報を補う仕組み」というコアと、「サイン・コサイン方式」が原典、という2点で十分。
長文処理で性能が変わる重要要素、と覚えておいてね。
そして現代のモデルで RoPE や ALiBi、位置補間が増えている理由も、「長文でもちゃんと順序が伝わる」という設計思想が背景にあるの。
ましろちゃんのいう通り、AIはまだ「語順」を教えてもらう段階の子供なのね。
確認クイズ
Transformer に位置エンコーディングが必要な理由として最も適切なものはどれか。
- 計算速度を上げるため
- メモリ使用量を削減するため
- セルフアテンションだけでは語順情報が失われるため
- 過学習を防ぐため
こたえを見る
正解: 3. セルフアテンションだけでは語順情報が失われるため
Self-Attention は全単語を並列に処理し、単語を集合として扱うため語順情報が失われます。位置エンコーディングで順序を補います。計算速度・メモリ削減・過学習防止は位置エンコーディングの目的ではありません。