方法精讲 · EXPONENTIATED GRADIENT · 2026-10-05

乘法,还是加法?
把更新规则换成大脑的用法

梯度下降对每个权重一视同仁地加上一个增量;这篇 Neuron 论文把"突触变化"重新度量了一遍,得到一条乘在原权重上的更新规则——指数梯度(EG)。性能不输 GD,权重分布自动长成大脑里普遍存在的对数正态,剪枝更扛揍,无关输入越多优势越大。下面把推导、证据和落地代码一次讲透。

98.4%82 个认知任务上两算法最终精度打平
0 次EG 全程权重符号翻转(GD 每步上千次)
89.7 vs 50.1两万输入仅 100 个相关时,EG 与 GD 的精度
10×GD 权重分布偏离 log-normal 的 KS 统计量倍数
GRADIENT DESCENT加法
wt+1 = wt − η∇l(wt)

新增量,与当前权重无关。小权重和大权重挪动同样的距离,符号可以随便翻。

EXPONENTIATED GRADIENT乘法
wt+1 = wt ⊙ exp(−η∇l(wt) ⊙ sign(wt))

乘性缩放,只改大小、不改符号。已经很大的权重获得更大的更新量。

§ 1 · 为什么要换

GD 训练出来的模型,哪里不像脑

用 GD 训练神经网络来建模大脑,是计算神经科学的常规操作。论文开篇指出的不是 GD "不生物学"这个老生常谈,而是三个可观测的现象差异——每一项都有实验数据对不上:

01突触不会中途变号(Dale 定律)

一个真实突触要么终生兴奋性、要么终生抑制性。而 GD 的加性更新随时可以把一个权重从正改到负——等于允许突触在训练中途更换身份。这不是哲学洁癖:如果你想在模型里强制 Dale 定律(兴奋、抑制种群分开),GD 会在你背后悄悄违规。

02大脑的突触强度是对数正态分布的

跨物种、跨脑区的电生理和树突棘测量反复看到同一件事:突触强度的分布是重尾的对数正态——少数极强的连接 + 一大片极弱的背景。GD 训练会把初始化时的 log-normal 拉回钟形,长尾消失;EG 训练后分布仍然是 log-normal(KS 统计量相差 10 倍)。

03大脑更擅长无视无关输入

神经元泡在大量背景噪声和与当前任务无关的输入里,却只靠少数相关突触就能驱动决策。GD 有"抄近路"的倾向——容易被无关特征带偏。论文后面会证明:无关输入比例越高,EG 对 GD 的优势越大。

光"更像脑"不够——替代算法必须同样能学。这就是为什么作者把 EG 的性能打平放在第一位来讲:先证明不丢分,再证明多得分。

§ 2 · 一个框架,两种几何

换的不是优化器,是"距离"

EG 不是拍脑袋发明的(Kivinen & Warmuth 1997 就有),它和 GD 一样可以从镜像下降(mirror descent)的第一性原理推出来。起点是一个生物学上很站得住的问题:

怎样用最小的突触改变量,换取任务误差的最大改善?

最小化突触变化有两条硬理由:突触的生成和维持都要花代谢成本(蛋白合成、受体转运、棘结构改造);改动太大还会冲掉旧记忆——灾难性干扰。把它写成最优化问题,就是论文的方程 (1):

(1)wt+1 = argminw [ l̂(w) + (1/η)·D(w; wt) ]

l̂(w) 是损失函数在当前权重处的线性近似;D(w; wt) 是"突触变化惩罚";η 反过来控制惩罚强度——惩罚越小,等效学习率越大。

GD 和 EG 的全部区别,就是 D 选了什么。GD 选的是平方欧氏距离——它对"往哪边挪"完全对称,不关心你是否跨过了零点:

(2)GD(欧氏)D(w; wt) = Σi (wi − wit)2
(3)解出 →wt+1 = wt − η∇l(wt)

EG 换成未归一化相对熵。它里面有个 log,对反号的自变量根本没定义——于是"突触变号"这件事被从数学上排除,而不是被正则化劝退:

(4)EG(相对熵)D(w; wt) = Σi ( wi·log(wi/wit) − wi + wit )
(5)解出 →wt+1 = wt ⊙ exp( −η∇l(wt) ⊙ sign(wt) )

那个 sign(w) 项值得单独说一句:把权重拆成"符号 s × 正部 w⁺"再对正部做镜像下降,链式法则会自动带出这一项(∇l ⊙ s)。消融实验显示把它去掉网络就学不动——它保证负权重收到负梯度时是放大而不是缩向零。exp 恒正,所以整个更新永远只缩放幅度、永不翻转符号——Dale 定律是构造出来的,不是约束出来的。

GD · 欧氏距离 D = (w' − w)² w(t) w(t+1) 惩罚沿整条对角线连续 → 允许跨过零点变号 EG · 相对熵 D = w'log(w'/w) − w' + w w(t) w(t+1) 惩罚只在同号象限有定义 → 能量面断成两截 未定义 未定义
图 1 · 两种"突触距离"的能量面(示意重绘,对应论文图 1A)。GD 的惩罚沿整条对角线连续——更新可以从正走到负;EG 的惩罚在异号象限没有定义,能量面在对角线上断成两截——符号在构造上就被锁死。这也意味着两种算法眼里"从一个权重到另一个权重的距离"根本不同,会走向不同的解。
§ 3 · 它自动长成什么样

三个类脑性质,一条比一条具体

性质一符号永不翻转

从随机 log-normal 初始化出发训练 RNN:GD 网络在整个训练过程中每步产生成百上千次符号翻转,EG 网络是零次。若初始化遵守 Dale 定律,EG 网络全程遵守;GD 会悄悄改写兴奋/抑制身份。(对照实验:把 GD 投影到"不许变号"的半直线上,性能会掉——说明 EG 不是"戴着镣铐的 GD",而是真的在用自己的几何找解。)

性质二log-normal 分布被保持

用 log-normal 初始化、训练完再看:GD 的权重分布已经不像 log-normal 了(换 sign-constrained GD 也一样),EG 的仍然被 log-normal 很好拟合;KS 统计量相差 10 倍。更妙的是从正态、均匀分布初始化出发,EG 的更新量本身近似 log-normal,GD 的更新量近似正态——这是乘性更新的指纹。而 log-normal 突触分布恰恰是跨物种、跨脑区反复观测到的实验事实。

性质三更新量正比于现有权重

实验上早就观察到:突触变化量与当前突触强度成正比(乘性可塑性)。论文对每一步更新拟合"更新幅度 ~ 权重幅度"的线性回归:GD 的 R² ≈ 0(完全解释不了),EG 能解释相当比例的方差。乘性规则不是论文的假设,而是更新规则的直接推论。

演示在你的浏览器里跑一次 本页实时运行 · 简化复现

空口说不如亲手看。下面是一个仿论文点神经元设定(图 4A)的极简任务:学生神经元接收 N 个 0/1 输入,其中只有 100 个是相关的——当至少 50 个相关输入同时活跃时,它该输出 1。两个学生(一个 GD、一个 EG)吃同样的数据流,各学各的。训练结束后看它们的权重长什么样:相关输入(实色点)能不能和无关输入(灰点)分开?

总输入数
点"重新训练"开始(约 1–5 秒)
图 2 · 本页内实时运行的玩具复现:逻辑回归学生神经元,任务设定仿论文图 4A(100 个相关输入、阈值 50、0/1 输入、sigmoid + 交叉熵)。批大小、步数与学习率为演示调校值(GD 0.15 / 0.1 / 0.1,EG 0.5 / 1 / 1.5;大 N 档提高学习率加速收敛),数据每步重采样;评估与绘图用权重滑动平均,滤除乘性更新的振荡相位。横轴为 log₁₀|w|,上排 GD、下排 EG;实色 = 100 个相关输入,灰 = 无关输入。此演示只示意机制,不能用于复核论文数字。
§ 4 · 证据链

先证明不掉分,再证明多得分

4.1标准任务:打平

82 个认知神经科学式任务(Mod-Cog 套件)上训练 2500 神经元的 RNN:GD 和 EG 最终精度都是 98.4%,收敛速度相当,连"按什么顺序学会各任务"都高度一致。更大的压力测试是 ImageNet + ResNet-50:两算法再次大致持平。 EG 能扛住硬任务,"类脑算法学不动难任务"的常见担忧在此不成立。

但"打平"不等于"相同":用动力学相似性分析(DSA)比较两个算法解出的网络,行为相似、权重与轨迹明显不同——EG 在不同任务间发现的解反而更一致。同样的性能,不同的解法,这是后面一切差异的根源。

4.2剪枝:EG 的长尾是留了备份的骨架

EG 的权重长尾意味着:计算集中在少数强连接上,小权重是"冗余背景"。按幅度从小到大剪掉 40–97.5% 的权重,EG 网络在每个剪枝水平上都比 GD 保持得更好(剪前后的权重余弦相似度也更高)。更有生物学味道的设定是"剪完接着学"——发育和睡眠中的突触修剪正是如此:

0.85 0.90 0.95 1.00 0.968 0.956 剪枝 92.5% 0.967 0.935 剪枝 95% 0.913 0.885 剪枝 97.5% EG 再训练 GD 再训练
图 3 · 剪掉 92.5% / 95% / 97.5% 的小权重后再训练 1000 步的最终精度(数据来自论文 STAR Methods 表格;纵轴自 0.85 起)。剪得越狠,EG 的再训练优势越大:97.5% 档相差 2.8 个百分点。

反过来剪大权重,EG 网络更疼——符合"计算集中在少数强连接"的判断。对训练好的权重矩阵做图分析,EG 的解还有更高的聚类系数与"小世界"系数:长尾 + 骨干,拓扑上也更像脑。

4.3无关输入越多,EG 赢得越多

回到图 2 那个点神经元任务,论文在三种输入规模下网格搜索了两边的最优学习率(见 §6 表格),结果:

50 75 100 97.3 96.8 N = 200 93.1 70.8 N = 2,000 89.7 50.1 N = 20,000 EG(lr 0.75 / 1 / 1) GD(lr 0.5 / 0.01 / 0.01)
图 4 · 点神经元任务的测试精度(%,数据来自论文 STAR Methods)。N=200 时两算法打平;N=20,000(只有 0.5% 的输入相关)时 GD 接近瞎猜(50.1%),EG 仍有 89.7%。同样的排序在五 种形态的生物物理多室神经元模型上成立,也延伸到带 500 维噪声输入的双关节机械臂控制——无噪声时两算法无差别,EG 的优势特异于"大量无关输入"这一场景。
§ 5 · 为什么会这样 解读 · 以下为论文讨论部分的转述与延伸

乘法是一台信贷分配机器

把 EG 的更新拆开看:exp(−ηg) 先对梯度的每个坐标做指数变换——负梯度(该长的方向)被放大、正梯度被压缩;再乘上当前权重本身。两件事拼起来,就是一台信贷分配机:只要某个连接收到的梯度方向在学习过程中保持一致,它就会被指数级地放大,其余连接被压回背景。

这解释了 §3–§4 的所有现象,而且是同一件事的三张面孔:

长尾——少数连接赢得几乎全部信贷,权重分布必然重尾;抗剪枝——既然计算集中在骨干上,剪掉小权重动不了筋骨,网络拓扑自然呈现小世界聚类;擅长稀疏特征——当任务只有少量相关输入时,"快速把信贷押注到少数连接上"正是最短路径。GD 的加性更新没有这个放大机制,只能在平坦的欧氏空间里慢慢摸索,无关输入一多就淹死在噪声里。

这也和深度学习里的彩票假设接上了:初始化中存在"中奖子网络"。作者猜测 EG 更擅长在初始化里找到该大幅改动的那个子集——乘性规则天然偏好"押注已有的差异",而不是平均用力。

一句话总结这层几何直觉:GD 度量距离用直尺,EG 用的是"变化成本与现状成正比"的尺度。同样走一步,从大权重身上"要走"的距离和小权重完全不同——优化永远沿着便宜的路走,于是解的形状被距离函数决定。

§ 6 · 拿来即用 解读 · 工程视角

换掉你的优化器:三行起步,五件事注意

EG 对工程实现非常友好——不需要改模型结构、不需要改数据,只需要换掉 optimizer.step()。论文官方实现见 jhcornford/exponentiated-gradients,下面是按论文 STAR Methods 形式整理的最小可用版本:

# EG 优化器(按论文表格的 momentum/weight decay 形式实现)
class EG(torch.optim.Optimizer):
    def __init__(self, params, lr=0.4, momentum=0.925, weight_decay=0.0):
        super().__init__(params, defaults=dict(
            lr=lr, momentum=momentum, weight_decay=weight_decay))

    @torch.no_grad()
    def step(self, closure=None):
        for group in self.param_groups:
            for p in group['params']:
                if p.grad is None: continue
                g = p.grad * torch.sign(p)   # sign 项不能省:链式法则的产物
                st = self.state[p]
                if 'm' not in st: st['m'] = torch.zeros_like(p)
                m = st['m']
                m.mul_(group['momentum']).add_(g).add_(group['weight_decay'])
                p.mul_(torch.exp(-group['lr'] * m))  # 乘性更新:只缩放,不变号
# 配套的两件初始化小事(论文 STAR Methods;本块为示意,变量名自明)
# 1) 权重:log-normal 初始化(α=1.5),再随机乘 ±1 —— 最终零均值、方差 1/|h|
mu     = math.log(alpha**2 / (1 + alpha**2) / math.sqrt(fan_in))
sigma2 = math.log(1 + 1 / alpha**2)
w = torch.distributions.LogNormal(mu, sigma2**0.5).sample(shape) * signs('±1 等概率')

# 2) 偏置:EG 无法变号,所以拆成正负两组再相加,等效零均值
b = torch.empty(h).uniform_(0, math.sqrt(2/h)) + \
    torch.empty(h).uniform_(-math.sqrt(2/h), 0)

论文各任务网格搜索出的学习率——EG 普遍比 GD 大一到两个数量级,这是换优化器后最需要重调的超参:

表 1 · 论文网格搜索的学习率范围与最优值(STAR Methods)
任务EG · 范围 → 最优GD · 范围 → 最优
Mod-Cog 认知任务(RNN)[2, 8] → 3.5[0.01, 1] → 0.1
Mod-Cog 剪枝后再训练[0.1, 2.5] → 1.5–2.0[0.01, 0.75] → 0.1–0.25
点神经元[0.1, 1] → 0.75–1[0.005, 1] → 0.5–0.01
多室生物物理神经元[1e-6, 1e-3] → 1e-4[1e-11, 1e-7] → 1e-9
连续控制(含噪声)[0.2, 0.8] → 0.4[0.001, 0.2] → 0.01
ImageNet(ResNet-50)[0.1, 0.6] → 0.4[0.01, 0.5] → 0.1

其余配套(论文取值):momentum 0.925;Mod-Cog 的 weight decay 为 EG 1e-7 / GD 1e-6(EG 的 decay 是乘性 exp(−ηγ),小步长下与 GD 等效);连续控制用 cosine 学习率调度 + 梯度范数裁剪到 4;ImageNet 配 5e-5 weight decay 与 0.15 label smoothing。

清单什么任务值得换

§ 7 · 边界与局限

论文自己划的三条线

任务的复杂度。Mod-Cog 从优化角度看还是简单任务,远不及开放环境具身控制或真实语言建模。作者的反驳是 EG 及其近亲已在 ImageNet 级任务上验证过可扩展性,但也明说:更高难度下的结论有待未来工作。

变号需求。如果唯一可行的解要求某些突触变号(欠参数化时可能出现),GD 会赢。实验里没观察到,是因为过参数化下"随机初始化恰好凑齐正确符号"的概率很小;而且存在专门设计的兴奋/抑制分离架构,能在欠参数化区间学得很好。

生物细节的抽象层级。模型用的是同质的 ReLU 率单元,没有区分细胞类型——而实验上抑制性与兴奋性突触的可塑性动力学本就不同。另外,真实突触分布是"严格 log-normal"还是"接近 log-normal",作者也坦承无法分辨,但跨实验室的一致性足以让建模者把它当回事。

来源 · SOURCE
Cornford J., Pogodin R., Ghosh A., et al. Exponentiated gradient learning yields brain-like synaptic distributions. Neuron 115, 1–14 (2027). DOI: 10.1016/j.neuron.2026.08.026(开放获取,CC BY)
官方代码:github.com/jhcornford/exponentiated-gradients(PyTorch;多室神经元部分基于 NEURON + Allen Cell Types Database)
← 返回博客首页