直接以FID为Loss:从梯度计算到流式训练
By 苏剑林 | 2026-05-08 | 2783位读者 | 引用关注视觉生成模型的读者都知道,FID一直是其关键的评价指标之一,它越小往往意味着生成效果越真实。那么一个自然的问题是:为什么不干脆直接以FID为损失函数来训练生成模型呢?难道是因为FID不可导?非也,FID实际上是可导的,它作为Loss理论上没有问题,但实践中会遇到计算困难。
近日,论文《Representation Fréchet Loss for Visual Generation》做了一些克服困难的尝试,成功将FID用于生成模型的微调,并明显改进了单步生成的效果。本文将简要探讨一下其中的数学原理与实现技巧。
生成指标
FID,全称是“Fréchet Inception Distance”,我们可以分“Fréchet Distance(FD)”和“Inception(I)”两部分来理解。
MoE环游记:6、最优分配促均衡
By 苏剑林 | 2026-02-22 | 8026位读者 | 引用我们知道,负载均衡(Load Balance)是MoE架构中基本且关键的一环,直接影响模型的效率和性能。本系列已经有两篇文章介绍了两种实现负载均衡的主流思路,分别是《MoE环游记:2、不患寡而患不均》介绍的经典方案Aux Loss,以及《MoE环游记:3、换个思路来分配》中的由DeepSeek提出的Loss-Free方案。两者各有所长,亦各有局限。
本文将探讨第三种思路:最优分配,它将负载均衡视为等式约束下的线性规划问题。从最终形式上看,它仍属于Loss-Free,但基于截然不同的原理,提供了更准确且无超参的更新方式。
方法回顾
现有的两种方法中,Aux Loss的思路相对朴素,核心是“哪里不稳罚哪里”,通过正则项对负载不均施加惩罚。然而,Aux Loss有两个问题:首先,惩罚系数不好调,过大会干扰主Loss的优化,过小则均衡效果差;其次,Aux Loss的背后是STE(Straight-Through Estimator),这意味着它的梯度是次优的,它可能会带来负载均衡以外的未知影响。
Adam优化器的最优超参数是β1=β2 ?
By 苏剑林 | 2026-02-04 | 6238位读者 | 引用最近笔者刷到论文《Why Adam Works Better with β1=β2: The Missing Gradient Scale Invariance Principle》,顾名思义,它声称Adam在$\beta_1=\beta_2$时表现更优。经同事提醒,去年论文《In Search of Adam's Secret Sauce》也表达了相同的观点。无独有偶,昨天刚出来的《The Effect of Mini-Batch Noise on the Implicit Bias of Adam》也有类似发现。
\begin{equation}\text{Adam}\color{skyblue}{\text{W}}:=\left\{\begin{aligned}
&\boldsymbol{m}_t = \beta_1 \boldsymbol{m}_{t-1} + \left(1 - \beta_1\right) \boldsymbol{g}_t\\
&\boldsymbol{v}_t = \beta_2 \boldsymbol{v}_{t-1} + \left(1 - \beta_2\right) \boldsymbol{g}_t^2\\
&\hat{\boldsymbol{m}}_t = \boldsymbol{m}_t\left/\left(1 - \beta_1^t\right)\right.\\
&\hat{\boldsymbol{v}}_t = \boldsymbol{v}_t\left/\left(1 - \beta_2^t\right)\right.\\
&\boldsymbol{u}_t =\hat{\boldsymbol{m}}_t\left/\left(\sqrt{\hat{\boldsymbol{v}}_t} + \epsilon\right)\right.\\
&\boldsymbol{\theta}_t = \boldsymbol{\theta}_{t-1} - \eta_t (\boldsymbol{u}_t \color{skyblue}{ + \lambda_t \boldsymbol{\theta}_{t-1}})
\end{aligned}\right.\end{equation}
众多论文都指向了$\beta_1=\beta_2$,它有什么理论上的好处呢?本文我们来学习一下相关推导。
为什么我们偏爱各向同性?基于最速下降的理解
By 苏剑林 | 2026-01-20 | 7224位读者 | 引用从机器学习时代的数据白化预处理,到深度学习时代的BatchNorm、InstanceNorm、LayerNorm、RMSNorm等花样百出的Normalization方法,本质上都体现了我们对“各向同性(Isotropy)”的偏爱。为什么我们会倾向于各向同性的特征呢?它有什么实际上的好处呢?这个问题能找到很多答案,比如对齐尺度、减少冗余、去相关性等等,但多是流于表面的感觉。
近日,笔者在读论文《The Affine Divergence: Aligning Activation Updates Beyond Normalisation》时,悟到了该问题在优化视角下的一个新理解,个人认为它相对来说还是比较贴近本质的,所以写出来跟大家分享和讨论一下。
最速下降
我们从最简单的线性层出发
\begin{equation}\boldsymbol{Y} = \boldsymbol{X}\boldsymbol{W}\end{equation}
让炼丹更科学一些(五):基于梯度精调学习率
By 苏剑林 | 2026-01-09 | 5051位读者 | 引用前面四篇文章中,我们探讨了SGD从有界域到无界域、从平均损失到终点损失的一系列收敛结论。或许有读者觉得,说来说去都还是SGD,这恐怕是“上古时代”的结果了吧?还真不是!像第四篇《让炼丹更科学一些(四):新恒等式,新学习率》所依赖的核心恒等式,出自不远的2023年;第三篇《让炼丹更科学一些(三):SGD的终点损失收敛》的结论稍早一点,亦不过出自2020年。
同样是在第四篇中,我们推出了实践常见的学习率策略“线性衰减”,它表明这系列理论推导并非“纸上谈兵”,而是能对实践产生有效的指导。接下来,我们将讨论基于梯度的更精细的学习率策略,它有助于我们了解学习率调度的原理,同时也是各种自适应学习率优化器的基础。
最初起点
如果仔细重温前面的证明过程,我们会发现,这一系列结论的起点,是一个毫不起眼的恒等式
\begin{equation}\begin{aligned}
\Vert\boldsymbol{\theta}_{t+1} - \boldsymbol{\varphi}\Vert^2=&\, \Vert\boldsymbol{\theta}_t - \eta_t \boldsymbol{g}(\boldsymbol{x}_t,\boldsymbol{\theta}_t)- \boldsymbol{\varphi}\Vert^2 \\
=&\, \Vert\boldsymbol{\theta}_t - \boldsymbol{\varphi}\Vert^2 - 2\eta_t (\boldsymbol{\theta}_t- \boldsymbol{\varphi})\cdot\boldsymbol{g}(\boldsymbol{x}_t,\boldsymbol{\theta}_t) + \eta_t^2\Vert\boldsymbol{g}(\boldsymbol{x}_t,\boldsymbol{\theta}_t)\Vert^2
\end{aligned}\label{eq:begin}\end{equation}
滑动平均视角下的权重衰减和学习率
By 苏剑林 | 2025-12-05 | 14664位读者 | 引用权重衰减(Weight Decay)和学习率(Learning Rate)是LLM预训练的重要组成部分,它们的设置是否妥当,是模型最终成败的关键因素之一。自AdamW以来,单独分离出Weight Decay来取代传统的L2正则,基本上已经成为了共识,但在此基础上,如何合理地设置Weight Decay和Learning Rate,并没有显著的理论进展。
本文将抛砖引玉,分享笔者关于这个问题的一些新理解:把训练过程看作对训练数据的滑动平均记忆,探讨如何设置Weight Decay和Learning Rate才能让这个记忆更为科学。
滑动平均
Weight Decay的一般形式是
\begin{equation}\boldsymbol{\theta}_t = \boldsymbol{\theta}_{t-1} - \eta_t (\boldsymbol{u}_t + \lambda_t \boldsymbol{\theta}_{t-1})\end{equation}
AdamW的Weight RMS的渐近估计(下)
By 苏剑林 | 2025-11-17 | 14273位读者 | 引用在博客《AdamW的Weight RMS的渐近估计(上)》中,我们推导了AdamW训练出来的模型权重的RMS渐近表达式。不过,那会我们假设了Weight Decay和学习率在整个训练过程中是固定的,这跟实际训练并不完全吻合,所以这篇文章我们将之前的结论推广成动态版。
所谓动态版,即允许Weight Decay和学习率都随着训练步数的增加而变化,比如经典的Cosine Decay、WSD(Warmup Stable Decay)等,从而让结论更为通用。
步骤之一
我们的出发点还是AdamW的定义:
\begin{equation}\text{Adam}\color{skyblue}{\text{W}}:=\left\{\begin{aligned}
&\boldsymbol{m}_t = \beta_1 \boldsymbol{m}_{t-1} + \left(1 - \beta_1\right) \boldsymbol{g}_t\\
&\boldsymbol{v}_t = \beta_2 \boldsymbol{v}_{t-1} + \left(1 - \beta_2\right) \boldsymbol{g}_t^2\\
&\hat{\boldsymbol{m}}_t = \boldsymbol{m}_t\left/\left(1 - \beta_1^t\right)\right.\\
&\hat{\boldsymbol{v}}_t = \boldsymbol{v}_t\left/\left(1 - \beta_2^t\right)\right.\\
&\boldsymbol{u}_t =\hat{\boldsymbol{m}}_t\left/\left(\sqrt{\hat{\boldsymbol{v}}_t} + \epsilon\right)\right.\\
&\boldsymbol{\theta}_t = \boldsymbol{\theta}_{t-1} - \eta_t (\boldsymbol{u}_t \color{skyblue}{ + \lambda_t \boldsymbol{\theta}_{t-1}})
\end{aligned}\right.\end{equation}
DiVeQ:一种非常简洁的VQ训练方案
By 苏剑林 | 2025-10-08 | 37108位读者 | 引用对于坚持离散化路线的研究人员来说,VQ(Vector Quantization)是视觉理解和生成的关键部分,担任着视觉中的“Tokenizer”的角色。它提出在2017年的论文《Neural Discrete Representation Learning》,笔者在2019年的博客《VQ-VAE的简明介绍:量子化自编码器》也介绍过它。
然而,这么多年过去了,我们可以发现VQ的训练技术几乎没有变化,都是STE(Straight-Through Estimator)加额外的Aux Loss。STE倒是没啥问题,它可以说是给离散化运算设计梯度的标准方式了,但Aux Loss的存在总让人有种不够端到端的感觉,同时还引入了额外的超参要调。
幸运的是,这个局面可能要结束了,上周的论文《DiVeQ: Differentiable Vector Quantization Using the Reparameterization Trick》提出了一个新的STE技巧,它最大亮点是不需要Aux Loss,这让它显得特别简洁漂亮!








最近评论