优化算法

2024-09-20

优化和深度学习

11.1. 优化和深度学习 — 动手学深度学习 2.0.0 documentation (d2l.ai)

  • 最小化训练误差并不能保证我们找到最佳的参数集来最小化泛化误差。
  • 优化问题可能有许多局部最小值。
  • 一个问题可能有很多的鞍点,因为问题通常不是凸的。
  • 梯度消失可能会导致优化停滞,重参数化通常会有所帮助。对参数进行良好的初始化也可能是有益的。

凸性

11.2. 凸性 — 动手学深度学习 2.0.0 documentation (d2l.ai)

在深度学习的背景下,凸函数的主要目的是帮助我们详细了解优化算法。 我们由此得出梯度下降法和随机梯度下降法是如何相应推导出来的。

  • 凸集的交点是凸的,并集不是。
  • 根据詹森不等式,“一个多变量凸函数的总期望值”大于或等于“用每个变量的期望值计算这个函数的总值“。
  • 一个二次可微函数是凸函数,当且仅当其Hessian(二阶导数矩阵)是半正定的。
  • 凸约束可以通过拉格朗日函数来添加。在实践中,只需在目标函数中加上一个惩罚就可以了。
  • 投影映射到凸集中最接近原始点的点。

梯度下降

11.3. 梯度下降 — 动手学深度学习 2.0.0 documentation (d2l.ai)

  • 学习率的大小很重要:学习率太大会使模型发散,学习率太小会没有进展。
  • 梯度下降会可能陷入局部极小值,而得不到全局最小值。
  • 在高维模型中,调整学习率是很复杂的。
  • 预处理有助于调节比例。
  • 牛顿法在凸问题中一旦开始正常工作,速度就会快得多。
  • 对于非凸问题,不要不作任何调整就使用牛顿法。

随机梯度下降

11.4. 随机梯度下降 — 动手学深度学习 2.0.0 documentation (d2l.ai)

  • 对于凸问题,我们可以证明,对于广泛的学习率选择,随机梯度下降将收敛到最优解。
  • 对于深度学习而言,情况通常并非如此。但是,对凸问题的分析使我们能够深入了解如何进行优化,即逐步降低学习率,尽管不是太快。
  • 如果学习率太小或太大,就会出现问题。实际上,通常只有经过多次实验后才能找到合适的学习率。
  • 当训练数据集中有更多样本时,计算梯度下降的每次迭代的代价更高,因此在这些情况下,首选随机梯度下降。
  • 随机梯度下降的最优性保证在非凸情况下一般不可用,因为需要检查的局部最小值的数量可能是指数级的。

小批量随机梯度下降

11.5. 小批量随机梯度下降 — 动手学深度学习 2.0.0 documentation (d2l.ai)

动量法

11.6. 动量法 — 动手学深度学习 2.0.0 documentation (d2l.ai)

AdaGrad算法

11.7. AdaGrad算法 — 动手学深度学习 2.0.0 documentation (d2l.ai)

RMSProp算法

11.8. RMSProp算法 — 动手学深度学习 2.0.0 documentation (d2l.ai)

Adadelta

11.9. Adadelta — 动手学深度学习 2.0.0 documentation (d2l.ai)

Adam算法

11.10. Adam算法 — 动手学深度学习 2.0.0 documentation (d2l.ai)

学习率调度器

11.11. 学习率调度器 — 动手学深度学习 2.0.0 documentation (d2l.ai)