注意機構
注意機構は、各 token のベクトルを他の token に依存させます。入力を Query、Key、Value に投影し、Query と各 Key の縮小内積を softmax で重みに変え、Value を混ぜて文脈に応じた出力を作ります。
一行だけ返す検索ではなく、適合度に応じた値の加重和を返す柔らかい検索です。bank は river の隣なら川岸、savings の隣なら銀行を示しえます。本課は bank の初期値が同じでも、利用できる Key が変わって内容が変わります。
三つの役割と手順
token 行列 X を三種類の投影へ通します。
- Query q:この token は何で問い合わせるか。
- Key k:各 token はどんな特徴で照合されるか。
- Value v:参照されたとき何を渡すか。
一つの Query を各 Key と内積し √dₖ で割ります。大きい値はその投影上の適合で、意味の正しさを保証しません。除数は一般的な尺度仮定で次元に伴う分散を制御し、softmax 飽和の危険を減らしますが、必ず防げるわけではありません。
Key 軸の softmax で和 1 の重みを作り、Value を加重和にします。全 Query を同時に計算すると:
Attention(Q,K,V) = softmax(QKᵀ/√dₖ)V
注意行列の行 i は Query i の Key への配分です。出力はサブレイヤーの結果で、完全な Transformer は出力投影や残差も使い、単純に token を置き換えるとは限りません。
ステップ実行
既定文は by the river bank で、bank の検索を展開します。四次元なので √dₖ = 2 です。
- 入力:四 token に埋め込みがあります。
- 投影:各 Q、K、V を作り、bank の Query は
[2.3,2.3,0,0]。教材では二つの語義の内容語へ応答する設定です。 - スコア:by は
0.92/2 = 0.46、the は 0、river は4.6/2 = 2.3、自身は1.38/2 = 0.69。 - softmax:
[0.46,0,2.3,0.69]は約[0.11,0.07,0.69,0.14]。表示丸めでは合計が厳密な 1 でなくても、実際は river に約 69%、自身に 14%、残りを機能語へ割り振ります。 - 混合:各 Value を重み付きで足し、river が主で、bank は約
[1.43,0.06,0.14,0]。教材上の地理座標が強まります。 - 並列:四 Query を同様に処理して
4×4行列を埋めます。
at the savings bank に変えると、同じ bank 埋め込みに金融側の savings の Value が多く混ざります。bank 行は生スコアから softmax の色へ変わり、太い紫線が主要な参照を示します。ただし出力は混合で、一語だけを選ぶわけではありません。
柔らかい検索と対照
硬い argmax は一行を選び、未選択の近似一致は寄与しません。離散選択は通常の導関数でスコアを学ぶには不向きですが、選ばれた Value 自体には勾配がありえます。すべての勾配がゼロという意味ではありません。柔らかい検索は採点、正規化、混合が微分可能で、投影を誤差から学べます。
選択器は三つの計算を示します。
- Scaled:本課の標準の縮小内積。
- No √dₖ:生内積を使い、本例では分布が鋭くなります。大きい尺度は softmax ヤコビ行列を小さくしえますが、除数を消せば必ず学習停止するわけではありません。
- Uniform:スコアを無視し各
1/4で平均します。Query に応じた選択を失いますが、平均にも入力内容はあり、無情報ではありません。
後二つは明記した対照です。非縮小内積も注意の一形式で、標準尺度を使わないだけで注意ではないとは言えません。
n token、各ヘッド次元 d の明示的なスコア計算は時間 O(n²d)、行列空間 O(n²) で、Value 混合にも乗算が要ります。長文の全対相互作用は高価です。最適化実装は中間保存を減らせますが、ここでは直接形を示します。
境界ケース
- 自己参照:対角も参加し、bank は自身へ約 14% です。
- 行ごとの正規化:各 Query の Key 重みの和は、浮動小数点と表示丸めを除き 1 です。
- 非対称:bank→river と river→bank は Q/K が異なり、同値である必要はありません。
- 順序:本課は位置やマスクなしです。token とベクトルを一緒に並べ替えると出力も並べ替わる、置換同変な計算です。実モデルは加算位置、相対位置、Q/K の回転などで位置を扱います。
よくある間違い
- Q、K、V を同じベクトルと見る。別の投影で、自 Query が自 Key に最も合うとも限りません。
- softmax の軸を誤る。各 Query の Key 軸で正規化します。
√dₖを丸めの都合と思う、または飽和を必ず防ぐと考える。効果はスコア尺度に依存します。- 行列を逆に読む。行は問い合わせ元、列は照合先 Key です。
モデルの範囲
実際の縮小内積式を四次元・単一ヘッド・手設定の投影と埋め込みで計算し、bank→river/savings を見せます。学習や位置機構はありません。実際のモデル次元、ヘッド次元、数、深さはさまざまで、投影を学び位置やマスクを組み合わせます。本課の名前付き意味座標が実埋め込みにも必ずあるわけではありません。
続けて学ぶ
同じ手法につながるレッスンや、次の概念への入口です。
鍵マークのあるレッスンの操作には有料アクセスが必要です。解説はすべて無料で読めます。
誤りや気になる点を見つけましたか? フィードバックを送る。