让炼丹更科学一些(六):自上而下的精妙构造
By 苏剑林 | 2026-01-16 | 3307位读者 | 引用在《让炼丹更科学一些(五):基于梯度精调学习率》中,我们进入了基于梯度来调度学习率的新篇章。但上文末也提到,在推导动态梯度下终点损失的最优学习率时,我们遇到了证明上的困难,具体来说,我们基于变分法“猜”出来的最优学习率序列,代入结论中进行放缩验证会十分困难,因此别说最优解了,我们甚至无法判断这个序列是否是可行解。
而在本文中,我们将通过一个精妙的构造得到更精准的结论,从而解决这个问题。就证明过程来看,这一次的结论可能已经达到了无法改进的精度。这个突破依然出自论文《Optimal Linear Decay Learning Rate Schedules and Further Refinements》。
问题回顾
先重温一下之前的结论。上文末,我们得到了《让炼丹更科学一些(四):新恒等式,新学习率》结论的一般版本:
\begin{equation}\mathbb{E}[L(\boldsymbol{\theta}_T) - L(\boldsymbol{\theta}^*)] \leq \frac{R^2}{2\eta_{1:T}} + \frac{1}{2}\sum_{t=1}^T\frac{\eta_t^2 G_t^2}{\eta_{\min(t+1, T):T}}\label{leq:last-2}\end{equation}
让炼丹更科学一些(五):基于梯度精调学习率
By 苏剑林 | 2026-01-09 | 4767位读者 | 引用前面四篇文章中,我们探讨了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-26 | 8336位读者 | 引用上篇文章《让炼丹更科学一些(三):SGD的终点损失收敛》中我们成功将收敛结论从平均损失转化成终点损失,得到了$\mathcal{O}(\sqrt{\ln T/T})$的收敛速度。然而,仔细思考之下我们会发现这个结果其实不大符合直觉:按照经验,终点损失应该更接近最优值才对,平均损失的收敛速度都能做到$\mathcal{O}(1/\sqrt{T})$,怎么终点收敛速度反而更慢呢?
这个问题的最新进展是《Optimal Linear Decay Learning Rate Schedules and Further Refinements》,论文先推广了之前证明的关键恒等式,然后指出学习率调度对终点收敛的重要性,由此将终点损失的收敛加速至$\mathcal{O}(1/\sqrt{T})$。
新恒等式
原论文的结果很丰富,我们将分多篇文章介绍,这篇文章主要顺着上一篇的思路先做个初步介绍。为了将平均损失的收敛结论转换成终点损失,上一篇文章引入的关键恒等式是
\begin{equation}q_T = \frac{1}{T}\sum_{t=1}^T q_t + \sum_{k=1}^{T-1} \frac{1}{k(k+1)}\sum_{t=T-k}^T (q_t - q_{T-k})\end{equation}
让炼丹更科学一些(三):SGD的终点损失收敛
By 苏剑林 | 2025-12-16 | 9635位读者 | 引用目前我们已经有两篇文章讨论SGD的收敛性质,不过它们都只是损失值的收敛结果,所以它们只保证我们能找到最优的损失值,但不能保证找到最优值的所在位置$\boldsymbol{\theta}^*$,这是目前的结论跟实践之间的一个显著gap。直觉上,训练结束时的权重$\boldsymbol{\theta}_T$应该更接近理论最优的$\boldsymbol{\theta}^*$,我们也想知道理论上是否支撑这一点。
所以,这篇文章我们就将平均损失的收敛结果转化为终点损失的收敛结果,初步从理论上了解$\boldsymbol{\theta}_T$与$\boldsymbol{\theta}^*$差多远。
找出位置
我们从文章《让炼丹更科学一些(二):将结论推广到无界域》出发,它的核心结果是不等式
\begin{equation}\sum_{t=1}^T \eta_t \mathbb{E}[L(\boldsymbol{\theta}_t) - L(\boldsymbol{\varphi})]\leq \frac{\Vert\boldsymbol{\theta}_1 - \boldsymbol{\varphi}\Vert^2}{2} + \frac{G^2}{2}\sum_{t=1}^T \eta_t^2\label{leq:avg-2-mid3}\end{equation}
让炼丹更科学一些(二):将结论推广到无界域
By 苏剑林 | 2025-12-12 | 10821位读者 | 引用两年前,笔者打算开一个“科学炼丹”专题,本想着系统整理一下优化器的经典理论结果,但写了第一篇《让炼丹更科学一些(一):SGD的平均损失收敛》后,就一直搁置至今。主要原因在于,笔者总觉得这些经典优化结论所依赖的条件过于苛刻,跟实际应用相去甚远,尤其是进入LLM时代后,这些结论的参考价值似乎更加有限,所以就没什么动力继续写下去。
然而,近期在思考Scaling Law的相关问题时,笔者发现这些结论结果并非想象中那么“没用”,它可以为一些经验结果提供有益的理论洞见。因此,本文将重启该系列,继续推进这个专题文章的撰写,“偿还”之前欠下的“债务”。
结论回顾
记号方面我们沿用第一篇文章的,所以不再重复记号的介绍。第一篇文章的主要结论是:在适当的假设之下,SGD成立
\begin{equation}\frac{1}{T}\sum_{t=1}^T L(\boldsymbol{x}_t,\boldsymbol{\theta}_t) - \frac{1}{T}\sum_{t=1}^T L(\boldsymbol{x}_t,\boldsymbol{\theta}^*)\leq \frac{R^2}{2T\eta_T} + \frac{G^2}{2T}\sum_{t=1}^T\eta_t\label{leq:avg-1}\end{equation}
让炼丹更科学一些(一):SGD的平均损失收敛
By 苏剑林 | 2023-12-19 | 55911位读者 | 引用很多时候我们将深度学习模型的训练过程戏称为“炼丹”,因为整个过程跟古代的炼丹术一样,看上去有一定的科学依据,但整体却给人一种“玄之又玄”的感觉。尽管本站之前也关注过一些优化器相关的工作,甚至也写过《从动力学角度看优化算法》系列,但都是比较表面的介绍,并没有涉及到更深入的理论。为了让以后的炼丹更科学一些,笔者决定去补习一些优化相关的理论结果,争取让炼丹之路多点理论支撑。
在本文中,我们将学习随机梯度下降(SGD)的一个非常基础的收敛结论。虽然现在看来,该结论显得很粗糙且不实用,但它是优化器收敛性证明的一次非常重要的尝试,特别是它考虑了我们实际使用的是随机梯度下降(SGD)而不是全量梯度下降(GD)这一特性,使得结论更加具有参考意义。
问题设置
设损失函数是$L(\boldsymbol{x},\boldsymbol{\theta})$,其实$\boldsymbol{x}$是训练集,而$\boldsymbol{\theta}\in\mathbb{R}^N$是训练参数。受限于算力,我们通常只能执行随机梯度下降(SGD),即每步只能采样一个训练子集来计算损失函数并更新参数,假设采样是独立同分布的,第$t$步采样到的子集为$\boldsymbol{x}_t$,那么我们可以合理地认为实际优化的最终目标是
\begin{equation}L(\boldsymbol{\theta}) = \lim_{T\to\infty}\frac{1}{T}\sum_{t=1}^T L(\boldsymbol{x}_t,\boldsymbol{\theta})\label{eq:loss}\end{equation}








最近评论