Is SwiGLU's Open Positive Tail Necessary? Evidence from Closed-Tail Gating with MemGLU
Yuting Ge, Pengju Yang, Mingkai Nie
cs.LG
2026-08-07
把 SwiGLU 换成两侧归零的有界门控 MemGLU 做成对预训练,9M 时好 0.111%、30M 时差 0.122%,开正尾在测试规模上并非必需,模型会适应训练时可用的门控几何。
SwiGLU 是 LLaMA、Qwen、PaLM 这一代模型的 FFN 标配:门函数 φ(g) = gσ(g) 逐元素乘在价值通路上,决定每个通道放行多少。这个函数有一个被整体打包继承的几何性质:g 很大且为正时,σ(g) 趋近 1,输出近似等于 g 本身,随输入线性增长、没有上界,这就是「开正尾」。所有采用 SwiGLU 的模型默认带上了这个形状,但「大家都用」从来不构成「必须得有」的证据。这篇论文把问题收窄成一句话:把这条尾巴关死,语言模型还能不能训到同样的损失?
核心是一个受控替换实验。MemGLU 的门函数是 φ(g) = c₀·tanh(g)·sech(g):奇对称、有界,在 |g| = arsinh(1) 处到达峰值 1/2,往两侧都衰减到零。sech(g) = 1/cosh(g) 随 |g| 指数衰减,所以这是一个「中间放行、两端关闭」的带通门,与 SiLU 的「正方向无限放行」构成干净对照。
两个设计决定实验的干净程度:
训练严格配对:每对模型共享初始权重、数据顺序、token 预算与优化器设置(AdamW,lr 3×10⁻⁴),各跑 3 个种子。9M 模型(6 层,dmodel 192)喂 5000 万 token,30M 模型(10 层,dmodel 384)喂约 5 亿 token。
门形状的出处是忆阻器:一阶忆阻器模型两条电压分支的归一化反对称分离恰为 ξ√(1−ξ²),代入 ξ = tanh(g) 得到 tanh(g)sech(g)。这层推导更接近给形状找一个物理出处,数学上它与 2016 年的 ReSech 激活(x·sech(x))同族,论文在相关工作里自己也承认了这一点。真正起作用的是形状性质,不是器件物理。
主指标是验证集 NLL,越低越好:
| 规模 | 门控 | 验证 NLL(3 种子均值) | 相对差 | 配对胜场 |
| 9M | SwiGLU | 5.7267 ± 0.0077 | 基准 | – |
| 9M | MemGLU(RMS 匹配) | 5.7203 ± 0.0024 | −0.111% | 3/3 |
| 30M | SwiGLU | 3.5540 ± 0.0002 | 基准 | – |
| 30M | MemGLU(RMS 匹配) | 3.5583 ± 0.0038 | +0.122% | 0/3 |
9M 时闭合尾反而三种子全胜,30M 时一致小输,符号翻转,幅度都压在 0.1% 量级。0/3 说明 30M 的差距方向一致、不是噪声,但 0.1% 的量级撑不起「开尾是 SwiGLU 有效的关键」这类结论。
干预实验补上另一半证据。对训好的 SwiGLU 检查点只在评估时动它的正尾:
| 干预方式 | 9M ΔNLL | 30M ΔNLL |
| 封顶(峰值处截断) | +0.032 | +0.122 |
| 平滑衰减 | +0.093 | +0.303 |
| 硬移除 | +0.403 | +0.960 |
训好的 SwiGLU 确实在用它的正尾,动得越狠损失越差,规模越大依赖越重,30M 上硬移除的代价接近 1 个 NLL。
机制诊断解释了这对矛盾如何共存。MemGLU 模型并没有绕开峰值后的下降区,9M 时进入该区域的输入占比反而从 2.688% 升到 5.230%(30M 从 5.002% 降到 3.954%),但该区域贡献的激活能量份额大幅缩水:30M 上门输出能量份额从 50.857% 掉到 8.209%,GLU 乘积从 54.921% 掉到 8.573%。论文称之为「占用–能量解耦」:区域照样被访问,只是能量预算不再压在那里。还有一个细节:c₀ 只在初始化时匹配幅度,训完之后 MemGLU 的门输出 RMS 只有 SwiGLU 的 0.83(9M)/0.76(30M),优化过程自己把激活幅度压小了。
结论落点:损失相近,用法完全不同。从头训练时,优化围绕手头的门形状组织 FFN 的使用方式;门几何塑造的是「怎么用」,不是「用得好不好」。
架构组件靠默认继承传播,很少被这样单独拆出来检验。SwiGLU 自 2020 年提出后被 PaLM、LLaMA、Qwen 整体采纳,开正尾作为形状的一部分被一并带走,这篇给了它一个干净反例:性质几乎相反的门,从头训出来的损失一样。
对做架构搜索的人有一条直接提醒:在几千万参数规模上靠预训练损失挑激活函数,0.1% 量级、跨规模符号翻转的差异挑不出结论。要判断一个组件是否必需,得把「训练时的可塑性」和「训练后的依赖」拆开测,这篇恰好演示了两者可以同时成立。
对忆阻器与器件启发计算方向,这是少见的把器件几何一路推到语言模型预训练的工作,尽管功能层面器件叙事并非必要。