<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Adam on LeoDreamer</title>
        <link>https://LeoDreamer2004.github.io/tags/adam/</link>
        <description>Recent content in Adam on LeoDreamer</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Sun, 30 Mar 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://LeoDreamer2004.github.io/tags/adam/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>论文阅读 - Adam 的收敛性分析</title>
            <link>https://LeoDreamer2004.github.io/p/paper-reading/adam-convergence/</link>
            <pubDate>Sun, 30 Mar 2025 00:00:00 +0000</pubDate>
            <guid>https://LeoDreamer2004.github.io/p/paper-reading/adam-convergence/</guid>
            <description>&lt;img src=&#34;https://LeoDreamer2004.github.io/p/paper-reading/adam-convergence/banner.jpeg&#34; alt=&#34;Featured image of post 论文阅读 - Adam 的收敛性分析&#34; /&gt;&lt;h2 id=&#34;介绍&#34;&gt;介绍&#xA;&lt;/h2&gt;&lt;p&gt;在论文 &lt;a class=&#34;link cite-original&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &lt;span class=&#34;material-name&#34;&gt;Unknown-material&lt;/span&gt; &#xA;&lt;/a&gt; 中, 作者首次介绍了 Adam 优化器. 此算法一经出现立刻爆火, 现在在深度学习当中已经成为一种最常用的优化算法.&lt;/p&gt;&#xA;&lt;div class=&#34;math-block math-algo&#34;&gt;&#xA;    &lt;p class=&#34;math-title&#34;&gt;算法&lt;span class=&#34;math-subtitle&#34;&gt;Adam&lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;Adam 的更新公式如下:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;m_t &amp; = \beta_1 m_{t-1} + (1 - \beta_1) g_t \\&#xA;v_t &amp; = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \\&#xA;\hat{m}_t &amp; = \frac{m_t}{1 - \beta_1^t} \\&#xA;\hat{v}_t &amp; = \frac{v_t}{1 - \beta_2^t} \\&#xA;\theta_t &amp; = \theta_{t-1} - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \odot \hat{m}_t&#xA;\end{aligned}&#xA;$$&lt;p&gt;其中 $\odot$ 表示逐元素相乘. 超参数通常取 $\beta_1=0.9, \beta_2=0.999, \epsilon=10^{-8}$.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;可以认为 Adam 本身直接由 SGD 而来. 在此基础上 Adam 引入了几个重要技术:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;移动平均 (Moving Average)&lt;/strong&gt;: $m_t$ 不是通过对梯度直接求和, 而是按照 $\beta_1$ 和 $\beta_2$ 的比例进行移动平均, 保证了梯度的稳定性.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;自适应学习率 (Adaptive Learning Rate)&lt;/strong&gt;: $v_t$ 通过对梯度的二阶矩进行估计, 使得学习率可以自适应地调整.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;偏差修正 (Bias Correction)&lt;/strong&gt;: 由于在训练开始移动平均几乎为 0, 对其引入偏差修正可以加快初始化时刻的收敛速度.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;当然还有加上衰减的 AdamW, 以及其他的变种, 以适应 Transformer 等模型的训练.&lt;/p&gt;&#xA;&lt;h2 id=&#34;收敛--吗&#34;&gt;收敛 &amp;hellip; 吗?&#xA;&lt;/h2&gt;&lt;p&gt;论文 &lt;a class=&#34;link cite-original&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt; 中提到我们可以引入误差量来衡量收敛性:&lt;/p&gt;&#xA;&lt;div class=&#34;math-block math-def&#34;&gt;&#xA;    &lt;p class=&#34;math-title&#34;&gt;定义&lt;/p&gt;&#xA;&lt;p&gt;称 &lt;strong&gt;累积误差&lt;/strong&gt; 为&lt;/p&gt;&#xA;$$R(T) = \sum_{t=1}^T (f_t(\theta_t) - f_t(\theta^*))$$&lt;p&gt;其中 $\theta^*$ 是最优解, 即 $\theta^* = \argmin_{\theta} \sum_{t=1}^T f_t(\theta)$.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;可以认为, 当 $R(T)/T \to 0$ 时算法收敛. 作者在文献中对 Adam 的收敛性给了自己证明, 里面的细节太多, 这里只给粗略过程.&lt;/p&gt;&#xA;&lt;p&gt;鉴于偏差修正只在初期有较大影响, 之后对于收敛性的讨论, 以下证明对其不予考虑 (原论文有), 此外忽略微小项 $\epsilon$.&lt;/p&gt;&#xA;&lt;p&gt;在原始的 Adam 中 $\beta_1, \eta$ 都是常数, 实际上此时难以证明. 因此原文中, 对参数做了随时间动态调整:&lt;/p&gt;&#xA;$$\eta_t = \frac{\eta}{\sqrt{t}}, \beta_{1,t}=\beta_1 \lambda^{t-1}, \lambda \in (0,1)$$&lt;p&gt;&lt;strong&gt;注意: 以下定理的证明有争议!&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;math-block math-thm&#34;&gt;&#xA;    &lt;p class=&#34;math-title&#34;&gt;定理&lt;/p&gt;&#xA;&lt;p&gt;假设 $f_t$ 梯度有界, $\theta_t$ 之间的距离有界, 即 $\| g_t \|_{\infty} \le G, \|\theta_i-\theta_j\|_{\infty} \le D$, 且 $\beta_1^4 &lt; \beta_2$, Adam 中超参数 $\eta, \beta_1$ 遵从如上动态调整, 则 $R(T) \le \mathcal{O}(\sqrt{T})$, 因而 Adam 收敛.&lt;/p&gt;&#xA;&lt;p class=&#34;math-prf&#34;&gt;证明&lt;/p&gt;&#xA;&lt;p&gt;首先, 可以证明:&lt;/p&gt;&#xA;$$&#xA;f_t(\theta_t) - f_t(\theta^*) \le g_t^T(\theta_t - \theta^*) = \sum_{i=1}^d g_{t,i}(\theta_{t,i} - \theta^*_i)&#xA;$$&lt;p&gt;$d$ 个分量求和并不会影响量级, 从而我们只需要关心第 $i$ 个分量, 因而下面我们不妨设 $\theta_t, g_t, m_t, v_t$ 等都是一维的. (或者可以用 $\theta_t = \theta_{t,i}$ 来表示), 那么我们只要证明:&lt;/p&gt;&#xA;$$&#xA;\sum_{t=1}^{T} g_t(\theta_t - \theta^*) \le \mathcal{O}(\sqrt{T})&#xA;$$&lt;p&gt;既然要估计 $\theta_t - \theta^*$, 由学习率公式, 我们可以得到:&lt;/p&gt;&#xA;$$(\theta_{t+1} - \theta^*) = (\theta_t - \theta^*) - \eta_t \frac{m_t}{\sqrt{v_t}}$$&lt;p&gt;取平方, 有:&lt;/p&gt;&#xA;$$(\theta_{t+1} - \theta^*)^2 = (\theta_t - \theta^*)^2 - 2\eta_t \frac{m_t}{\sqrt{v_t}}(\theta_t - \theta^*) + \eta_t^2 \frac{m_t^2}{v_t}$$&lt;p&gt;要把 $m_t$ 换成 $g_t$, 由 $m_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t$ 代入得到:&lt;/p&gt;&#xA;$$(\theta_{t+1} - \theta^*)^2 = (\theta_t - \theta^*)^2 - 2\eta_t \frac{\beta_{1,t} m_{t-1} + (1 - \beta_{1,t}) g_t}{\sqrt{v_t}}(\theta_t - \theta^*) + \eta_t^2 \frac{m_t^2}{v_t}&#xA;$$&lt;p&gt;把需要处理的量放在左边:&lt;/p&gt;&#xA;$$&#xA;(1-\beta_{1,t})g_t(\theta_t - \theta^*) = \frac{\sqrt{v_t}\left((\theta_t - \theta^*)^2-(\theta_{t+1} - \theta^*)^2\right)}{2\eta_t} - \beta_{1,t} m_{t-1}(\theta_t - \theta^*) + \frac{\eta_t m_t^2}{2\sqrt{v_t}}&#xA;$$&lt;p&gt;这左边可以由 $1 \ge 1-\beta_{1,t} \ge 1-\beta_{1,1}$ 直接看作 $g_t(\theta_t - \theta^*)$ 量级, 右边现在已经分成三个部分了, 只需要累和来看每个部分的量级.&lt;/p&gt;&#xA;&lt;p&gt;一个显然的结论是, 在移动平均下, 易见 $m_t \le G (m_0 \le G), v_t \le G^2 (v_0 \le G^2)$.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第一项&lt;/strong&gt;: 忽略常数 $2$, 暂记 $\gamma_t = \frac{\sqrt{v_t}}{\eta_t} = \mathcal{O}(\sqrt{T})$, 只要考虑:&lt;/p&gt;&#xA;$$&#xA;M_1=\sum_{t=1}^{T} \gamma_t \left((\theta_t - \theta^*)^2-(\theta_{t+1} - \theta^*)^2\right)&#xA;$$&lt;p&gt;利用 Abel 求和法则, 可以得到:&lt;/p&gt;&#xA;$$&#xA;M_1 =\gamma_1(\theta_1 - \theta^*)^2 - \gamma_{t+1}(\theta_{T+1} - \theta^*)^2 + \sum_{t=1}^{T} (\gamma_{t+1} - \gamma_t)(\theta_t - \theta^*)^2&#xA;$$&lt;p&gt;一般来说 $\gamma_t = \mathcal{O}(\sqrt{T})$ 应该是单调不减的, 在 $\gamma_t \le \gamma_{t+1}$ 的情况下, 可以得到:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;M_1 &amp;\le \gamma_1(\theta_1 - \theta^*)^2 +  \sum_{t=1}^{T} (\gamma_{t+1} - \gamma_t)D^2 \\&#xA;&amp;= C + (\gamma_{t+1} - \gamma_1)D^2 = \mathcal{O}(\sqrt{T})&#xA;\end{aligned}&#xA;$$&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;&lt;strong&gt;问题就出在这个 &amp;ldquo;一般来说&amp;rdquo; 上&lt;/strong&gt;, 因为尽管引入参数衰减, 实际上 Adam 并不能保证 $\gamma_t$ 是单调不减的. 后面会提到这里的争议.&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;第二项&lt;/strong&gt;: 直接放缩即可:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;M_2 &amp;=\sum_{t=1}^{T} \beta_{1,t}m_{t-1}(\theta_t - \theta^*) \le \sum_{t=1}^{T} \beta_{1,t} |m_{t-1}| D \\&#xA;&amp;\le GD \sum_{t=1}^{T} \beta_{1,t} = G D \beta_1 \frac{1-\lambda^\top}{1-\lambda} = \mathcal{O}(1)&#xA;\end{aligned}&#xA;$$&lt;p&gt;&lt;strong&gt;第三项&lt;/strong&gt;: $v_t$ 未必有下界, 有点麻烦! 直接写通式:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;m_t &amp;= \sum_{s=1}^t (1-\beta_{1,s})\left(\prod_{r=s+1}^{t}\beta_{1,r}\right)g_s \le \sum_{s=1}^t \beta_1^{t-s}g_s\\&#xA;v_t &amp;= (1-\beta_2)\sum_{s=1}^t \beta_2^{t-s}g_s^2&#xA;\end{aligned}&#xA;$$&lt;p&gt;既然要控制 $\frac{m_t^2}{\sqrt{v_t}}$, 结合 $\beta_1^4 &lt; \beta_2$, 那么考虑 Young 不等式:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;m_t^4 &amp;\le \left(\sum_{s=1}^t \beta_2^{t-s}g_s^2 \right) \left(\sum_{s=1}^t \frac{\beta_1^{\frac{4}{3}(t-s)}}{\beta_2^{\frac{1}{3}(t-s)}}g_s^{\frac{2}{3}} \right)^{3} \\&#xA;&amp;\le v_t^2 G^2 \left(\frac{1-\mu^t}{1-\mu}\right)^3 = v_t^2 \mathcal{O}(1)&#xA;\end{aligned}&#xA;$$&lt;p&gt;这里 $\mu = \beta_1^{\frac{4}{3}} / \beta_2^{\frac{1}{3}} &lt; 1$. 因此:&lt;/p&gt;&#xA;$$&#xA;M_3 =\sum_{t=1}^{T} \eta_t^2 \frac{m_t^2}{\sqrt{v_t}} \le C \sum_{t=1}^{T} \eta_t^2 = C \sum_{t=1}^{T} \mathcal{O}\left(\frac{1}{t}\right) = \mathcal{O}(\ln T)&#xA;$$&lt;p&gt;自此, 三项综合可以得到:&lt;/p&gt;&#xA;$$&#xA;R(T) \le \mathcal{O}(\sqrt{T}) + \mathcal{O}(1) + \mathcal{O}(\ln T) = \mathcal{O}(\sqrt{T})&#xA;$$&lt;/div&gt;&#xA;&lt;h2 id=&#34;objection&#34;&gt;Objection!&#xA;&lt;/h2&gt;&lt;p&gt;论文 &lt;a class=&#34;link cite-original&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt; 的这个漏洞显然为人诟病. 于是论文 &lt;a class=&#34;link cite-objection&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &lt;span class=&#34;material-name&#34;&gt;Unknown-material&lt;/span&gt; &#xA;&lt;/a&gt; 中, 作者指出 Adam 并不总是收敛的. 论文中给出了一个反例:&lt;/p&gt;&#xA;&lt;p&gt;我们取 $\beta_1=0, \beta_2=\frac{1}{1+C^2}$. 设考虑在时间 $t$ 观测到的函数 $f_t$ 为:&lt;/p&gt;&#xA;$$&#xA;f_t(x) = \begin{cases}&#xA;Cx &amp; t \equiv 1 \pmod {3} \\&#xA;-x &amp; \text{otherwise} \\&#xA;\end{cases}, \quad x \in [-1,1]&#xA;$$&lt;p&gt;其中 $C&gt;2$ 是一个常数. 从宏观尺度上, $f=\frac{1}{3}(C-2)x$, 最低点在 $x=-1$ 处. 显然 $f$ 和其他超参数满足定理条件, 然而经过 (冗长枯燥的) 计算可以得知, 由于每三次迭代中 $f$ 就会有两次向错误的方向更新, 加上移动平均导致的历史遗忘, 会导致无法正确收敛. 具体过程可以参考原文附录.&lt;/p&gt;&#xA;&lt;p&gt;为了解决这个问题, 作者提出为了确保 $\gamma$ 是单调不减的, 可以在更新时让 $v_{t+1}$ 与 $v_t$ 取一个最大值作为更新值. 由此, 引出 Amsgrad 算法:&lt;/p&gt;&#xA;&lt;div class=&#34;math-block math-algo&#34;&gt;&#xA;    &lt;p class=&#34;math-title&#34;&gt;算法&lt;span class=&#34;math-subtitle&#34;&gt;Amsgrad&lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;Amsgrad 的更新公式如下:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;m_t &amp; = \beta_1 m_{t-1} + (1 - \beta_1) g_t \\&#xA;v_t &amp; = \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \\&#xA;\hat{v}_t &amp;= \max(v_t, \hat{v}_{t-1}) \\&#xA;\theta_t &amp; = \theta_{t-1} - \frac{\eta}{\sqrt{\hat{v}_t} + \epsilon} \odot m_t&#xA;\end{aligned}&#xA;$$&lt;p&gt;此处省略了偏差修正.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;论文 &lt;a class=&#34;link cite-objection&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt; 采取实验证明, Amsgrad 具有更好的收敛性.&lt;/p&gt;&#xA;&lt;h2 id=&#34;辩护与和解&#34;&gt;辩护与和解&#xA;&lt;/h2&gt;&lt;p&gt;既然 Adam 可能不收敛, 那为什么在实际中表现良好呢? 一个直观的批驳是, 论文 &lt;a class=&#34;link cite-objection&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt; 中的反例取的参数相当极端: $\beta_1, \beta_2$ 都很小. 在实际中, 我们通常取 $\beta_1=0.9, \beta_2=0.999$, 这便是论文 &lt;a class=&#34;link cite-converge&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &lt;span class=&#34;material-name&#34;&gt;Unknown-material&lt;/span&gt; &#xA;&lt;/a&gt; 的切入点. 作者认为, 只要 $\beta_1^2 &lt; \beta_2$, 且 $\beta_2$ 充分大, 就可以保证收敛.&lt;/p&gt;&#xA;&lt;p&gt;和 &lt;a class=&#34;link cite-objection&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt;不同, 论文 &lt;a class=&#34;link cite-converge&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt; 更注重实际. 从训练角度上, 一般是分成若干个 Epoch, 每个 Epoch 内处理的都是相同的 $n$ 个函数. 作者对 $f$ 以及其内的 $n$ 个分函数提出了如下要求:&lt;/p&gt;&#xA;&lt;div class=&#34;math-block math-def&#34;&gt;&#xA;    &lt;p class=&#34;math-title&#34;&gt;定义&lt;/p&gt;&#xA;&lt;p&gt;定义集合 $\mathcal{F}$ 为满足如下条件的函数 $f: \mathbb{R}^d \mapsto \mathbb{R}$ 集合:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;$f$ 有界, 即&#xA;$$f \le f^\ast$$&lt;/li&gt;&#xA;&lt;li&gt;所有 $n$ 个时间刻的 $f_t$ 是 Lipschitz 连续的, 即&#xA;$$\|f_t(x) - f_t(y)\| \le L \|x - y\|$$&lt;/li&gt;&#xA;&lt;li&gt;所有 $n$ 个时间刻的 $f_t$ 满足&#xA;$$\sum_{i=0}^{n-1} \| \nabla f_i(x) \|^2 \le D_1 \| \nabla f(x) \|^2 + D_0 $$&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;作者称第三个要求实际上是非常容易的, 事实上确实如此.&lt;/p&gt;&#xA;&lt;p&gt;我们记第 $k$ 个 Epoch 开始时的变量为 $x_k$, 运行到第 $0 \le i &lt; n$ 个函数时为 $x_{k,i}$, 即 $x_k=x_{k,0}=x_{k-1,n}$. 现在, 作者称梯度的上界有保证:&lt;/p&gt;&#xA;&lt;div class=&#34;math-block math-thm&#34;&gt;&#xA;    &lt;p class=&#34;math-title&#34;&gt;定理&lt;/p&gt;&#xA;&lt;p&gt;设 $f(x) \in \mathcal{F}$, 遵守 $\mathcal{F}$ 内定义中的记号. 设 $\beta_1^2 &lt; \beta_2 &lt; 1$, 且 $\beta_2 \ge \gamma(n)$, 学习率衰减 $\eta_k= \frac{\eta}{\sqrt{nk}}$, 则存在某个充分大的 $K$, 对于 $T&gt;K$ 均有:&lt;/p&gt;&#xA;$$&#xA;\min_{k \in [K,T]} \mathbb{E} \left\{ \min \left[ \sqrt{\frac{2D_1d}{D_0}} \| \nabla f(x_k) \|^2, \| \nabla f(x_k) \| \right] \right\} = \mathcal{O} \left( \frac{\log T}{\sqrt{T}} + \sqrt{D_0}\right)&#xA;$$&lt;p class=&#34;math-prf&#34;&gt;证明&lt;/p&gt;&#xA;&lt;p&gt;我们先澄清, 由 $R(T)$ 中的证明, $m_t$ 和 $v_t$ 有上界, 且 $\frac{m_t}{\sqrt{v_t}}$ 也有上界 (证明依然类似, 把 Young 特化成 Cauchy 即可, 此时条件变为 $\beta_1^2 \le \beta_2$).&lt;/p&gt;&#xA;&lt;p&gt;从下降引理出发:&lt;/p&gt;&#xA;$$&#xA;\mathbb{E}f(x_{k+1}) - \mathbb{E}f(x_k) \le \mathbb{E} \left&lt; \nabla f(x_k), x_{k+1} - x_k \right&gt; + \frac{L}{2} \mathbb{E} \|x_{k+1} - x_k\|^2&#xA;$$&lt;p&gt;做累加, 有:&lt;/p&gt;&#xA;$$&#xA;\mathbb{E} \sum_{k=t_0}^T \left&lt; \nabla f(x_k), x_k - x_{k+1} \right&gt; \le \frac{L}{2} \mathbb{E} \sum_{k=t_0}^T \|x_{k+1} - x_k\|^2 + \mathbb{E}f(x_{t_0}) - \mathbb{E}f(x_{T+1})&#xA;$$&lt;p&gt;首先考虑右侧的上界, 这个相对容易, 注意到由于 $m_k$, $v_k$ 都是常量级:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;\mathbb{E} \|x_{k+1} - x_k\|^2 &amp;\le \mathbb{E} \sum_{i=0}^{n-1} \|x_{k,i+1} - x_{k,i}\|^2 \le n \max_{0 \le i &lt; n} \mathbb{E} \|x_{k,i+1} - x_{k,i}\|^2 \\&#xA;&amp;= n\mathcal{O}\left(\frac{\eta_k^2m^2_{k,i}}{v_{k,i}}\right) = \mathcal{O}\left(\frac{1}{k}\right)&#xA;\end{aligned}&#xA;$$&lt;p&gt;因此:&lt;/p&gt;&#xA;$$&#xA;\frac{L}{2} \mathbb{E} \sum_{k=t_0}^T \|x_{k+1} - x_k\|^2 \le \sum_{k=t_0}^T \mathcal{O}\left(\frac{1}{k}\right) = \mathcal{O}(\log T)&#xA;$$&lt;p&gt;关于左侧的下界, 按每一维展开:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;\mathbb{E} \left&lt; \nabla f(x_k), x_k - x_{k+1} \right&gt; &amp;= \eta_k \mathbb{E} \left&lt; \nabla f(x_k), \sum_{i=0}^{n-1} \frac{m_{k,i}}{\sqrt{v_{k,i}}} \right&gt; \\&#xA;&amp;= \eta_k \mathbb{E} \sum_{l=1}^d \sum_{i=0}^{n-1} \partial_l f(x_k) \frac{m_{k,i}^{(l)}}{\sqrt{v_{k,i}^{(l)}}}&#xA;\end{aligned}&#xA;$$&lt;hr&gt;&#xA;&lt;p&gt;以下推导长达数十页, 这里简要概括一下思路. 先考虑其中一维:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;\mathbb{E} \sum_{i=0}^{n-1} \nabla f(x_k) \frac{m_{k,i}}{\sqrt{v_{k,i}}}&#xA;\end{aligned}&#xA;$$&lt;p&gt;其中 $x_k$ 实际上应该是 $x_k^{(l)}$, $\nabla f(x_k)$ 实际上应该是 $\partial_l f(x_k)$.&lt;/p&gt;&#xA;&lt;p&gt;显然一方面, 我们提过 $\frac{m_{k,i}}{\sqrt{v_{k,i}}}$ 是有界的, 由于 Lipschitz 连续, $\nabla f(x_k)$ 也是有界的, 则这一项自然也是有界的, 此界与 $k$ 无关. 因此整个左侧为 $\mathcal{O}(\eta_k) = \mathcal{O}(1/\sqrt{k})$, 这个放缩是平凡的.&lt;/p&gt;&#xA;&lt;!-- &gt; 令人费解的是, 作者在这里大费周章地讨论了 $\nabla f$ 无界的情形, 并把它作为证明讨论的核心. 然而由于 $f_i$ 是 Lipschitz 连续的, 它们的和函数 $f$ 也是 Lipschitz 连续的, 因此 $\nabla f$ 有界. 可能是我的理解有误, 但我认为作者在这里的讨论是多余的. --&gt;&#xA;&lt;p&gt;另一方面, 感性上讲, $v_{k,i} \approx C, m_{k,i} \approx \nabla f_i(x_k)$, 如果这个 $\approx$ 成立, 显然就有左边 $\ge 0$ 了, 这是我们的目标. 是时候做拆分了:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;\sum_{i=0}^{n-1} \nabla f(x_k) \frac{m_{k,i}}{\sqrt{v_{k,i}}} &amp;= \sum_{i=0}^{n-1} \left( \nabla f(x_k) \frac{m_{k,i}}{\sqrt{v_{k,i}}}-\nabla f(x_k) \frac{\nabla f_i(x_k)}{\sqrt{v_{k,i}}}  \right) \\&#xA;&amp;+ \sum_{i=0}^{n-1} \nabla f(x_k) \frac{\nabla f_i(x_k)}{\sqrt{v_{k,i}}}&#xA;\end{aligned}&#xA;$$&lt;p&gt;现在作者称: 两项的 $v_{k,i}$ 均可以换成 $v_{k,0}$, 且不影响量级, 证明太过繁杂这里省略. 我们转而考虑:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;\sum_{i=0}^{n-1} \nabla f(x_k) \frac{m_{k,i}}{\sqrt{v_{k,i}}} &amp;\approx \sum_{i=0}^{n-1} \left( \nabla f(x_k) \frac{m_{k,i}}{\sqrt{v_{k,0}}}-\nabla f(x_k) \frac{\nabla f_i(x_k)}{\sqrt{v_{k,0}}}  \right) \\&#xA;&amp;+ \sum_{i=0}^{n-1} \nabla f(x_k) \frac{\nabla f_i(x_k)}{\sqrt{v_{k,0}}} \\&#xA;\end{aligned}&#xA;$$&lt;p&gt;第二项正是我们的目标:&lt;/p&gt;&#xA;$$M_2 = \frac{\nabla f(x_k)}{\sqrt{v_{k,0}}}\sum_{i=0}^{n-1} \nabla f_i(x_k) = \frac{\| \nabla f(x_k)^2 \|}{\sqrt{v_{k,0}}} \ge 0$$&lt;p&gt;现在全力以赴地考虑第一项, 这是证明的核心, 证明也很繁杂, 涉及大量计算以及对梯度范围的讨论, 这里省略. 最后合并处理得到结论.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;强调一点, 所谓 $\beta_2$ 充分大, 是指 $\beta_2$ 需要大于一个与 $n$ 有关的常数 $\gamma(n)$, 如果 $n$ 不固定, 定理并不能证明什么. 因此, 作者与 &lt;a class=&#34;link cite-objection&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt; 的结论达成了和解, 它们并不矛盾. 在 &lt;a class=&#34;link cite-converge&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt; 中, 作者给出了关于收敛的结论:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;首先, 对于每个函数, 只要满足 $\beta_1^2&lt;\beta_2$, 且 $\beta_2$ 充分大, 则当 $T \to \infty$ 时, 右侧趋于 $\sqrt{D_0}$, 这意味着收敛到一个范围内的点. 特别地, 如果 $D_0=0$, 右侧趋于 $0$, 这意味着收敛到最优点. 这与我们在实际中观察到的现象一致. 作者还给出了一块 &amp;ldquo;危险区域&amp;rdquo;, 只要 $(\beta_1, \beta_2)$ 落在这个区域内, 就会导致 Adam 不收敛. 除此之外的区域, 仍是未知的.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;如果超参数先于函数取值, 注意此时 $n$ 可变. 无论 $(\beta_1, \beta_2)$ 取什么值, 都存在一个函数, 使得 Adam 不收敛. 作者给出的反例是:&lt;/p&gt;&#xA;$$&#xA;    \begin{aligned}&#xA;    f_0(x) &amp;= \begin{cases}&#xA;    nx, &amp; x \ge -1 \\&#xA;    \frac{n}{2}(x+2)^2 - \frac{3n}{2}, &amp; x &lt; -1&#xA;    \end{cases} \\&#xA;    f_i(x) &amp;= \begin{cases}&#xA;    x, &amp; x \ge -1 \\&#xA;    \frac{1}{2}(x+2)^2 - \frac{3}{2}, &amp; x &lt; -1&#xA;    \end{cases} \\&#xA;    \end{aligned}&#xA;    $$&lt;p&gt;在 $n \to \infty$ 时, 不收敛的 &amp;ldquo;危险区域&amp;rdquo; 会变得越来越大, 直到盖住 $(\beta_1, \beta_2)$ 这个点. 这个反例显然要比论文 &lt;a class=&#34;link cite-objection&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt; 中的更加深刻.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;如果超参数在函数之后取值. 前面提到只要条件保证成立, 就可以保证收敛到最优局部或最优点.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;显然, 日常训练中的情形更符合第二种, 我们都是先定义好损失函数, 然后再选择超参数, 因此这也就解释了为什么 Adam 在绝大多数训练中表现良好, 重点在于我们选取的超参数符合定理的要求.&lt;/p&gt;&#xA;&lt;h2 id=&#34;应用-另一个算法&#34;&gt;应用: 另一个算法&#xA;&lt;/h2&gt;&lt;p&gt;遇到了一个基于 Nestorov 等价形式的算法, 和 Adam 非常相似, 于是想能不能直接推广证明, 方便起见暂时叫它 C&amp;rsquo;Adam. 更新公式如下:&lt;/p&gt;&#xA;&lt;div class=&#34;math-block math-algo&#34;&gt;&#xA;    &lt;p class=&#34;math-title&#34;&gt;算法&lt;span class=&#34;math-subtitle&#34;&gt;C&amp;#39;Adam&lt;/span&gt;&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;m_t &amp;= \beta_1 m_{t-1} + (1-\beta_1)g_t \\&#xA;v_t &amp;= \beta_2 v_{t-1} + (1-\beta_2)g_t^2 \\&#xA;\theta_{t+1} &amp;= \theta_t - \frac{\eta}{\sqrt{v_t} + \epsilon} \odot (\beta_1 m_t + g_t)&#xA;\end{aligned}&#xA;$$&lt;/div&gt;&#xA;&lt;p&gt;忽略偏差修正, 可以看到和 Adam 只有最后一行不同. 我尝试着给出一份证收敛性证明. 以下仍然简记 $x_k = x_{k,0}$.&lt;/p&gt;&#xA;&lt;div class=&#34;math-block math-thm&#34;&gt;&#xA;    &lt;p class=&#34;math-title&#34;&gt;定理&lt;/p&gt;&#xA;&lt;p&gt;设 $f(x) = \sum_{i=0}^{n-1} f_i$ 有界, 且任意时刻 $f_t$ 满足 $L$- Lipschitz 连续, 满足增长性条件 $\sum_{i=0}^{n-1} \| \nabla f_i(x) \|^2 \le D_1 \| \nabla f(x) \| ^2 + D_0$ . 设 $\beta_1^2 &lt; \beta_2 &lt; 1$, 且 $\beta_2 \ge \gamma(n)$, 学习率衰减 $\eta_k= \frac{\eta}{\sqrt{nk}}$, 则存在某个充分大的 $K$, 对于 $T&gt;K$ 均有:&lt;/p&gt;&#xA;$$&#xA;\min_{k \in [K,T]} \mathbb{E} \left\{ \min \left[ \sqrt{\frac{2D_1d}{D_0}} \| \nabla f(x_k) \|^2, \| \nabla f(x_k) \| \right] \right\} = \mathcal{O} \left( \frac{\log T}{\sqrt{T}} + \sqrt{D_0}\right)&#xA;$$&lt;p class=&#34;math-prf&#34;&gt;证明&lt;/p&gt;&#xA;&lt;p&gt;从下降引理出发:&lt;/p&gt;&#xA;$$&#xA;\mathbb{E}f(x_{k+1}) - \mathbb{E}f(x_k) \le \mathbb{E} \left&lt; \nabla f(x_k), x_{k+1} - x_k \right&gt; + \frac{L}{2} \mathbb{E} \|x_{k+1} - x_k\|^2&#xA;$$&lt;p&gt;做累加, 有:&lt;/p&gt;&#xA;$$&#xA;\mathbb{E} \sum_{k=t_0}^T \left&lt; \nabla f(x_k), x_k - x_{k+1} \right&gt; \le \frac{L}{2} \mathbb{E} \sum_{k=t_0}^T \|x_{k+1} - x_k\|^2 + \mathbb{E}f(x_{t_0}) - \mathbb{E}f(x_{T+1})&#xA;$$&lt;p&gt;考虑右侧, 后两项是常数级别, 只需要考虑第一项:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;\mathbb{E} \|x_{k+1} - x_k\|^2 &amp;\le \mathbb{E} \sum_{i=0}^{n-1} \|x_{k,i+1} - x_{k,i}\|^2 \le n \max_{0 \le i &lt; n} \mathbb{E} \|x_{k,i+1} - x_{k,i}\|^2 \\&#xA;&amp;\le n \mathcal{O}\left(\frac{\eta_k^2m^2_{k,i}}{v_{k,i}}\right) = \mathcal{O}\left(\frac{1}{k}\right)&#xA;\end{aligned}&#xA;$$&lt;p&gt;这里用到 $\eta_k = \mathcal{O}(1/\sqrt{k})$, 而对于 $m^2_{k,i}/{v_{k,i}}$, 论文已经证明其为有界.&lt;/p&gt;&#xA;&lt;p&gt;从而右边:&lt;/p&gt;&#xA;$$&#xA;RHS \le \sum_{k=t_0}^T \mathcal{O}\left(\frac{1}{k}\right) + C = \mathcal{O}(\log T) + \mathcal{O}(1)&#xA;$$&lt;p&gt;现在考察左侧, 右上角标 $(l)$ 表示第 $l$ 个分量:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;\mathbb{E} \left&lt; \nabla f(x_k), x_k - x_{k+1} \right&gt; &amp;= \eta_k \mathbb{E} \left&lt; \nabla f(x_k), \sum_{i=0}^{n-1} \frac{\beta_1 m_{k,i}+ g_{k,i}}{\sqrt{v_{k,i}}} \right&gt; \\&#xA;&amp;= \eta_k \mathbb{E} \sum_{l=1}^d \sum_{i=0}^{n-1} \partial_l f(x_k) \left( \frac{\beta_1 m_{k,i}^{(l)} + \partial_l f_i(x_k)}{\sqrt{v_{k,i}^{(l)}}}\right)&#xA;\end{aligned}&#xA;$$&lt;p&gt;按分子上的加号拆成两部分. 对于前者, 论文中 (35) 式已经证明了:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;\mathbb{E} \sum_{l=1}^d \sum_{i=0}^{n-1} \partial_l f(x_k) \frac{m_{k,i}^{(l)}}{\sqrt{v_{k,i}^{(l)}}} \ge &amp;\frac{1}{d \sqrt{10D_1d}} \mathbb{E} \min \left[ \sqrt{\frac{2D_1d}{D_0}} \| \nabla f(x_k) \|^2, \| \nabla f(x_k) \| \right] \\&#xA;&amp; - \mathcal{O}\left(\frac{1}{\sqrt{k}}\right) - \mathcal{O}\left(\sqrt{D_0}\right)&#xA;\end{aligned}&#xA;$$&lt;p&gt;对于后者, 再拆分:&lt;/p&gt;&#xA;$$&#xA;\begin{aligned}&#xA;\mathbb{E} \sum_{l=1}^d \sum_{i=0}^{n-1} \partial_l f(x_k) \frac{\partial_l f_i(x_k)}{\sqrt{v_{k,i}^{(l)}}} = \mathbb{E} \sum_{l=1}^d \sum_{i=0}^{n-1} \frac{\partial_l^2 f(x_k)}{\sqrt{v_{k,i}^{(l)}}} + \mathbb{E} \sum_{l=1}^d \sum_{i=0}^{n-1} \partial_l f(x_k) \frac{\partial_l f_i(x_k) - \partial_l f(x_k)}{\sqrt{v_{k,i}^{(l)}}}&#xA;\end{aligned}&#xA;$$&lt;p&gt;前一项显然非负, 后一项即论文中的 $(a_2)$项, 其在引理 G.5 已经证明当 $\beta_2 \to 1$ 时, 此项趋于 $0$.&lt;/p&gt;&#xA;&lt;p&gt;我们综合关于左侧的讨论, 即有:&lt;/p&gt;&#xA;$$&#xA;LHS \ge \beta_1 \sum_{k=t_0}^T \eta_k \left( \frac{1}{d \sqrt{10D_1d}} \mathbb{E} \min \left[ \sqrt{\frac{2D_1d}{D_0}} \| \nabla f(x_k) \|^2, \| \nabla f(x_k) \| \right] - \mathcal{O}\left(\frac{1}{\sqrt{k}}\right) - \mathcal{O}\left(\sqrt{D_0}\right)  \right)&#xA;$$&lt;p&gt;又 $\eta_k = \mathcal{O}(1/\sqrt{k})$, 则 $\sum_{k=t_0}^T \eta_k = \mathcal{O}(\sqrt{T})$, 忽略所有低阶项, 联合左右两端, 我们得到:&lt;/p&gt;&#xA;$$&#xA;\mathcal{O} \left(\sqrt{T}\right) \left( \frac{1}{d \sqrt{10D_1d}} \mathbb{E} \min \left[ \sqrt{\frac{2D_1d}{D_0}} \| \nabla f(x_k) \|^2, \| \nabla f(x_k) \| \right] - \mathcal{O} \left(\sqrt{D_0}\right) \right) \le \mathcal{O}(\log T)&#xA;$$&lt;p&gt;由此移项即得证.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;总结&#34;&gt;总结&#xA;&lt;/h2&gt;&lt;p&gt;Adam 优化器的收敛性问题, 经过多篇论文的讨论, 目前已经有了比较清晰的结论. 论文 &lt;a class=&#34;link cite-original&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt; 中的定理是有漏洞的, 但在实际中, Adam 的表现依然良好. 尽管存在着不收敛的情况, 论文 &lt;a class=&#34;link cite-converge&#34;&gt;[&lt;span class=&#34;material-index&#34;&gt;&lt;/span&gt;]&#xA;    &#xA;&lt;/a&gt; 已经充分表明, 在日常使用中, 只要按照正常习惯选取合理的超参数, 就可以保证收敛, Adam 的实用性至此得到了验证.&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
