Attention — どの単語が、どの単語を見ているか
「The animal didn't cross the street because it was too tired.(その動物は疲れすぎていたので、通りを渡らなかった)」――この it は、animal と street のどちらを指すでしょう? 人間なら「疲れていた」のは動物だと一瞬で分かります。でもコンピュータには、単語を順番に読むだけでは決められません。
Transformerが使うAttention(注意機構)は、ある単語の意味を決めるとき、文中の他のどの単語を・どれだけ「見る」かを数値(重み)で計算します。下の図1で単語をクリックすると、その単語が他のどの単語に注目しているかが色の濃さで見えます。まずは it を押してみてください。
「順番」ではなく「関連の強さ」で読む
Attentionの計算は、ざっくり言えばすべての単語ペアの相性を採点することです。各単語は「自分は何を探しているか(Query)」「自分は何者か(Key)」「自分が渡せる中身(Value)」の3つを持ち、QueryとKeyの相性が高いペアほど大きな重みになります。そして各単語は、重みに応じて相手のValueを混ぜ合わせたものを新しい意味として受け取ります。図1で it が animal を強く見ているのは、「itが指すものは?」というQueryに、animalのKeyが最もよく一致したからです。
この仕組みのすごいところは、離れた単語どうしでも一足飛びに結びつける点です。it と animal は6単語も離れていますが、Attentionは距離に関係なく直接つなげます。しかも全ペアの計算は同時(並列)に行えるので高速。「前から順に1語ずつ」しか覚えられなかった以前のモデルの弱点を解消し、長い文の文脈把握を一気に得意にしたのが、Transformerの核心です。
- Attention
- ある単語の意味を決めるとき、他の単語をどれだけ参照するかを重みで表す仕組み。
- Self-Attention
- 同じ文の中の単語どうしで注目し合うAttention。文脈の把握に使う。
- Query / Key / Value
- 各単語が持つ3役。QueryとKeyの相性で重みが決まり、その重みでValueを混ぜる。
- マルチヘッド
- 注目の観点を複数並べる工夫。文法・係り受けなど別々の関係を同時に捉える。
まとめ
Attentionは、単語を「順番」ではなく「関連の強さ」で読む仕組みです。全単語ペアの相性を採点し、関連の濃い単語の情報を多く取り込むことで、it が遠くの animal を指すような文脈も捉えられます。距離を無視して直接つなげ、しかも並列で計算できる――この一手が、現代の大規模言語モデルの土台になっています。図1で色々な単語を選び、「何を見ているか」を確かめてください。