References
- Lecture: https://www.stat.cmu.edu/~ryantibs/convexopt-F18/
- Reading: 最优化: 建模、算法与理论, 刘浩洋等, 2.7 小节.
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, 对应的全梯度为 . 故在每次迭代中, 更新方向为: