スケールドドット積アテンション すけーるどどっとせきあてんしょん
Scaled Dot-Product AttentionQueryKeyValuesoftmaxアテンション
スケールドドット積アテンションについて教えて
簡単に言うとこんな感じ!
「この単語と、文中の他のどの単語が一番関係が深い?」を数値で計算する仕組みだよ!「スケールド」は計算値が大きくなりすぎないよう調整することで、「ドット積」は単語ベクトル同士を掛け合わせる操作のこと。Transformerの心臓部なんだ!
スケールドドット積アテンションとは
スケールドドット積アテンション(Scaled Dot-Product Attention) とは、Query(Q)・Key(K)・Value(V)の3つのベクトルを用いて、各トークンが他のトークンにどれだけ「注目」すべきかを計算する仕組みです。マルチヘッドアテンションの各ヘッドで使われる基本演算で、2017年の「Attention Is All You Need」論文で提案されました。
計算ステップは①QとKの内積(ドット積)でスコア算出、②スコアを√d_kで割ってスケール調整、③Softmaxで確率分布に変換、④Vとの加重平均で出力生成、という流れです。「スケール」処理がなければ次元数が大きいときにSoftmaxが極端な値になり学習が不安定になるため、この除算は重要です。
計算式とステップ
Attention(Q, K, V) = softmax( Q・Kᵀ / √d_k ) ・ V
ステップ解説:
1. Q・Kᵀ → 各トークン間の「関連度スコア」行列
2. / √d_k → スコアを次元数の平方根でスケール調整
3. softmax(...) → 合計が1になる確率分布(アテンション重み)に変換
4. × V → 重みに従ってValueを加重平均し出力
例)「彼女はリンゴを食べた」
「食べた」のQueryは「彼女」のKeyと高いスコア → 主語関係を学習
歴史と背景
- 2015年:BahdanauのAttention機構が登場(RNNベース)
- 2017年:Google「Attention Is All You Need」でスケールドドット積アテンションを定式化
- 2018年以降:BERT・GPTで実用化、NLP精度が飛躍的に向上
- 2022年以降:Flash Attentionなど効率化実装が登場し長文対応が進化
マスクアテンションとの違い
| 種類 | マスク | 用途 |
|---|---|---|
| 全結合アテンション | なし | エンコーダーの自己アテンション |
| 因果マスクアテンション | 未来トークンをマスク | デコーダーの自己アテンション(GPT等) |
| パディングマスク | 空白トークンをマスク | バッチ処理時の余白除去 |
関連用語
- マルチヘッドアテンション — スケールドドット積アテンションを複数並列に使う機構
- クロスアテンション — Q・K・Vを異なる入力から取るアテンションの変形
- Flash Attention — このアテンション計算を高速・省メモリで行う実装
- Sparse Attention — 全トークン間の計算を削減するアテンション
- KVキャッシュ — K・Vをキャッシュして推論を高速化する技術