Zhangzhe's Blog

The projection of my life.

0%

Gated Delta Networks: Improving Mamba2 with Delta Rule

URL

TL;DR

  • 本文提出一种名为 GatedDeltaNet 的神经网络架构,其类型属于状态空间模型 SSM,属于 Mamba2 的改进版本

Algorithms

核心公式

  • 状态更新公式

St=St1(αt(IβtktktT))+βtvtktTS_t=S_{t-1}(\alpha_t(I-\beta_tk_tk_t^T)) + \beta_tv_tk_t^T

  • 输出公式

ot=qtTSto_t = q_t^T S_t

  • 其中:
    • tt:序列位置,0t<L0 \leq t < LLL 为序列长度,之后统称为时间步
    • qtRdq_t\in \mathbb{R}^d:时间步 t 的查询向量
    • ktRdk_t\in \mathbb{R}^d:时间步 t 的键向量
    • vtRdv_t\in \mathbb{R}^d:时间步 t 的值向量
    • StRd×dS_t\in \mathbb{R}^{d \times d}:时间步 t 的状态矩阵,存储的是历史键值相关性矩阵
    • αtR\alpha_t\in \mathbb{R}:时间步 t 的遗忘因子,0<αt10 < \alpha_t \leq 1,控制历史信息的遗忘程度
    • βtR\beta_t\in \mathbb{R}:时间步 t 的更新因子,0βt<10 \leq \beta_t < 1,控制当前信息的更新程度
  • 对比 Mamba2 的状态更新公式

St=αtSt1+vtktTS_t = \alpha_t S_{t-1}+ v_t k_t^T

SSM 结构的优势

  • transformer 的自注意力矩阵是 SRL×LS \in \mathbb{R}^{L \times L},计算和存储成本为 O(L2)O(L^2),其中 LL 是序列长度
  • SSM 的状态矩阵是 SRL×d×dS \in \mathbb{R}^{L\times d \times d},由于 dLd \ll L,计算和存储成本为 O(L)O(L),大大降低了计算复杂度

分块加速

  • 作者对 GatedDeltaNet 的实现做了数学等价的分块加速,repo 名就是 flash-linear-attention
  • 类似 attentionflash-attention 的关系

关于 GatedDeltaNetRWKV-7 两位作者互撕的一些看法

  • 背景:https://zhuanlan.zhihu.com/p/1915054612559426430
  • 省流版本:
    • GatedDeltaNet 的作者 Songlin Yang 在自己的论文中,把 RWKV-7 的表现压的很低,比原论文低很多,然后 RWKV-7 原作者 Peng Bo 质疑 GatedDeltaNet 对比实验中对 RWKV-7 的实现有问题
    • GatedDeltaNet 作者 Songlin Yang 在微信群怒喷 RWKV-7 作者 Peng Bo,让其要么给自己的 fla RepoPR 修复实现,要么闭嘴,随后还将其踢出微信群
  • 个人看法:
    • 对于论文中引用别人论文做 baseline 常出现的无意的有意压低表现的情况,算是行业通病了,但被指出来立正挨打就完了,作者竟然还怒喷对方,要求其帮自己修复实现,合着你发论文,bug 我帮你修?实验我帮你做?这是什么逻辑
    • 虽然 fla 在社区有一些影响力,也有 3.3kstar,但其显然还不是唯一主流的实现库(像 PytorchTransformers 这种级别),写论文必须用 fla 显然不是行业共识,不能要求原作者必须用 fla 去实现自己的算法(who think you are),竟然还要求要么给 PR,要么就把把自己 flaRWKV-7 相关实现全删了。原作者也开源了自己的实现库,这个库可以完全复现论文结果,这一点想必 GatedDeltaNet 作者也清楚
    • 虽然 GatedDeltaNet 能被 Qwen3-Next 这种大模型用上,说明含金量还是有的,但作者的这种行为,实在让人不齿,世界就是一个大的回旋镖,不能等回旋镖打到自己身上才喊疼