Self-Attention 可視化シミュレータ
— QKᵀ/√d・softmax を1手ずつ計算する
Transformerの心臓部 Attention(Q, K, V) = softmax(QKᵀ/√d)V を、 4トークンの小さな行列で1ステップずつ計算します。 「AI」が「medical」に注意を向ける様子がヒートマップで見え、 埋め込みを書き換えると注意の向き先が変わる——Attentionの気持ちが、手で触ってわかります。
② 「love」の行の x₃ を 0→2 に書き換える → loveがmedical・AI側に「引っ越し」、注意の向き先が変わる
③「√dなしと比較」→ 割らないと分布が極端に尖る(飽和する)のを③で見比べてください。これが√dで割る理由です。
トークンの埋め込み X(編集できます)
簡単のため WQ=WK=WV=I とし、Q=K=V=X(d=3)
| x₁ | x₂ | x₃ |
|---|
① スコア S = QKᵀ
トークンどうしの内積=「似ている度」
② スケール S / √d
√3 ≒ 1.732 で割って値を穏やかに
③ softmax(行ごと)= 注意重み A
各行の合計が1の確率に(濃い紫=強い注意)
④ 出力 O = A·V
注意重みでVを混ぜた「文脈入りの表現」
式の全体像(試験内容解説と同じ形)
$$\mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\left(\frac{QK^{T}}{\sqrt{d}}\right)V$$
- Q(Query)……「いま注目している側」のベクトル。K(Key)……「注目される側」の見出し。V(Value)……実際に取り出す中身
- \(QK^{T}\) は全トークン対の内積=類似度の総当たり表(①)
- \(\sqrt{d}\) で割るのは、次元 \(d\) が大きいほど内積が大きくなり、softmaxが飽和して勾配が消えるのを防ぐため(②)
- softmaxを行ごとにかけて、各トークンが「誰をどれだけ見るか」の確率に(③)
- その重みで \(V\) を混ぜ合わせ、文脈を取り込んだ新しい表現を得る(④)
本ツールは理解のために \(Q=K=V=X\)(変換行列を恒等行列)に簡約しています。 実際のTransformerでは \(Q=XW^{Q},\ K=XW^{K},\ V=XW^{V}\) と学習される行列で別々に変換し、 さらにそれを複数並べるMulti-Head Attentionで「複数の観点の注意」を同時に持たせます (MultiHead = Concat(head₁, …, head_h)WO)。
E資格 練習問題
Scaled Dot-Product Attentionで、スコア \(QK^{T}\) を \(\sqrt{d_k}\) で割る主な理由として最も適切なものはどれか。
- 計算量を \(1/\sqrt{d_k}\) に削減するため
- 次元が大きいときに内積の値が大きくなり、softmaxが飽和して勾配が小さくなるのを防ぐため
- 注意重みの合計を1にするため
- Q・K・Vの次元をそろえるため
解答と解説を見る
正解:B
次元 \(d_k\) が大きいと内積のばらつきが大きくなり、softmaxがほぼ0/1に飽和して勾配が流れなくなります。
\(\sqrt{d_k}\) で割ってスコアを穏やかにするのがスケーリングの目的です
(本ツールの「√dなしと比較」で、分布が尖る様子を確認できます)。
Cはsoftmax自体の役割、Aは誤り(計算量は変わらない)、Dも誤りです。
Transformerの全体像(Multi-Head・Positional Encoding・構造)は Transformerの解説ページで、 PyTorch実装の読み解きは E資格コーディング対策コース・レッスン9で深められます。
\ 公式LINE・登録無料 /
友だち追加で4大特典をプレゼント中🎁
E資格ミニ模試(全15問)/覚えておくべき数式チェック49本
医療現場の生成AI安全活用ガイド/医療AI用語事典100