
2026/03/21 3:23
注意残差(Attention Residuals)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
注意残差(AttnRes) は、Transformer モデルにおける固定重みの残差接続を、すべての前層出力に対するソフトマックス注意機構で置き換え、選択的かつ内容依存の集約を可能にします。完全な AttnRes の定式化は O(L d) のメモリを必要としますが、Block AttnRes は層を N ブロックに分割してメモリ使用量を O(N d) に削減しつつ、ほぼ全てのメリットを保持します。各ブロックは内部で標準残差を用い、注意機構はブロックレベル表現と部分的なインターブロック和に対してのみ適用されます。本論文では
torch.einsum を使用したロジット計算と重み付き合計、および注意および MLP ステージごとの別々の射影と RMSNorm の実装を示す PyTorch 風擬似コードが提供されています。
実験結果は、AttnRes がすべての計算予算でベースラインより一貫して優れていることを示しています。Block AttnRes は 1.25 倍の計算量で訓練されたベースラインと同等の性能を持ちつつ、O(N d) のメモリしか必要としません。下流タスクでは、AttnRes がすべてのカテゴリ(MMLU +1.1、GPQA‑Diamond +7.5、BBH +1.7、TriviaQA +1.9)でベースラインを上回ります。コード生成指標では HumanEval で +3.1、MBPP で +1.9 の改善が見られます。訓練ダイナミクスは AttnRes が PreNorm の希薄化を軽減し、出力の大きさが深さにわたって有限に保たれ、勾配ノルムがより均一に分布することを示しています。
本研究は Kimi Team(Guangyu Chen、Yu Zhang、Jianlin Su、Weixin Xu、Siyuan Pan ら)によって執筆され、2026 年に arXiv (eprint 2603.15031) に公開されました。引用用の
@misc BibTeX エントリとして「Attention Residuals」というタイトルと主クラス cs.CL が提供されています。本文
Paper | arXiv | Overview | Results | Citation
(a) 標準残差(Standard residuals)+均一な加算集計
(b) Full AttnRes:各層がすべての前出力を注目(attend)する
(c) Block AttnRes:レイヤーをブロックに分割し、メモリ使用量を O(L d) から O(N d) に削減
このリポジトリについて
Attention Residuals (AttnRes) は、Transformer の標準残差接続の代替として設計された「ドロップイン」モジュールです。
各層が学習済みで入力依存的な注意機構(attention over depth)を通じて以前の表現を選択的に集約できるようになります。
概要
標準残差接続は、すべてのレイヤー出力を固定係数(単位重み)で加算します。
層が深くなるにつれてこの均一な集計は各レイヤーの寄与を希薄化し、隠れ状態の大きさが無制限に増大するという PreNorm でよく知られる問題を引き起こします。
AttnRes はこの固定集計を、前層出力に対する softmax 注意機構へ置き換えます:
[ \mathbf{h}l ;=;\sum{i=0}^{l-1}\alpha_{i\to l},\mathbf{v}_i ]
ここで重み (\alpha_{i\to l}) は各層ごとに学習された擬似クエリ (\mathbf{w}_l\in\mathbb{R}^d) から計算されます。
これにより、すべての以前の表現に対して内容依存型(content‑aware)で選択的にアクセスできるようになります。
Block AttnRes
Full AttnRes は直感的ですが、大規模化すると O(L d) のメモリを必要とします。
Block AttnRes ではレイヤーを (N) 個のブロックに分割し、各ブロック内は標準残差で集約、注意機構はブロックレベル表現(block‑level representations)のみで行います。
約8つのブロックであれば Full AttnRes のほぼ全ての利点を回復しつつ、実用的なドロップイン置換として余分なオーバーヘッドを最小限に抑えられます。
PyTorch スタイルの擬似コード
def block_attn_res(blocks: list[Tensor], partial_block: Tensor, proj: Linear, norm: RMSNorm) -> Tensor: """ ブロック間注意:ブロック表現 + 部分和を注目する。 blocks : N 個の [B, T, D] テンソル – 以前のブロックの完成済み表現 partial_block : [B, T, D] – 現在のブロック内で途中まで集計したもの (b_n^i) """ V = torch.stack(blocks + [partial_block]) # [N+1, B, T, D] K = norm(V) logits = torch.einsum('d, n b t d -> n b t', proj.weight.squeeze(), K) h = torch.einsum('n b t, n b t d -> b t d', logits.softmax(0), V) return h def forward(self, blocks: list[Tensor], hidden_states: Tensor) \ -> tuple[list[Tensor], Tensor]: partial_block = hidden_states # 自注意機構前のブロック残差 h = block_attn_res(blocks, partial_block, self.attn_res_proj, self.attn_res_norm) # ブロック境界で新しいブロックを開始 if self.layer_number % (self.block_size // 2) == 0: blocks.append(partial_block) partial_block = None # 自注意層 attn_out = self.attn(self.attn_norm(h)) partial_block = partial_block + attn_out if partial_block is not None \ else attn_out # MLP 前のブロック残差 h = block_attn_res(blocks, partial_block, self.mlp_res_proj, self.mlp_res_norm) # MLP 層 mlp_out = self.mlp(self.mlp_norm(h)) partial_block = partial_block + mlp_out return blocks, partial_block
実験結果
スケーリング法則
AttnRes はすべての計算予算においてベースラインよりも一貫して優れた性能を示します。
Block AttnRes は 1.25 倍 の計算量で訓練されたベースラインと同等の損失(loss)を達成します。
下流タスクでの性能
(48B / 3B モデル、1.4T トークン)
| カテゴリ | ベンチマーク | ベースライン | AttnRes |
|---|---|---|---|
| 一般 | MMLU | 73.5 | 74.6 |
| GPQA‑Diamond | 36.9 | 44.4 | |
| BBH | 76.3 | 78.0 | |
| TriviaQA | 69.9 | 71.8 | |
| 数学 & コード | Math | 53.5 | 57.1 |
| HumanEval | 59.1 | 62.2 | |
| MBPP | 72.0 | 73.9 | |
| 中国語 | CMMLU | 82.0 | 82.9 |
| C‑Eval | 79.6 | 82.5 |
AttnRes は全タスクで改善を示し、特に多段階推論(GPQA‑Diamond)で +7.5、コード生成(HumanEval)で +3.1 の最大ゲインを達成しています。
訓練ダイナミクス
AttnRes は PreNorm による希薄化問題を軽減し、層深さにわたって出力の大きさが安定し、勾配ノルムも層間でより均一になります。
引用
お役立ていただけましたら、以下の BibTeX をご利用ください。
@misc{chen2026attnres, title = {Attention Residuals}, author = {Kimi Team and Chen, Guangyu and Zhang, Yu and Su, Jianlin and Xu, Weixin and Pan, Siyuan and Wang, Yaoyu and Wang, Yucheng and Chen, Guanduo and Yin, Bohong and Chen, Yutian and Yan, Junjie and Wei, Ming and Zhang, Y. and Meng, Fanqing and Hong, Chao and Xie, Xiaotong and Liu, Shaowei and Lu, Enzhe and Tai, Yunpeng and Chen, Yanru and Men, Xin and Guo, Haiqing and Charles, Y. and Lu, Haoyu and Sui, Lin and Zhu, Jinguo and Zhou, Zaida and He, Weiran and Huang, Weixiao and Xu, Xinran and Wang, Yuzhi and Lai, Guokun and Du, Yulun and Wu, Yuxin and Yang, Zhilin and Zhou, Xinyu}, year = {2026}, archiveprefix = {arXiv}, eprint = {2603.15031}, primaryclass = {cs.CL} }