差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 后一修订版 | 前一修订版 | ||
| 深度学习:优化算法 [2026/03/02 20:24] – 创建 张叶安 | 深度学习:优化算法 [2026/03/02 21:49] (当前版本) – [4.4.1 大批量训练的挑战] 张叶安 | ||
|---|---|---|---|
| 行 8: | 行 8: | ||
| 集合$C$是凸集,如果对于任意$\mathbf{x}, | 集合$C$是凸集,如果对于任意$\mathbf{x}, | ||
| + | |||
| $$\theta \mathbf{x} + (1-\theta) \mathbf{y} \in C$$ | $$\theta \mathbf{x} + (1-\theta) \mathbf{y} \in C$$ | ||
| 函数$f$是凸函数,如果对于任意$\mathbf{x}, | 函数$f$是凸函数,如果对于任意$\mathbf{x}, | ||
| + | |||
| $$f(\theta \mathbf{x} + (1-\theta) \mathbf{y}) \leq \theta f(\mathbf{x}) + (1-\theta) f(\mathbf{y})$$ | $$f(\theta \mathbf{x} + (1-\theta) \mathbf{y}) \leq \theta f(\mathbf{x}) + (1-\theta) f(\mathbf{y})$$ | ||
| 凸优化问题具有良好的性质: | 凸优化问题具有良好的性质: | ||
| - | - 任何局部最优都是全局最优 | + | |
| - | - 可以使用高效的优化算法 | + | - 可以使用高效的优化算法 |
| - | - 收敛性有理论保证 | + | - 收敛性有理论保证 |
| **神经网络的非凸性** | **神经网络的非凸性** | ||
| 深度神经网络的损失函数通常是高度非凸的,原因包括: | 深度神经网络的损失函数通常是高度非凸的,原因包括: | ||
| - | - 网络结构的非线性 | + | |
| - | - 多个隐藏层导致的函数复合 | + | - 多个隐藏层导致的函数复合 |
| - | - 大量参数形成的复杂损失曲面 | + | - 大量参数形成的复杂损失曲面 |
| 非凸优化的挑战: | 非凸优化的挑战: | ||
| - | - 存在大量局部最优和鞍点 | + | |
| - | - 收敛性难以理论分析 | + | - 收敛性难以理论分析 |
| - | - 初始化对最终结果影响大 | + | - 初始化对最终结果影响大 |
| ==== 4.1.2 收敛性分析 ==== | ==== 4.1.2 收敛性分析 ==== | ||
| 行 36: | 行 38: | ||
| 优化算法的收敛速率描述接近最优解的速度: | 优化算法的收敛速率描述接近最优解的速度: | ||
| - | - $O(\frac{1}{t})$:次线性收敛(SGD) | + | |
| - | - $O(\rho^t)$:线性收敛($\rho < 1$,Gradient Descent for strongly convex) | + | - $O(\rho^t)$:线性收敛($\rho < 1$,Gradient Descent for strongly convex) |
| - | - $O(\frac{1}{t^2})$:加速梯度方法 | + | - $O(\frac{1}{t^2})$:加速梯度方法 |
| **停止准则** | **停止准则** | ||
| 实际训练中常用的停止条件: | 实际训练中常用的停止条件: | ||
| - | - 达到最大迭代次数 | + | |
| - | - 损失变化小于阈值 | + | - 损失变化小于阈值 |
| - | - 验证集性能不再提升(早停) | + | - 验证集性能不再提升(早停) |
| - | - 梯度范数小于阈值 | + | - 梯度范数小于阈值 |
| ===== 4.2 随机梯度下降变体 ===== | ===== 4.2 随机梯度下降变体 ===== | ||
| 行 73: | 行 75: | ||
| AdaGrad的优势: | AdaGrad的优势: | ||
| - | - 适合稀疏梯度(如自然语言处理) | + | |
| - | - 自动调整学习率,无需手动调节 | + | - 自动调整学习率,无需手动调节 |
| - | - 对凸问题有好的理论保证 | + | - 对凸问题有好的理论保证 |
| AdaGrad的局限: | AdaGrad的局限: | ||
| - | - 学习率单调递减,可能过早衰减 | + | |
| - | - 非凸问题上表现不佳 | + | - 非凸问题上表现不佳 |
| ==== 4.2.3 RMSProp与Adadelta ==== | ==== 4.2.3 RMSProp与Adadelta ==== | ||
| 行 141: | 行 143: | ||
| **多步衰减**: | **多步衰减**: | ||
| 在特定epoch进行衰减: | 在特定epoch进行衰减: | ||
| - | - epoch 30: $\eta = 0.1 \eta_0$ | + | |
| - | - epoch 60: $\eta = 0.01 \eta_0$ | + | - epoch 60: $\eta = 0.01 \eta_0$ |
| - | - epoch 90: $\eta = 0.001 \eta_0$ | + | - epoch 90: $\eta = 0.001 \eta_0$ |
| ==== 4.3.3 余弦退火 ==== | ==== 4.3.3 余弦退火 ==== | ||
| 行 165: | 行 167: | ||
| 预热的作用: | 预热的作用: | ||
| - | - 避免早期训练不稳定 | + | |
| - | - 特别是在大批量训练时 | + | - 特别是在大批量训练时 |
| - | - 帮助Adam等自适应优化器更好地估计二阶矩 | + | - 帮助Adam等自适应优化器更好地估计二阶矩 |
| ===== 4.4 大批量训练 ===== | ===== 4.4 大批量训练 ===== | ||
| 行 175: | 行 177: | ||
| 增大批量大小可以提高计算效率(利用硬件并行性),但会带来挑战: | 增大批量大小可以提高计算效率(利用硬件并行性),但会带来挑战: | ||
| - | - **泛化性能下降**:大批量训练的测试误差通常更高 | + | |
| - | - **优化困难**:损失曲面更尖锐,容易陷入尖锐极小值 | + | - **优化困难**:损失曲面更尖锐,容易陷入尖锐极小值 |
| - | - **需要调整学习率**:大批量需要更大的学习率 | + | - **需要调整学习率**:大批量需要更大的学习率 |
| ==== 4.4.2 线性学习率缩放 ==== | ==== 4.4.2 线性学习率缩放 ==== | ||
| 行 243: | 行 245: | ||
| **SGD with Momentum**: | **SGD with Momentum**: | ||
| - | - 优点:泛化性能通常更好,收敛到更平坦的极小值 | + | |
| - | - 缺点:需要仔细调参(学习率、动量系数),对初始学习率敏感 | + | - 缺点:需要仔细调参(学习率、动量系数),对初始学习率敏感 |
| - | - 适用:追求最优泛化性能的场景,如图像分类的最终训练 | + | - 适用:追求最优泛化性能的场景,如图像分类的最终训练 |
| **RMSProp**: | **RMSProp**: | ||
| - | - 优点:自适应学习率,适合非平稳目标 | + | |
| - | - 缺点:没有动量,可能在峡谷区域震荡 | + | - 缺点:没有动量,可能在峡谷区域震荡 |
| - | - 适用:RNN训练,在线学习 | + | - 适用:RNN训练,在线学习 |
| **Adam**: | **Adam**: | ||
| - | - 优点:自适应学习率+动量,对超参数不敏感,训练速度快 | + | |
| - | - 缺点:可能收敛到次优解,泛化性能可能不如SGD | + | - 缺点:可能收敛到次优解,泛化性能可能不如SGD |
| - | - 适用:大多数情况,特别是稀疏梯度、大规模数据集 | + | - 适用:大多数情况,特别是稀疏梯度、大规模数据集 |
| ==== 例题4.2 学习率调度计算 ==== | ==== 例题4.2 学习率调度计算 ==== | ||
| 行 327: | 行 329: | ||
| ==== 填空题 ==== | ==== 填空题 ==== | ||
| - | 6. Nesterov加速梯度与普通Momentum的主要区别是______。 | + | 6. Nesterov加速梯度与普通Momentum的主要区别是$\_\_\_\_$。 |
| - | 7. AdaGrad的主要局限是______。 | + | 7. AdaGrad的主要局限是$\_\_\_\_$。 |
| - | 8. 线性学习率缩放原则指出,批量大小增加k倍,学习率应______。 | + | 8. 线性学习率缩放原则指出,批量大小增加k倍,学习率应$\_\_\_\_$。 |
| - | 9. 预热策略的主要作用是______。 | + | 9. 预热策略的主要作用是$\_\_\_\_$。 |
| - | 10. L-BFGS相比于标准BFGS的主要改进是______。 | + | 10. L-BFGS相比于标准BFGS的主要改进是$\_\_\_\_$。 |
| ==== 计算题 ==== | ==== 计算题 ==== | ||
| 行 378: | 行 380: | ||
| 11. **解答**: | 11. **解答**: | ||
| | | ||
| - | | + | 逐步计算: |
| + | |||
| + | | t | $g_t$ | $m_t$ | $v_t$ | | ||
| + | | 1 | 0.5 | 0.05 | 0.0005 | | ||
| + | | 2 | -0.3 | 0.015 | 0.00035 | | ||
| + | | 3 | 0.2 | 0.0335 | 0.00028 | | ||
| + | | 4 | 0.1 | 0.0402 | 0.00022 | | ||
| + | | 5 | -0.4 | -0.0038 | 0.00018 | | ||
| | | ||
| - | | t | $g_t$ | $m_t$ | $v_t$ | | + | 偏差校正($t=5$): |
| - | |---|-------|-------|-------| | + | |
| - | | 1 | 0.5 | 0.05 | 0.0005 | | + | $$\hat{m}_5 = \frac{-0.0038}{1-0.9^5} = \frac{-0.0038}{0.4095} \approx |
| - | | 2 | -0.3 | 0.015 | 0.00035 | | + | |
| - | | 3 | 0.2 | 0.0335 | 0.00028 | | + | $$\hat{v}_5 = \frac{0.00018}{1-0.999^5} = \frac{0.00018}{0.005} \approx |
| - | | 4 | 0.1 | 0.0402 | 0.00022 | | + | |
| - | | 5 | -0.4 | -0.0038 | 0.00018 | | + | |
| | | ||
| - | 偏差校正($t=5$): | + | 参数更新量: |
| - | $$\hat{m}_5 = \frac{-0.0038}{1-0.9^5} = \frac{-0.0038}{0.4095} \approx -0.0093$$ | + | |
| - | $$\hat{v}_5 = \frac{0.00018}{1-0.999^5} = \frac{0.00018}{0.005} \approx 0.036$$ | + | $$\Delta\theta = -\frac{0.001}{\sqrt{0.036} + 10^{-8}} \times (-0.0093) \approx 0.00049$$ |
| - | + | ||
| - | | + | |
| - | $$\Delta\theta = -\frac{0.001}{\sqrt{0.036} + 10^{-8}} \times (-0.0093) \approx 0.00049$$ | + | |
| 12. **解答**: | 12. **解答**: | ||
| | | ||
| - | | + | 衰减函数:$\eta_t = 0.1 \times 0.1^{\lfloor t/30 \rfloor}$ |
| | | ||
| - | - $t=10$:$\lfloor 10/30 \rfloor = 0$,$\eta = 0.1 \times 1 = 0.1$ | + | $t=10$:$\lfloor 10/30 \rfloor = 0$,$\eta = 0.1 \times 1 = 0.1$ |
| - | | + | |
| - | | + | $t=35$:$\lfloor 35/30 \rfloor = 1$,$\eta = 0.1 \times 0.1 = 0.01$ |
| + | |||
| + | $t=70$:$\lfloor 70/30 \rfloor = 2$,$\eta = 0.1 \times 0.01 = 0.001$ | ||
| - | --- | ||
| - | **本章完** | ||