「彼女はケーキを焼いた。それはとても美味しかった」。この「それ」が何を指すか、人はすぐに分かります。LLM も、「それ」を処理するときに、前の文の「ケーキ」に強い注意を向けて意味をつなげています。この注意の向け方を決める計算の仕組みが、アテンション(Attention)です。
長い会議メモを読むとき、人は全部を同じ重さで読まず、今の話題に関係するところを自然と強く意識します。アテンションも、入力の中でどこを重く扱うかを、処理しながら決めています。今の言語モデルの性能を支えている中心的な仕組みの一つです。
全部の言葉の関係をいったん計算する
アテンションは、入力に含まれるすべてのトークンの組み合わせについて関係の強さを計算し、その強さに応じて情報をまとめます。離れた位置にある言葉どうしを結びつけられるのは、このためです。
「ここは重要」と書いておけばそこを重く見てくれる、という機能ではありません。どこを重く見るかはモデルが学習で身につけたもので、外から直接は操作できないのです。モデル間の性能の差の多くも、このアテンションの作りや学習データの違いから生まれています。
長く渡すほど計算も読まれ方も変わる
アテンションは、コンテキストウィンドウに入っているすべてのトークンを対象に計算します。入力が長くなるほど計算量が増え、処理時間や費用に響きます。
長い文章を渡しても、すべての部分が均等に参照されるわけではありません。重要な指示や情報は、文脈の先頭か末尾に置くと反映されやすい傾向があります。重視されるかを直接は操作できない以上、実務でできるのは、大事な情報の置き場所と書き方を工夫することです。