【すぱーすあてんしょん】

スパースアテンション とは?

最終更新:
💡 参照する組み合わせを絞って、長い入力を扱う

アテンションで参照するトークンの組み合わせを一部に絞り、計算やメモリ使用を減らす手法。近傍や全体をつなぐ特別なトークンなどを使う方式があり、削減量や品質は選び方と実装によって異なる。

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

参考資料

← 用語集にもどる