メインコンテンツへスキップ
見出し画像

【AIとの距離感・補足】Attentionを並列で走らせる|Multi-Head Attention

    緑どんぐり

    この記事はAttentionの話を読んでいるとより理解しやすくなっています。
    はじめての方は先にこちらをどうぞ。


    🤔 Attentionをひとつだけ使う、の何が足りないのか

    前の記事でAttentionの話を書いたとき、「どの単語に注目するかをスコアで決める」という仕組みを追いました。

    ただ調べていくうちに、実際のTransformerではAttentionをひとつだけ使っているわけではない、とわかりました。複数のAttentionを並列で走らせている。これをMulti-Head Attentionと呼びます。

    「なぜひとつじゃ足りないのか」というのが、最初に引っかかった問いでした。ひとつで全部見られるなら、それで十分じゃないのか、と。

    画像

    👁️ ひとつのAttentionだと、何が起きるか

    Attentionはスコアを使って「どの単語に注目するか」を決めます。でも、ひとつのAttentionが持てる「注目の仕方」はひとつだけです。

    たとえば「彼女はケーキを食べた。それはとても甘かった」という文章で、ひとつのAttentionが「それ→ケーキ」という指示の関係に注目しているとします。そのとき同時に「彼女→食べた」という動作の関係や、「甘かった→ケーキ」という性質の関係にも同じくらい注目できるか、というと難しい。

    ひとつの視点は、ひとつの関係を追うのに向いています。でも文章の中には、同時に追うべき関係がいくつもある。「ひとつじゃ足りない」の正体は、たぶんここでした。調べるまで気づいていなかった。

    そこで「視点を増やす」という発想が出てきます。

    画像

    🔭 複数の視点で同時に見る

    Multi-Head Attention(マルチヘッドアテンション)は、複数のAttentionを同時に並列で走らせる仕組みです。つまり、文章を複数の「視点」から同時に見て、それぞれの結果を組み合わせることで、より豊かな理解を得る、ということです。

    「Head」はAttentionのひとつひとつの単位のことです。これが複数(Multi)ある、というのが名前の由来です。

    具体例①:ケーキの文章

    先ほどの文章で考えると、こうなります。

    • Head 1:「それ→ケーキ」という指示の関係に注目

    • Head 2:「彼女→食べた」という動作の関係に注目

    • Head 3:「甘かった→ケーキ」という性質の関係に注目

    これらを同時に並列で走らせて、最後に結果を合わせる。ひとつの視点だけでは見落としやすい関係も、複数の視点があれば補い合えます。

    ひとつのAttentionが「何に注目するか」を決めるとしたら、Multi-Head Attentionは「何種類もの注目の仕方を同時に試す」イメージに近いです。

    具体例②:もう少し複雑な文章

    「田中さんは昨日、長年勤めた会社を辞めて、新しい仕事を始めた」という文章。

    ここには「田中さん→辞めた」「田中さん→始めた」「昨日→辞めた」「長年→勤めた」など、複数の関係が絡み合っています。ひとつのAttentionでこれを全部追うのは難しい。複数のHeadがそれぞれ担当を分けて同時に追うことで、文章全体の構造が見えてくる。

    この例を考えたとき「確かにこれはひとつじゃ無理だ」と少し腑に落ちました。

    画像

    🔑 Query・Key・Valueという3つの役割

    ここは少し込み入った話です。難しければ次のセクションに飛んでも大丈夫です。

    Attentionの内部では、Query・Key・Valueという3つの要素が使われています。難しそうな名前ですが、役割で考えると少し掴みやすくなります。

    Queryは「何を探しているか」

    Query(クエリ)は「今、何を知りたいか」を表す情報です。つまり、注目の起点となる単語が「どんな関係を探しているか」を表したものです。

    Keyは「自分はこういう情報」

    Key(キー)は「自分はこういう情報を持っている」を表す情報です。文章の各単語が「自分はこんな役割がある」と名乗っているイメージに近い。

    Valueは「実際に渡す中身」

    Value(バリュー)は「実際に渡す情報の中身」です。QueryとKeyが照合されてスコアが決まったあと、そのスコアに応じてValueが引き渡されます。

    図書館で例えると、Queryは「こういう本を探している」という問い、Keyは本の背表紙のタイトル、Valueは本の中身です。タイトルが問いに合っていれば、その本の中身を取り出す。

    自分はこの説明を読んで「なんとなくわかった気がするけど、正直まだふんわりしている」という感じでした。「QueryとKeyでスコアを決めて、Valueを取り出す」という流れだけ手元に残しておけば、先には進めます。

    画像

    🔢 実際には何個走らせているのか

    Transformerの元の論文では、8つのHeadを並列で走らせていました。つまり、8種類の視点から同時に文章を見ていた、ということです。

    GPT・Claude・Geminiのような大規模なモデルでは、さらに多くのHeadが使われています。ただ、何個が最適かはモデルによって異なるそうで、研究者が調整しながら決めているようです。

    「8個で十分なのか、100個だともっと賢くなるのか」が気になりましたが、単純に増やせばいいわけでもなく、計算コストとのバランスがあるそうです。そこはまだ追いきれていません。


    🔗 毎日使っているAIとのつながり

    ClaudeもGeminiもGPTも、このMulti-Head Attentionを使って文章を理解しています。

    Claudeに文章の相談をするとき、長い文脈の中から「ここが大事」という部分を拾ってくれる感覚があります。複数のHeadがそれぞれ違う関係を同時に追っているから、ひとつの視点では見落とすような意図も拾えている。

    Geminiで調べものをするときも、GPTで壁打ちをするときも、同じ仕組みが動いています。「なんでわかったんだろう」という瞬間の裏側が、少し見えた気がします。

    Query・Key・Valueはまだふんわりしたままですが。

    ま、いっか。


    あとがき

    ここまで読んでくださり、ありがとうございます。

    Attentionだけでも、すごー!と思っていたところに、さらにMulti-Head Attention。
    終わりがないって、こういうことを言うんですかね。ほんとうにすごいです。

    メンバーシップの皆様、いつもありがとうございます!

    「フォロー」や「スキ」をしていただけると励みになります!
    今後ともよろしくお願いします!


    画像


    この記事が参加している募集

     
     
     
    生成AIを使いながら、気づきや学びをマイペースに発信しています。 遊びながら学ぶをモットーに、無理なく、楽しく続けていきたいです🌱 お仕事のご相談・ご依頼も受け付けております。 問い合わせ窓口:https://green27donguri.github.io

    あなたへのおすすめ