智能AI
morning
不用反向传播,也能预训练Transformer,Jeff Dean投的这家公司出成果了
摘要
编辑|张倩 训练大模型,能不能不用反向传播? 这事一直有人琢磨。只是反向传播太成功了:过去这些年,反向传播一直是训练神经网络的唯一主流算法。我们今天所有的架构、优化器、甚至 GPU 硬件,某种意义上都是围着它长出来的。 但一直有人不信这个邪:反向传播要求整个网络处处可微,这其实是个很强的限制,不可微的模块、离散的计算、外部程序,统统进不了训练回路。 那么,如果算力足够便宜,能不能干脆不「算」梯度了...
Dust
token
Token
Transformer
Labs
虚拟种群
loss
训练大模型
能不能不用反向传播
这事一直有人琢磨
2026-10-26
1 阅读
约10分钟阅读
机器之心
字号:
编辑|张倩 训练大模型,能不能不用反向传播? 这事一直有人琢磨。只是反向传播太成功了:过去这些年,反向传播一直是训练神经网络的唯一主流算法。我们今天所有的架构、优化器、甚至 GPU 硬件,某种意义上都是围着它长出来的。 但一直有人不信这个邪:反向传播要求整个网络处处可微,这其实是个很强的限制,不可微的模块、离散的计算、外部程序,统统进不了训练回路。 那么,如果算力足够便宜,能不能干脆不「算」梯度了,改用一种最原始的思路 —— 随机把网络改一改,看它变好还是变坏,变好的方向就保留,变坏的就扔掉。这种办法笨是笨,但胜在什么都不挑:不管网络内部长什么样、可不可微,它都能用。 一家叫 Q Labs 的小型研究实验室最近尝试了类似方法,并将方法命名为「 Dust 」 。 他们声称,这是 第一个在 Transformer 预训练任务上能与反向传播正面竞争的零阶(zeroth-order)优化方法 。 它的大致思路是:不碰权重,而是给每一层输出的激活值加高斯噪声,而且在每个 token 上独立地加。这样每个 token 都相当于一个「虚拟实验个体」,一次前向传播就能并行评估几千个个体。这就是他们所谓的「 虚拟种群 」(virtual population)。哪个噪声让 loss 降了,就给它记功;把记功后的噪声加权平均,就得到了梯度估计。 Q Labs 宣称,Dust 在大规模种群(即计算量显著更大)时能很好地近似反向传播,并且在多种设置下甚至超越了它。他们认为,「这暗示在计算资源充裕的条件下,我们或许能够超越反向传播。」 但瓶颈也很明显:scale。作者自己说得很直白 ——Dust 目前还远比反向传播贵,要再便宜几个数量级才有资格谈「替代」。论文里的实验最大也只到 243M 参数、20M token 的训练预算,和工业界动辄千亿 token 的预训练相去甚远。 来自 SOTAAZ Lab 的第三方复现也为 Dust 提供了一个更冷静的观察角度:在论文设定的一轮 SGD 比较下,Dust 的结果基本可以复现,但它与反向传播的差距很小,并未显示出论文所强调的明显优势;一旦给反向传播换上更合适的优化器,或允许其在同一数据上多训练几轮,反向传播便明显领先,而且计算成本远低于 Dust。换言之, Dust 的意义更在于证明零阶方法可以用于 Transformer 预训练,而不是在当下替代反向传播 。 为什么要挑战反向传播? 在团队公布的技术博客中,他们阐述了自己的研究动机,声称这本质上是对「苦涩的教训」(The Bitter Lesson)的又一次致敬: 随着世界上可用的算力越来越多,那些依赖巧妙归纳偏置(比如可微性、反向传播、高阶梯度近似)的方法,最终往往会输给「通用的、吃算力的暴力搜索 」。 他们举的例子是 AlphaGo Zero:用人类棋谱引导的版本上手更快,但纯自我对弈的版本在充足算力下反超了它。作者的类比是 —— 可微性和反向传播可能就是「低算力时代的好偏置」:它让学习变得高效,但在高算力时代,它反而限制了能被训练的架构空间。 他们进一步推测,这也许能解释为什么现在的神经网络需要海量数据才能泛化:梯度方法并没有充分探索 loss landscape,而一个基于搜索的、更灵活的信用分配算法,可能是通往更好泛化的关键一步。 所以 Dust 的目标很「狂」:用一个更依赖暴力计算、更少依赖解析结构的算法,替换掉反向传播。 Dust 如何绕开反向传播? Dust 的核心思路,是把传统进化策略中的「权重扰动」,转移到 Transformer 的「激活空间」,并利用 Token 维度实现大规模并行。 传统进化策略(ES)训练模型时,需要生成多份略有不同的模型权重,让它们分别执行前向传播,再根据损失变化判断哪些扰动值得保留。 这种方法虽然不依赖反向传播,但代价很高。每个种群成员都需要单独执行前向计算,种群规模越大,计算开销也越高。 此前的 EGGROLL 已经尝试通过低秩扰动降低成本,但仍然需要为每个种群成员分配一个独立的序列位置。 Dust 则换了一个思路: 不直接修改模型权重,而是在每个线性层的输出上添加随机噪声,并为每个 Token 独立生成扰动。 具体来说,对于线性层 yₜ = Wxₜ,Dust 将输出修改为: yₜ → yₜ + σaₜ 其中,σ 控制扰动幅度,aₜ 是服从标准正态分布的随机噪声。 这样一来,每个 Token 都相当于在体验一份略有不同的模型参数,但实际上无需复制或修改权重。研究团队将其称为「虚拟种群」(Virtual Population)。 其优势在于,一次前向传播就能沿 Token 维度同时评估数千个虚拟种群成员,而传统权重空间进化策略通常需要为不同成员分别进行前向计算。 这也是 Dust 能够扩大种群规模、降低采样成本的关键。 不用反向传播, 怎么知道参数该往哪里更新? 有了扰动,下一步就是判断哪些扰动真正改善了模型表现。 Dust 的方法是:观察加入噪声后,每个 Token 的损失发生了什么变化。如果某个方向的扰动降低了损失,就给予更高奖励;反之则降低奖励。 不过,Transformer 中的 Token 之间存在依赖关系。尤其在因果注意力机制下,前面某个 Token 的变化,可能影响后续多个 Token 的预测结果。 因此,Dust 引入了带衰减系数的信用分配机制: 其中,rₜ 表示第 t 个 Token 的扰动奖励,cₛ 表示第 s 个 Token 的损失改善程度,γ 控制未来 Token 的贡献权重。 直观来说,某个 Token 的扰动如果让后续预测也变得更准确,就可以获得额外奖励。 随后,Dust 将多次采样得到的随机噪声与对应奖励加权平均,估计线性层输出端的误差信号,再与该层输入进行外积,得到用于更新权重的梯度估计: 其中,ĝₜ 是通过扰动奖励估计的输出端误差信号,xₜ 是线性层输入。 这个过程与传统反向传播有一个重要区别: 反向传播通过链式法则,逐层计算梯度;Dust 则根据扰动带来的损失变化,在前向计算中估计更新方向。 因此,Dust 可以在不执行标准反向传播的情况下,获得用于训练 Transformer 的近似梯度。 同时加入这么多噪声, 如何避免相互干扰? 大规模并行也带来了新问题。 如果多个层、多个 Token 同时受到扰动,某个 Token 的损失变化就可能混入其他扰动的影响,难以判断究竟是哪次扰动发挥了作用。 为此,Dust 设计了几项针对性的优化。 首先,不同类型的层分别执行扰动计算,并缓存未扰动的中间结果,减少重复前向传播。 其次,对于注意力模块内部的 Query、Key、Value、Gate 等组件,Dust 不直接使用 Token 损失判断扰动效果,而是根据扰动引起的注意力输出变化,以及已估计的输出误差信号,为扰动分配奖励。 最后,对于语言模型输出头,Dust 直接在缓存的 Logits 上进行扰动,只重新计算相关的交叉熵损失,从而以较低成本扩大种群规模。 研究团队还通过超参数搜索,调整不同层的扰动强度、采样比例和信用分配范围。 最终,Dust 将传统进化策略中昂贵的模型权重采样,转化为更容易并行的 Token 级激活扰动,让 Transform
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱