モデルのしくみ 中級
アテンション
Attention
文章の中のどの単語が、ほかのどの単語と関係が深いかを計算し、重要な部分に重みをつけて読む仕組みです。Transformer の中心となる技術で、現在の LLM の土台になっています。
別の呼び方注意機構、アテンション機構、Self-Attention、自己注意
例アテンションは長い文章ほど計算が重くなるため、長文対応のモデルでは高速化の工夫が欠かせない。
詳しく
アテンション(Attention、注意機構)は、入力された情報のうち、今の処理にどの部分がどれだけ重要かを計算して、重みをつけて参照する仕組みです。2017年に発表された Transformer が、このアテンションを中心に据えたことで、現在の大規模言語モデルの時代が始まりました。
何を解決したのか
文章を理解するには、離れた位置にある言葉どうしの関係をつかむ必要があります。たとえば「トロフィーはスーツケースに入らなかった。それが大きすぎたからだ」の「それ」が何を指すかは、文の先頭の言葉を見ないと分かりません。以前の主流だった再帰型ニューラルネットワークは、言葉を1つずつ順番に処理するため、遠い言葉の関係を保つのが苦手で、並列に計算できず学習も遅くなりがちでした。アテンションは、すべての言葉どうしの関係を直接計算することで、これを解決しました。
しくみ(イメージ)
自己アテンション(セルフアテンション)では、各単語が次の3つの役割を持つ値に変換されます。
- クエリ(Query):「自分は何を探しているか」
- キー(Key):「自分はどんな情報を持っているか」
- バリュー(Value):「実際に渡す中身」
ある単語のクエリと、他のすべての単語のキーとの近さを計算し、近いものほど大きな重みを与えます。その重みでバリューを混ぜ合わせたものが、その単語の新しい表現になります。図書館で、探したい内容(クエリ)を、本の見出し(キー)と照らし合わせ、関連が強い本の中身(バリュー)をより多く読む、というイメージです。
実際には、これを異なる観点で同時に何組も行う「マルチヘッドアテンション」が使われ、文法的な関係や意味的な関係など、複数の見方を並行して捉えられます。
具体例
先ほどの例では、「それ」のクエリはキーとの照合で「トロフィー」に強く反応し、文の意味が正しく取れるようになります。
特徴と注意点
- 計算量の問題:すべての単語の組み合わせを計算するため、入力が長くなると計算量とメモリが急速に増えます。文脈長の制約の一因です。
- 高速化の工夫:FlashAttention のように、メモリの使い方を工夫して速くする実装や、KV キャッシュで過去の計算を再利用する方法があります。
- 解釈には限界がある:どこに注目したかを可視化できますが、それがモデルの判断理由そのものとは限りません。
- 文章以外にも使われる:画像、音声、動画など、ほかのデータにも広く応用されています。
関連する考え方
transformer は全体の構造、flash-attention は高速化の実装、kv-cache は推論時の再利用、positional-encoding は語順の情報を加える工夫です。
あわせて知りたい言葉
- Transformer2017年の論文「Attention Is All You Need」で提案されたニューラルネットワークの構造です。現在の LLM の大半がこの構造を土台にしており、画像や音声の生成にも広く使われています。
- FlashAttentionアテンションの計算を、GPUのメモリの使い方を工夫して高速化し、メモリ消費も減らす実装手法です。計算結果を変えずに、長い文脈を扱いやすくします。学習にも推論にも使われています。
- KVキャッシュLLM が文章を生成するとき、過去の単語について計算した中間結果を保存して使い回す仕組みです。同じ計算を繰り返さずに済むため、生成が速くなりますが、メモリを多く消費します。
- 位置エンコーディングTransformer に、トークンが文の何番目にあるかを伝える仕組みです。これがないと語順の違いを区別できず、文脈長を伸ばす工夫にも深く関わります。現在は RoPE という方式が広く使われています。
- 文脈長モデルが1回の処理で扱えるトークン数の上限です。入力(指示・会話履歴・資料)と出力の合計がこの範囲に収まる必要があり、長いほど多くの資料を一度にまとめて渡せます。