Cumulative-Goodness Free-Riding in Forward-Forward Networks: Real, Repairable, but Not Accuracy-Dominant¶
会议: NeurIPS2026
arXiv: 2605.06240
代码: https://github.com/amirhossein-yousefi/ff-free-riding
领域: 优化/理论
关键词: Forward-Forward、累积 goodness、梯度衰减、局部学习、分离度与准确率解耦
一句话总结¶
本文证明累积 goodness 会在上游已分离样本上精确衰减深层块的局部判别梯度,并用去历史、难度门控和梯度补偿修复层健康,却发现修复没有成为准确率的主导收益来源,MGC 甚至使 CIFAR-100 的 Stage-1 单裁剪准确率下降 1.05 个百分点。
研究背景与动机¶
Forward-Forward(FF)用正、负样本的局部 goodness 判别目标训练各层或各块,避免端到端的跨块反向传播;块内部仍可使用梯度下降。累积 goodness 变体把前面块的得分加入当前块的训练目标,初衷是共享已经形成的判别证据。问题在于,当前块的低损失可能并非来自它自己学会了区分类别,而只是继承了上游的正 margin:前面已经解决的样本,会让后面块看到几乎饱和的 softplus 目标。
因此,深层块“搭便车”是一个合理的优化诊断,但不能直接推出它就是 FF 落后于反向传播(BP)的主要原因。如果修复只改变证据分配,而最终分类器仍把所有块的标量 goodness 相加,那么更健康的深层块未必增加总分的分类能力。还必须区分三件事:局部梯度是否受抑制、块自身分离度是否恢复、部署读出的准确率是否提高;只看其中一个指标容易把机制证据误当作性能证据。
本文沿着这条因果链做分析和控制实验,而不是包装一个新的准确率冠军。核心 idea:先精确刻画累积 margin 对局部判别梯度的抑制,再用不同修复方式干预它,分别测量层健康、原生 FF 读出和冻结特征探针,以检验“修好深层块就能缩小准确率差距”的假设。
方法详解¶
整体框架¶
输入是图像及候选类别,正样本使用正确类别,负样本包括错误类别(NL)与错误图像(NI)。Stage 1 同时训练多个块,但每个块只应用自身损失产生的参数更新:上游 token 与 goodness 在进入当前块目标前停止梯度。测试时枚举候选类别,将各块当前 goodness 不加权求和,选择总分最大的类别;训练历史权重不进入这个推理求和规则。
默认骨干由卷积 stem、patch embedding 和 4 个 FF Hybrid Blocks 构成,每块包含带 RoPE 的自注意力、前馈网络、注意力池化与多方面 goodness 头。CIFAR-10 大模型使用 32 个专家、top-4 路由;承载主要因果结论的 CIFAR-100 模型则是 4 块、宽度 256 的稠密网络,无 MoE、无 SAM。goodness 头的四个槽位是原型对齐、激活能量、注意力尖锐度与学习式得分;默认关闭 memory 时,注意力尖锐度槽位恒为零,实际只有三个有效方面。
论文在同一块局部训练框架内比较历史规则及局部辅助项,并用精确的梯度比例解释差异。Stage 2 冻结 Stage-1 骨干,另训练一个注意力读出头,通常不超过 20 个 epoch;这是表示质量探针,不是原生 FF 算法,也不是重新训练骨干。下图中虚线表示机制选择或训练监督,实线表示模型产物与读出关系,不能把几种修复理解为必须顺序叠加的组件。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["图像与正负类别"] --> B["局部梯度诊断"]
B -. "可选历史规则或辅助项" .-> C["启发式局部修复"]
B -. "替代深度辅助项" .-> D["缺失梯度补偿"]
C -. "自身损失监督" .-> E["Stage 1 块局部训练<br/>上游停止梯度"]
D -. "自身损失监督" .-> E
E --> F["双读出检验<br/>S1 goodness 求和<br/>S2 冻结特征注意力探针"]
F --> G["分别报告层健康与准确率"]
关键设计¶
1. 局部梯度诊断:识别“继承成功”如何削弱当前块的学习压力
对一个正负样本对,当前块 margin 是它自己的正 goodness 减去负 goodness,记作 \(m\);上游所有块的 margin 直接求和得到 \(P\)。累积目标使用 \(M=m+\gamma P\),这里是对所有前序块施加同一个历史权重,不是按深度递归衰减的几何加权。softplus 判别损失为 \(\ell_\beta(u)=\log(1+e^{-\beta u})\)。由于 \(P\) 对当前块参数 \(\theta_d\) 已停止梯度,链式法则给出逐样本、逐负样本流的精确关系:
当 \(m\geq0\)、\(P\geq0\)、\(\gamma\geq0\) 时,比例处于 \(e^{-\beta\gamma P}\) 与 \(\min\{1,2e^{-\beta\gamma P}\}\) 之间,因此正的上游 margin 越大,当前块从累积判别项获得的梯度越弱。若 \(P<0\),比例可以超过 1,此时上游失败反而放大梯度。定理不是“所有深层梯度都会衰减”的断言:它只覆盖该逐样本判别项,不覆盖包含重建、对比学习等项的总更新,也不排除 batch 内梯度抵消,更不证明全局收敛。
为避免把一个饱和损失当作成功,作者同时观察梯度与分离度。free-riding 指数定义为 \(\mathcal{F}_d=\mathbb{E}[1-\min\{1,R_d\}]\),把负上游 margin 导致的放大截断掉,接近 1 表示严重抑制。在 CIFAR-10 的机制检查中,累积设置的块 1–3 指数为 0.930/0.952/0.955;这不是判别错误率。
另两个容易混淆的量必须分开:\(\mathrm{sep}^{\mathrm{cur}}_{\mathrm{nl}}(d)=\mathbb{E}[m^{(d)}]\) 是当前块自己的错误类别 margin,单位是无界的 goodness margin;\(\mathrm{sep}_{\mathrm{nl}}(d)=\Pr[M_\gamma^{(d)}>0]\) 是累积目标分离正负样本的比例,范围为 \([0,1]\)。错误类别来自难负样本挖掘;这些分离度记录在 Stage-1 训练 batch 上,不是全类别测试准确率。DS 是只用块 0 到当前深度的准确率除以完整模型准确率;LC 则是在 Stage 1 结束时,用无历史权重的推理 margin 计算的平均 barrier loss。低 LC 必须结合低自身分离度才能支持搭便车诊断。
2. 启发式局部修复:减少继承,或让深层块直接处理未解决样本
最直接的干预是设 \(\gamma=0\):训练目标不再包含历史 margin,因而上述比例恒为 1。它消除了特定的累积衰减机制,但没有禁止其他深度退化,也不要求推理时放弃多块求和。难度门控则保留可选择的历史共享,对同一个输入的上游 goodness 总和使用 \(\gamma_0\sigma(\tau(\kappa-\sum_{j<d}g^{(j)}))\):上游得分高时减少继承,得分低时最多继承 \(\gamma_0\)。这个门控依据 goodness,而不是定理中的正负 margin \(P\);两者不能混作同一个难度变量。
第三种方式是在累积目标外加入只看当前块的辅助损失,系数随深度增大。四块设置中,\(\lambda_0=0.25\)、\(\rho=3.0\) 给出 0.25/0.50/0.75/1.00 的深度系数;较深的块因此获得更强的直接判别项。它还通过上游 residual margin 对样本重新加权,强调前面没解决的样本:
权重分别在 NL 与 NI 流中计算,停止梯度、不做裁剪,块 0 不使用 residual 权重。\(\epsilon=0\) 时权重 batch 均值严格为 1,实施中的 \(\epsilon=10^{-6}\) 使它近似为 1;这保持权重的平均尺度,不能理解为重新加权后的实际损失数值与未加权损失相等。
对尚未解决的样本 \(m\leq0\),判别子目标的 margin 梯度幅值至少为 \(\lambda_{\mathrm{curr}}(d)w_i^{(d)}\beta/2\)。这个下界仍依赖个体 residual 权重,而权重可以非常小,所以没有统一的 batch 级正下界;要转成参数梯度下界,还需当前 margin 的参数 Jacobian 非退化,并排除其他项的抵消。更重要的是,后续控制表明该辅助项在某些配方里也参与深层分离度塌缩,不能把“有梯度下界”直接等同于“训练必然更健康”。
3. 缺失梯度补偿:补齐局部判别项,但不宣称恢复完整训练梯度
MGC(missing-gradient compensation)从比例 \(R\) 出发:累积项只提供局部梯度的一部分,就另外注入缺失部分,而不是机械提高深层损失系数。令 \(s(u)=\sigma(-\beta u)\),实现采用下式,并停止补偿系数的梯度:
在理想条件 \(\gamma P\geq0\)、\(\epsilon=0\) 下,\(R\leq1\),累积项和补偿项的 margin 梯度相加,正好得到局部目标的幅值 \(\beta s(m)\);batch 平均损失还带有 \(1/B\)。停止系数梯度很关键,否则求导会额外经过 \(R\),不再是这个缺失量相加的关系。MGC 不再给局部补偿乘 residual 权重,因为那会把“强调未解决样本”和“抵消衰减”混在一起。
实际训练使用 \(\epsilon=10^{-6}\),比例被略低估,可能轻微过补偿;正部截断防止在历史本已放大梯度时增加负的补偿项。因此论文只主张近似补偿梯度包络,而非精确恢复整个块的梯度,更非复现 \(\gamma=0\) 网络的训练轨迹。MGC 替换原来的深度辅助项,而不是简单叠加;块 0 没有历史,实现跳过补偿,所以它也失去了原有的 0.25 辅助项。
这使 MGC 与累积基线同时存在“移除辅助项”和“增加补偿”两个变化。CIFAR-10 附录专门把它们拆开:无辅助项但不补偿的累积模型已经获得约 92% 的最深块分离度增益,补偿只贡献剩下约 8%。这组控制提醒读者,理论构造成立,并不意味着全部经验改善都由该理论机制产生。
4. 双读出检验:把块健康、证据分配与最终分类区分开
原生 Stage-1 预测始终使用 \(\hat y=\arg\max_y\sum_d g^{(d)}(x,y)\)。如果某一类在块 \(a\) 加上任意 \(q(x,y)\),同时在块 \(b\) 减去同一个量,那么每类总分不变,预测也严格不变;与此同时,这两个块的自身 margin 可以大幅变化。这是固定得分的算术重分配不变性,不是重新训练后网络等价的定理。
论文的真实重训练会改变大量预测:CIFAR-100 三种历史规则在 S2-TTA 下相互约有 13% 的预测不同,MGC 与累积模型在不同协议下有 22.7–26.2% 的预测不同。准确率接近意味着纠正和新增错误大致抵消,不意味着模型学到了同样的表示。Stage-2 注意力头和拟合的结构化 goodness 读出用于检查这种接近是否只是简单求和的特殊现象,但它们的结果仍是经验事实。
读出边界也不能略去:附录中 block-3-only goodness 的 logistic 探针在三种历史规则间跨度为 8.40 个百分点,原始 goodness 的 10-NN 跨度为 8.58 个百分点。因此“不主导准确率”的结论限定于部署规则和测试过的结构化读出,而不是所有能从特征提取信息的分类器。
损失函数 / 训练策略¶
总体块损失还包含各 goodness 方面的损失、累积判别、当前块辅助项、深度顺序项、监督对比学习、token 重建及 MoE 路由正则。梯度衰减定理只分析其中的累积判别项。深度顺序项在实现中比较当前块的累积 loss score 与前一块自身 goodness;附录的理想硬约束命题比较连续累积序列,两者不是同一个约束,不能用后者为实际训练保证单调 margin 增长。
难负样本挖掘由 EMA teacher 从采样的错误类别中选最高 goodness 的候选。候选类别有放回采样,CIFAR-10 的 8→16 是抽取次数而非不同类别数。NL 和 NI 判别流按权重混合,默认各占 0.5;两种修复都不通过历史项更新上游参数。
主要 CIFAR-100 对照是稠密 L4/D256、batch 256、362+20 epoch、3 个种子,三种历史规则共用深度辅助项,MGC 替换它。CIFAR-10 L4/D128 的 MGC 控制为 180+10 epoch、SAM 开启、每组 3 个种子;较大的 CIFAR-10 准确率标定使用 MoE 配方,不能把不同规模的数值拼作同一个控制实验。
局部性审计还揭示一个实现细节:报告运行的深度顺序项曾对前一块混合 logits 生成非零梯度,但优化器在应用前清除了它,所以实际更新仍是块局部。发布实现把这条路径也放进停止梯度上下文;作者的小规模检查得到参数逐位相同。这里应准确描述“应用更新局部”,而非声称所有历史实现的计算图从未出现跨块梯度。
实验关键数据¶
主实验¶
下表来自原文表 3,是最重要的 CIFAR-100 控制。sep 是 Stage 1 最后一个 epoch 的最深块自身错误类别 margin;准确率来自验证集选出的 EMA checkpoint,不能把 sep 的测量时点误写成选中 checkpoint 的测量。准确率单位为 %,\(\pm\) 为 3 个种子的样本标准差;TTA 是水平翻转测试时增强。
| 历史规则 / 目标 | sep(L3) | S1 单裁剪 | S1-TTA | S2 单裁剪(探针) | S2-TTA(探针) |
|---|---|---|---|---|---|
| 累积,\(\gamma=0.7\) | \(0.96\pm0.01\) | \(66.78\pm0.28\) | \(67.41\pm0.35\) | \(68.51\pm0.51\) | \(68.96\pm0.43\) |
| 无历史,\(\gamma=0\) | \(4.78\pm0.02\) | \(66.37\pm0.20\) | \(66.93\pm0.14\) | \(68.54\pm0.25\) | \(69.23\pm0.34\) |
| 难度门控,\(\kappa=0\) | \(1.71\pm0.01\) | \(66.35\pm0.41\) | \(67.35\pm0.66\) | \(68.44\pm0.51\) | \(69.07\pm0.61\) |
| MGC | \(5.61\pm0.04\) | \(65.73\pm0.35\) | \(66.58\pm0.25\) | \(68.24\pm0.51\) | \(69.09\pm0.27\) |
无历史和门控三组比较的四种协议配对 95% CI 均在 \(\pm1\) 个百分点内,但这不等于无差异:无历史相对累积的 S1 配对差为 −0.42,CI 为 [−0.76, −0.07],小幅负效应仍可统计检出。展示均值四舍五入后相减可能与原文未四舍五入的配对差相差 0.01,笔记保留原文配对结果。
MGC 把最深块 sep 从 0.96 提升到 5.61,约为 5.9 倍,但 S1 配对差为 −1.05 个百分点,95% CI [−1.46, −0.62];S1-TTA 为 −0.83,[−1.23, −0.42]。两种 CI 都未完全落在 \(\pm1\) 范围内,不能笼统称作“所有修复准确率都在 1 个百分点内”。S2 和 S2-TTA 差分别为 −0.27,[−0.68, +0.14],以及 +0.13,[−0.27, +0.53],支持冻结特征探针恢复了该准确率代价,而非证明纯 FF 恢复。
这些 bootstrap CI 使用匹配种子的测试预测,条件于已训练 checkpoint;它们不是对所有可能训练运行给出的泛化保证。三组历史规则里 5/9 运行曾恢复训练,MGC 的一个种子也曾恢复,作者分别披露了日志范围与续训限制。
消融实验¶
下面来自附录表 6,专门检查 MGC 增益的归因。四组都保持 \(\gamma=0.7\)、CIFAR-10 L4/D128、SAM 开启、180+10 epoch、3 个种子;准确率为 %,sep 仍是最后 epoch 的自身 margin。
| 配置 | sep(L3) | S1 单裁剪 | S2-TTA(探针) | 解释 |
|---|---|---|---|---|
| 累积 + 深度辅助项 | \(0.75\pm0.01\) | \(85.74\pm0.37\) | \(87.04\pm0.51\) | 与 MGC 匹配 SAM 的基线 |
| 累积,无辅助项、无补偿 | \(4.88\pm0.05\) | \(85.31\pm0.10\) | \(86.90\pm0.22\) | 移除辅助项本身贡献大部分增益 |
| MGC | \(5.25\pm0.05\) | \(85.45\pm0.37\) | \(87.27\pm0.29\) | 补偿替代辅助项 |
| MGC + 保留块 0 辅助项 | \(5.28\pm0.03\) | \(85.32\pm0.19\) | \(86.93\pm0.09\) | 没有发现块 0 改动掩盖准确率收益 |
从基线到 MGC 的 sep 增益为 4.50,其中移除辅助项贡献 4.13(约 92%),补偿的额外增益为 0.37(约 8%)。作者预先记录的“无辅助项累积组应低于 4.72”预测失败;笔记不把这组结果写成验证了补偿主导的故事。
无辅助项组与有辅助项组分别在不同 GPU/软件栈运行,移除辅助项的对比与硬件栈完全混杂;因此 92%/8% 是作者在这组结果上的经验分解,不是排除所有混杂的普适因果比例。CIFAR-100 没有相同的移除辅助项控制,不能直接套用这个比例解释它的 MGC 结果。
作为效应大小标定,原文表 2 另给出以下 CIFAR-10 对照。前四行是 3 种子均值,最后一行只有种子 42;FF 与 BP-strong 的强增强配方并不完全一致,表格不是严格匹配增强的 FF/BP 算法比较。
| 骨干 | 训练 / 增强 | 单裁剪测试准确率(%) |
|---|---|---|
| 普通 CNN,1.15 M 参数 | BP / strong | \(90.08\pm0.28\) |
| 普通 CNN,1.15 M 参数 | FF / FF-pipeline | \(29.85\pm0.50\) |
| 精简 FF 骨干,5.54 M 参数 | BP / weak | \(87.43\pm0.62\) |
| 精简 FF 骨干,5.54 M 参数 | BP / BP-strong | \(93.85\pm0.18\) |
| 精简 FF 骨干,6.74 M 参数 | FF / FF-pipeline | 89.03 |
关键发现¶
- 机制真实,但不是万能解释:平方 hinge 复现中,无历史把最深块 sep 从 1.67 提到 4.44,S2-TTA 却从 87.08% 变为 86.93%;这扩展了 barrier 范围,没有扩展到所有 goodness 统计。
- 深度放大健康差异,不自动放大准确率收益:CIFAR-10 L8/D128 的匹配种子 42,门控 sep 为 6.94,LCFF 为 0.15,S2-TTA 仅为 86.84% 对 86.79%。三种子门控均值 87.12% 不能冒充该匹配单种子比较。
- 历史衰减之外还有深度问题:Tiny ImageNet 无历史模型的自身 sep 在块 1 达峰后下降,逐深度准确率仍上升;三种子 S1 单裁剪为 \(48.54\pm0.19\%\),S2-TTA 为 \(52.32\pm0.34\%\),二者还同时改变读出与 TTA。
- 配方标定比局部修复更大:普通 CNN 的 FF 与 BP 差距约 60.2 个百分点;精简骨干上的 BP 强弱增强差为 6.42 个百分点。这些是特定流水线的效应大小,不是证明架构或增强具有独立、可相加的贡献。
亮点与洞察¶
- 把诊断与目标指标分离:低累积 loss 可能掩盖很弱的自身判别,精确比例与自身 margin 给出了不同视角。最终仍以明确读出协议的准确率判断修复是否有用,避免用健康代理指标替换任务结果。
- 负结果有可检验机制:论文不是只说“没提升”,而是证明一条局部梯度关系并主动干预。MGC 和移除辅助项控制进一步迫使作者缩小经验归因,这比把每次 sep 上升都归功于补偿更有价值。
- 读出是研究对象而非附属步骤:同样的准确率可以伴随大量预测变化,说明表示和错误分布都在变。后续工作值得研究互补信息如何被读取,但已有拟合 goodness 权重实验并未产生大的组间准确率分离。
局限与展望¶
- 定理仅刻画停止上游梯度后的局部 surrogate,不提供全局收敛、样本复杂度或泛化界;实际总梯度还受 Jacobian、辅助项与样本抵消影响。
- 负结果覆盖 softplus、一个小规模平方 hinge 复现以及本文的 goodness 头、骨干和数据集;未测试 ImageNet 规模、经典 FF 架构或显著不同的局部目标。
- Stage 2 是反向传播训练的冻结特征探针,不能作为纯 FF 准确率;更宽泛探针已有超过 1 个百分点的差异,反对“所有读出都不变”的推广。
- MGC 的 CIFAR-100 改善与代价尚未拆分辅助项移除和补偿因素;CIFAR-10 控制又有硬件/软件栈混杂。优先补同硬件、完整因子化的多种子对照,再追踪训练过程中的梯度与 margin,而不只看最终快照。
- 8 块、32 专家配置中的深度辅助项获得最佳单种子结果,是否在更深模型开始有准确率价值仍开放;Tiny ImageNet 的无历史深度退化也不能由当前定理解释。
相关工作与启发¶
- 相对 Hinton 的 FF:本文仍用正负样本 goodness 与块局部学习,但用注意力骨干、多方面 goodness 和每块类别注入;它分析的是累积训练目标,不是在所有 FF 版本上证明搭便车。
- 相对 Layer Collaboration:前者强调层间信息协作不足,本文指出另一种失败方向——过多继承正 margin 会使局部目标饱和。协作有无不是二元答案,需区分共享表示与共享已经满足的目标。
- 相对 ASGE、DeeperForward、SCFF:这些工作通过 goodness、架构或训练配方提高性能;本文将修复层健康与获得准确率收益分开。论文中的跨工作准确率仅用于标定,监督、参数量、增强和读出不同,不能作为受控 SOTA 排名。
- 可延伸的问题:在固定参数预算和同一硬件栈下,联合比较 residual 权重、辅助项强度与历史规则,再测试利用跨块互补信息的读出,可能回答“健康改善为何不转成收益”;这是待验证方向,不是本文已证实的收益。
评分¶
- 新颖性: 4/5,精确局部梯度分析与机制—准确率分离的组合有明确辨识度。
- 实验充分度: 4/5,三种子核心对照、第二 barrier 与反事实控制较扎实,但规模及硬件混杂限制推广。
- 写作质量: 4/5,明确披露探针边界和失败预测,附录较长且协议差异需要仔细核对。
- 价值: 4/5,提供可复用的局部目标调试思路,并约束对 FF 性能瓶颈的过度归因。