References

1. Stochastic Algorithm

为方便讨论, 这里给出一个随机优化在有监督学习中的典型应用.

  • 有输入特征 和输出标签 , 且 . 目标是学习一个函数 使得 能够很好地预测 . 此外, 往往对 的假设空间 进行限制以缩小搜索范围, 参数化为 , 其中 是模型参数. 通过引入一个损失函数 来衡量预测误差, 以及正则项 来保证解的某些性质, 可以将学习问题表述为如下优化问题:

  • 在实践中, 我们通常只能获得一个有限的训练数据集 来近似 . 因此, 优化问题可以表述为:

在下面的讨论中, 为表述习惯, 我们将优化问题重新表述为如下形式, 并且暂时假设 为可微且凸的函数.

  • 此处可将正则项并入每个分量函数(例如 ), 或暂时令 以专注讨论随机梯度估计本身; 后续结论不依赖具体拆分方式.

2. Stochastic Gradient Descent

2.1 SGD and Mini-batch SGD

考虑原始的梯度下降算法:

  • 由于经验风险为 , 则全梯度就是 . 计算全梯度需要遍历整个数据集, 当 很大时, 计算成本非常高.

SGD 随机梯度法则通过在每次迭代中随机选择一个样本 来近似梯度:

  • 这里, 是从 中随机等可能抽样得到的索引. 用单个样本的梯度近似整个数据集的梯度, 大大降低了每次迭代的计算成本.

  • 该操作的合理性在于, 当给定 时, 的无偏估计, 即 .

    Proof of unbiasedness

    由于 是从 中随机等可能抽样得到的索引, 则有:

不过只选取一个样本的梯度会引入较大的方差, 导致 SGD 的收敛速度较慢. 为了平衡计算效率和收敛速度, 一般使用 mini-batch SGD, 即在每次迭代中随机选择一个小批量的样本 来近似梯度:

此外, 对于不可微的优化问题, 也可以考虑使用随机次梯度法则:

其中 处的一个次梯度.

2.2 Variants of SGD

SGD 方法有一系列的变体, 旨在提高收敛速度和稳定性.

Momentum SGD

传统的 SGD 和 GD 类似, 在较为病态的优化问题中可能会出现收敛缓慢的情况. Momentum 方法通过引入一个动量项来加速收敛, 并在高曲率或噪声场景中提供更为有效的更新.

Momentum SGD 的更新规则如下:

  • 给定动量参数 (通常取 ), 初始化动量向量 .
  • 在迭代 中, 更新动量和参数:
    • 抽取随机样本索引 .

此处, 为动量向量, 用于累积历史梯度信息, 从而在更新参数时考虑历史梯度的方向和大小. 控制了动量的衰减程度, 较大的 带来较大的惯性, 保留了更多的历史梯度信息, 但可能导致震荡; 较小的 则更快地响应当前梯度, 但可能失去加速效果.

Nesterov Accelerated Gradient (NAG)

Nesterov Accelerated Gradient (NAG) 是 Momentum 方法的一种改进, 通过在计算梯度时提前考虑动量的影响来进一步加速收敛. NAG 的更新规则如下:

  • 给定动量参数 , 步长 固定或由线搜索确定.
  • 上述 序列是确定性加速理论中的一种典型选择; 在深度学习随机训练中更常见的是固定动量系数 (如 ) 的 Nesterov momentum.
  • 在迭代 中:
    • 初始化时可令 (或等价地令初始动量为 ), 以保证首步定义良好.

NAG 方法等价于如下的 Momentum 更新:

相比于之前的 Momentum 方法, NAG 方法先计算一个“预更新”位置 , 然后在该位置计算梯度, 从而更准确地调整更新方向.

AdaGrad

AdaGrad 是一种自适应学习率方法, 通过根据历史梯度的累积调整每个参数的学习率来提高收敛速度. 在普通的 SGD 中, 每个参数的更新步长是相同的; 而 AdaGrad 将考虑梯度的每个分量的历史累计情况, 来调整每个参数的学习率.

具体而言, 对于梯度 , 定义累计量:

其中 表示元素级乘积. 是一个向量, 其第 个分量 表示到第 次迭代为止第 个参数的梯度平方累计.

  • 若某分量的数值较大, 则说明该参数在之前的迭代中经历了较大的梯度累积, 历史变化较为剧烈, 因此需要较小的学习率来稳定更新
  • 反之, 若某分量的数值较小, 则说明该参数在之前的迭代中经历了较小的梯度累积, 历史变化较为平稳, 可以使用较大的学习率来加速更新.

AdaGrad 的更新规则为:

  • 给定初始学习率 和一个小的常数 (用于数值稳定), 初始化 , 以及起点 .
  • 在迭代 中:
    • 抽取随机样本索引 并计算随机梯度 .
    • .
    • .

AdaGrad 也可以当作是一种介于一阶方法和二阶方法之间的优化算法. 考虑 处的二阶 Taylor 展开:

根据 的不同选择, 可以得到不同的优化算法. 而在上面的索引约定(先更新 , 再更新 )下, AdaGrad 对应

RMSProp

RMSProp (Root Mean Square Propagation) 是 AdaGrad 的一种改进, 该方法在非凸问题上的表现可能更好.

  • 注意到 AdaGrad 的更新步长 中的累计量会随迭代不断增大, 导致学习率逐渐单调下降, 最终趋近于零, 从而使得算法在后期的迭代中几乎没有更新.
  • RMSProp 通过引入一个衰减因子 来计算梯度平方的指数加权移动平均, 从而避免了学习率过快下降的问题.

具体地, 将 AdaGrad 中的 累积项改进为:

从而得到 RMSProp 的更新规则:

  • 给定初始学习率 , 衰减因子 (一般取 ) 和一个小的常数 , 初始化 , 以及迭代起点 .
  • 在迭代 中:
    • 抽取并计算随机梯度 .
    • 计算 .
    • 更新 .

其中 即为所谓的 RMS (Root Mean Square).

AdaDelta

AdaDelta 是 RMSProp 的一种改进, 旨在进一步提高优化算法的适应性和鲁棒性. 其和 RMSProp 一样需要维护 以指数加权移动平均的方式来计算梯度平方的平均值. AdaDelta 在此基础上, 引入了一个新的累积项 来跟踪参数更新的平方和, 从而将 替换为一个自适应的学习率:

  • 累积梯度为: .
  • 累积更新为: , 其中 是第 次迭代的实际更新.

其具体更新规则为:

  • 给定衰减因子 和一个小的常数 , 初始化 .
  • 在迭代 中:
    • 抽取并计算随机梯度 .
    • 计算累积梯度: .
    • 计算更新方向: .
    • 更新参数: .
    • 计算累积更新: .

Adam

Adam (Adaptive Moment Estimation) 本质上是包含了 Momentum 和 RMSProp 的优化算法, 通过同时考虑梯度的一阶矩和二阶矩来调整每个参数的学习率. Adam 的优势在于偏差校正可缓解零初始化造成的一阶/二阶矩低估, 同时二阶矩分母可抑制坐标方向上的过大更新, 从而使参数更新更平稳.

具体而言, Adam 进行了如下的调整:

  • 从之前的梯度作为更新方向改为对梯度的历史指数加权累计: , 其中 是一阶矩的衰减率, 通常取 .
  • 同时其也会记录梯度的二阶矩: , 其中 是二阶矩的衰减率, 通常取 .
  • 在正式更新参数之前, 还要额外进行了偏差校正:
    • , . 其中 分别是 次幂, 用于校正初始时刻的偏差.

Adam 的更新规则为:

  • 给定初始学习率 , 衰减率 和一个小的常数 , 初始化 , 及迭代起点 .
  • 在迭代 中:
    • 抽取并计算随机梯度 .
    • 更新一阶矩: .
    • 更新二阶矩: .
    • 进行偏差校正: , .
    • 更新参数: .

3. Convergence Analysis of SGD

3.1 Convergence under General Convexity

首先讨论在一般凸函数上的收敛性. 有如下假设:

  • 每个 都是闭凸函数, 存在 subgradient.
  • 随机次梯度的二阶矩有界, 即存在常数 使得 对于所有 都成立, 其中 是随机样本 处的一个次梯度.
    • 这是随机次梯度范数二阶矩有界假设(并非直接等同于方差定义), 它保证了 SGD 更新噪声可控.
  • 迭代点到最优点的距离有界. 即存在常数 使得 对于所有 都成立.

注: 在进行 SGD 的收敛分析时, 由于每次迭代的更新方向是随机的, 因此我们通常关注的是算法的期望行为或者高概率行为. 此外, 对于某一个具体的迭代点 , 由于 的随机性, 其更新方向 也是随机的, 因此我们通常也会考虑这些迭代点的平均重心 来分析算法的收敛性.

Lemma (SGD 的累计误差). 在上述假设下,令 是任意正步长序列, 是 SGD 迭代生成的点列, 则对于任意 , 都有如下不等式成立:

Proof of the cumulative-error lemma

  • 是指在第 次迭代中, 随机选择的样本 处的一个次梯度. 记 处的随机次梯度的条件期望, 则由 SGD 估计的无偏性可知 . 记 为随机次梯度的噪声, 则 .

  • 由次梯度的性质 , 可以推得:

  • 又根据条件期望 , 利用重期望可以得到:. 因此, 对上述不等式两边取期望, 可以得到:

  • 将上述不等式对 进行求和, 可以得到:

  • 上述引理在说明:
    • SGD 的累计误差 (即 ) 可以被初始点与最优点之间的距离 和噪声项 控制.
    • 这为我们分析 SGD 的收敛性提供了一个重要的工具, 因为它将算法的性能与初始条件和随机梯度的方差联系起来.

Theorem (SGD 的收敛性 1: 在步长加权平均意义下的收敛). 在上述假设下, 定义步长加权平均点 , 则对于任意 , 都有如下期望意义下的收敛性保证:

Proof of the stepsize-weighted averaging theorem

  • , 则 . 由于 是凸函数, 由 Jensen Inequality 可以得到:

  • 两侧同时减去 并取期望, 可以得到:

  • 结合之前的引理, 可以得到:

  • 由上述定理可以看出, SGD 的收敛速度取决于步长序列 的选择.
    • 例如, 当 时, 随机梯度下降算法在期望意义下收敛到最优值, 即 .
    • 若选择 为一个固定步长 , 则其在期望意义下是不收敛的, 即 . 此时只能确定一个次优解的误差上界, 但无法保证其收敛到最优值.

Theorem (SGD 的收敛性 2: 不增步长序列下的等权平均收敛). 在上述假设下, 定义等权平均点 , 且要求步长序列 是一个不增的正数列, 则对于任意 , 都有如下期望意义下的收敛性保证:

  • 该定理与前一定理的主要区别在于, 前者是针对步长加权平均点 的收敛性保证, 而后者则是针对等权平均点 的收敛性保证, 其额外只需要要求步长序列 是一个不增的正数列即可.
  • 通过选择合适的步长序列, 例如 , 可以得到 的收敛速度, 这也是 SGD 在一般凸函数上的最优收敛速度.
    • 特别地, 取 , 则可以得到 的收敛速度.

Discussion: 讨论

在一般凸且可能非光滑的设定下, 确定性次梯度法与随机次梯度法在最优量级上都可达到 . 但若进一步假设目标函数光滑, 则确定性梯度下降可达到 (加速法可达 ), 而朴素 SGD 在不做方差缩减时通常仍是 量级.

Theorem (SGD 的收敛性 3: 衰减步长下的依概率收敛). 在上述假设下, 定义等权平均点 , 且选择步长 (如 ), 则有如下依概率收敛性保证:

或等价地

Proof of convergence in probability

  • 由于 , 则由 Theorem 2 可以得到 .

  • 根据 Markov 不等式, 对任意 , 可以得到:

Theorem (SGD 的收敛性 3’: 衰减步长下的依概率收敛速度). 在上述假设下, 进一步假设对于所有次梯度 都满足 几乎处处成立, 则对于任意 , 可保证如下收敛以至少 的概率成立:

  • 特别地, 若取 , , 则可以得到如下概率收敛速度:

3.2 Convergence under Strong Convexity

下面给出一个更常见且自洽的复杂度对比(按分量梯度计算次数计; 忽略条件数常数细节). 其中 是样本数, 是条件数:

方法 \ 目标类凸, 可能非光滑凸且 -smooth-强凸且 -smooth
SGD (无方差缩减)
Full GD (每步全梯度)
方差缩减 (SVRG/SAGA/SAG 等)通常不主打该设定通常不主打该设定
  • 在强凸光滑且追求高精度时, 方差缩减方法通常优于朴素 SGD, 这也是其主要动机.
  • 在中低精度或 极大时, SGD 由于单步成本低, 仍可能更具实践优势.

4. Variance Reduction Techniques for SGD

4.1 Consequences of Variance in SGD

假设目标函数 -强凸的,并且 -光滑的,那么对于任意的 ,都有:

  • 强凸:
  • 光滑:

记更新为 , 并定义噪声

再记 . 则可得到如下典型递推:

  • 通过上面的分解可以看到, 总的误差由两部分组成:
    • A: 确定性收缩项, 由步长 , 强凸参数 和光滑参数 决定; 当 合适时该项带来线性收缩趋势.
    • B: 噪声驱动项, 反映随机梯度的条件方差效应.
      • 若使用常数步长, B 项不会自动消失, 常导致收敛到一个与步长相关的误差地板.
      • 若使用递减步长, B 项可随迭代减弱, 在强凸设定下可获得 量级结果.
      • 方差缩减方法 (SVRG/SAGA/SAG 等) 的核心就是削弱 B 项对后期收敛的限制.

4.2 Variance Reduction Techniques

SAG and SAGA

SAG (Stochastic Average Gradient) 和 SAGA 通过维护历史梯度来减少随机梯度的方差.

SAG 方法会维护一个梯度存储表 , 其中 表示“第 次迭代开始时”第 个样本的存储梯度. 在每次迭代中, 随机选择一个样本索引 , 用新梯度覆盖该位置, 并使用全表平均梯度更新参数. 其具体更新规则为:

  • 初始化: 对于所有 , 以及起点 .
  • 在迭代 中:
    • 随机选择一个样本索引 .
    • 计算新梯度: .
    • 更新梯度表: , 且 .
    • 更新参数: .

在强凸光滑假设下, 对于固定步长 , 及零梯度初始化, SAG 的收敛速度为:

SAG 的缺点是在于其需要维护一个 维的梯度列表, 当数据集较大时, 其内存开销较大. 另一方面, SAG 的随机梯度估计是有偏的, 因此 SAGA 则使用一个无偏的随机梯度估计来改进 SAG. 若第 步开始时存储表为 , 则:

并在步末更新 , 其余分量保持 .

SVRG

SVRG 通过周期性记录全梯度 checkpoint, 并在每次迭代时通过与 checkpoint 的全梯度进行差分来减少随机梯度的方差. 记 是第 个 checkpoint, 对应的全梯度为 . 故在每次迭代中, 更新方向为: