【すぱーすあてんしょん】
スパースアテンション とは?
最終更新:
💡 参照する組み合わせを絞って、長い入力を扱う
アテンションで参照するトークンの組み合わせを一部に絞り、計算やメモリ使用を減らす手法。近傍や全体をつなぐ特別なトークンなどを使う方式があり、削減量や品質は選び方と実装によって異なる。
📌 このページのポイント
- すべてのトークン同士を参照する密な方式から参照先を絞る
- 近傍・全体をつなぐトークン・ランダムな参照などを組み合わせる
- 計算量の増え方は参照パターンによって異なる
- 品質や実際の速度は課題・参照先・実装で検証する
長い文章だとアテンションの計算が増えるの?
すべてのトークン同士を参照する密なアテンションでは、長さnに対して組み合わせが概ねn²になるよ。例えば100から1000トークンになると、組み合わせは約100倍。モデル全体の計算量の話とは区別してね。
スパースアテンションはどう減らすの?
参照する組み合わせを一部に絞るんだ。例えば近くのトークンだけを見る局所的な参照と、広い範囲をつなぐグローバルな参照を組み合わせる。必ず重要な相手だけを選べるわけではないよ。
LongformerやBigBirdもその方法?
Longformerは局所的な窓とグローバルな参照を組み合わせるよ。BigBirdはそれにランダムな参照も組み合わせる。どのつながりを残すかが、情報の伝わり方や計算量に影響するんだ。
計算量は必ず同じになるの?
方式によるよ。例えば局所窓の幅とグローバルトークンの数を一定に保つ方式なら、参照数は入力長に対して線形に増える。ただし、参照範囲を入力と一緒に広げれば増え方も変わるし、参照数だけで実際の速度は決まらないんだ。
省いても精度は落ちないの?
保証はないよ。省いた参照が必要な課題では品質に影響し得る。遠く離れた情報を結び付ける必要もあるので、参照パターンと課題に合わせて結果を検証するんだ。
FlashAttentionとは何が違うの?
FlashAttentionの基本方式は密なアテンションを正確に計算しながら、メモリとの読み書きを減らす工夫だよ。スパースアテンションは参照する組み合わせ自体を絞る。両方を組み合わせる実装もあるので、何を減らしているかを見ると分かりやすいね。
まとめ:ざっくりこれだけ覚えればOK!
「スパースアテンション」って出てきたら「全トークンではなく一部だけ注目して計算を省くアテンションの工夫」と思えればだいたいOK!
📖 おまけ:英語の意味
「Sparse Attention」 = 疎なアテンション
💬 Sparseは「まばらな・疎な」という意味だよ。全組み合わせのうち使わない参照を作ることで、アテンションの行列を疎にする。大切な情報を必ず自動で見抜く、という意味ではないんだ。