夕方、銀座のホテルラウンジで、大蔵が後輩アシスタント2人に接客のコツを伝授中…
大蔵(アシスタントマネージャー・35)

あなたたち、接客の極意は 3ステップ ですわよ。1: お客様の 表情・服装・季節・直前の会話関連度のスコア でつける。2: スコアが高いものを 重み付け して情報を集める。3: それを統合して 「今日のこのお客様」 の状態 を頭の中で更新する。これを 1秒以内 でやるのが20年の鍛錬の成果。

凡田(チームリーダー・38, 主人公)

(大蔵さん、たまたまそのラウンジで通りかかったけど、いま聞いた話… 完全にアテンションの3ステップ です。先週 川口に教えてもらった アテンションブロック(#030) の仕組みの中身、まさに大蔵さんが20年やってきたこと。)

大蔵

あら、凡田さん、また通りすがり?…で、それを AI で再現したのが Transformer の アテンション機構 ということですわね。私の接客指導カリキュラムが 新人研修の補足教材 として転用できる、と。…ちなみに新人アシスタント2人、いま ぽかんと聞いている ので、技術解説より接客講義を続けてもよろしいですか?

夕方の銀座ホテルラウンジで大蔵が後輩アシスタント2人に接客3ステップを伝授、凡田が偶然通りかかって気づきの表情
このページのまとめ
  • アテンションは、ひとことで言うと 3ステップで動く① どの単語と関連が強いか測る → ② 強さを重みに直す → ③ その重みで単語の意味を混ぜ直す。やっているのはこれだけ。
  • 前記事 アテンションブロック(#030) の「文脈を読む」という働きを、1手ずつの具体動作 に分解した回。コンセプトが実際にどう計算で実現されるかが見える(細かい計算の中身は本文で)。
  • イメージは 「各単語が周りに質問して、答えをもらって自分を更新する」。優秀な接客が相手を見て対応を変えるのと同じ動きが、3ステップで自動的に起きている。

前記事 アテンションブロック(#030) で、アテンションのコンセプトを扱った。本記事はその 動作を3ステップに分解 して、もう一段深掘りする。

3ステップは: ① 関連スコア計算 → ② 重み付け(softmax)→ ③ ベクトル更新。これだけ。ただし各ステップに数学が乗るので、本記事では 「何を計算しているか」 を直感レベルで 掴む。具体的な行列実装(Q/K/V)は続編の「Q/K/V」記事で扱う。

STEP 1: 関連スコアの計算 — ベクトル同士の内積で 「似ている度」 を測る

1つ目のステップは、「モデル」が文中の他の単語それぞれと、どれくらい関連があるか」 を数値化すること。

具体的には 内積(#005) を使う。2つのベクトルの内積が大きい = 2つは似た方向を向いている = 関連が強い

例えば「モデル」のベクトルと「機械学習」のベクトルの内積が 9.2、「モデル」と「を」が 0.3、「モデル」と「訓練する」が 3.5、というような数値が出る。

大蔵の接客で言うと:

「いま田中様に何を提案すべきか」を考える時、表情と過去履歴は重要、窓の景色は無視していい。その重要度の数値化が「関連スコア計算」

STEP 2: 重み付け — スコアをソフトマックスで確率分布に

2つ目のステップは、計算した関連スコア(9.2 / 0.3 / 3.5 …)を 合計1になる重み に変換すること。これに使うのが ソフトマックス関数(サンプリング(#025) 記事内で軽く触れた)。

ソフトマックスを通すと、大きい数値はさらに強調されて、小さい数値はほぼ0に。結果として:

関連スコア(生)     → ソフトマックス後の重み
「機械学習」: 9.2  → 0.85
「を」     : 0.3  → 0.05
「訓練する」: 3.5  → 0.10
合計                = 1.00

これで「モデル」が他の単語をどれくらいの強さで参照するかが 定量的に決まる。重みの合計が1なので、文中の他単語全部から 「100%分の情報」 を分け合って吸収する形になる。

大蔵接客版だと: 「田中様の今日の状態判定」を出すために、表情から85%、過去履歴から10%、窓の景色から5% の情報を吸い上げる、というような重み付け。

STEP 3: ベクトル更新 — 重みで他単語のベクトルを加重平均

3つ目のステップは、計算した重みを使って 他の単語のベクトルを加重平均 し、それを「モデル」の元ベクトルに混ぜて新しいベクトルを作ること。

具体的には:

新「モデル」ベクトル = 0.85 × 「機械学習」ベクトル
                  + 0.05 × 「を」ベクトル
                  + 0.10 × 「訓練する」ベクトル

結果として、新しい「モデル」のベクトルは 「機械学習」の意味成分を85%吸収した形 になる。これが 「機械学習文脈での モデル」 という意味を持つベクトル。

大蔵接客版: 「今日の田中様」の状態判定 = 0.85 × 「(今日の)表情」 + 0.10 × 「(先週の)注文履歴」 + 0.05 × 「窓の景色」。これを統合して「今日はカフェ・モカを提案」と判断が出る。

アテンションの3ステップ図、「モデル」が他の単語との関連スコアを計算し自分のベクトルを更新する

図1: アテンションの3ステップ(前記事 #030 の図を再掲) — 関連スコア → 重み付け → ベクトル更新

3Blue1Brown の言い方 — 「質問と回答」 メタファー

有名な解説者 3Blue1Brown は、アテンションを 「各ベクトルが質問をして、答えをもらう」 という比喩で説明している。

これを上記の3ステップと対応させると:

この 「質問と回答」 を 数学的に実装 したのが、次記事で扱う Q(Query)/K(Key)/V(Value) の3行列。

本記事の3ステップを 行列演算で表現する と、これが自然に出てくる。詳細は「Q/K/V」記事。

登場人物の反応
川口(アナリスト・22)

あ、大蔵さんの 接客3ステップ、アテンションの3ステップに完全に対応してるのは凄いです。実は 2017年の Attention 論文 でも、Vaswani さんたちは「人間がやってることを数式に落としただけ」と書いていて。「優秀な人の暗黙知」 が定量化可能だった という事実が、Transformer 革命の核心だった、というのは大蔵さんの例で本当に腑に落ちます。

赤崎(部長・42)

うーん、つまり当社の 「察しのいい中堅」 の脳内処理 も、この3ステップで言語化できる、ということだね。ふわっとした方向感としては、新人研修で 「①関連度をつける → ②重み付けする → ③統合して判断する」 という3ステップ思考を教えるべきかもしれない。…大蔵くんの接客指導カリキュラム、当社の全社員研修に転用してもいいんじゃないか?

大蔵

あら、部長、その提案でしたら カリキュラム講師料 を 1講演50万円 で承りますわよ。…ちなみに新人アシスタント2人は、いま 銀座カフェの離乳食レベル まで来ました。残り1年で 1秒判定の3ステップ に到達させる予定です。

会議室で川口がアテンション3ステップと接客3ステップの対応を解説、赤崎が研修カリキュラム化を提案、大蔵が講師料を即提示