知识点

优化方法

  1. 梯度下降
  • 梯度下降是一种优化算法,通过迭代的方式寻找模型的最优参数
  • 所谓最优参数指的是使目标函数达到最小值时的参数;
  • 当目标函数是凸函数时,梯度下降的解是全局最优解;但在一般情况下,梯度下降无法保证全局最优
    • 梯度仅仅指示了对于每个参数各自增长最快的方向;因此,梯度无法保证全局方向就是函数为了达到最小值应该前进的方向
  • 正负号在告诉输入向量应该调大还是调小(正调大,负调小)
  • 每一项的相对大小表明每个参数对函数值达到最值的影响程度;
  1. 随机梯度下降
  • 上一个梯度下降的问题在于每次使用全部的数据进行计算,当数据量很大的时候,需要很大的计算资源。
  • 随机梯度下降每次取一个数据进行计算,计算速度快。
  1. 小批量SGD的更新过程
    每次选择一批数据放到网络中。
  • 使用批训练的另一个主要目的,是为了利用高度优化的矩阵运算以及并行计算框架
    批的大小对于批量SGD的影响
  • 大的批量:得到更加精确的梯度估计

  • 小的批量:能得到更好的泛化误差,原因是添加了干扰,但是意味着更长的训练时间。

  • 批的大小为2的n次方时候,充分利用矩阵运算。
    批运算计算公式


    image.png
  • 存在的问题:
    * 放弃了梯度的准确性,仅采用一部分样本来估计当前的梯度;因此 SGD 对梯度的估计常常出现偏差,造成目标函数收敛不稳定,甚至不收敛的情况。

    • 容易陷入局部最小值,例如峡谷和鞍点

梯度下降的改进:

  • 惯性保持(动量)
  • 环境感知(自适应的调整学习率)
带动量的SGD算法

动量的概念:例如纸团在峡谷中会很慢,来回反弹,但是如果换成铁球会很快,
公式


image.png

动量的迭代更新公式如下


image.png

添加了一个以往的更新方向,假设其上一次的方向和本次方向相同,则会在相同的方向上不断加速。

NAG算法

NAG算法把梯度计算放在对参数附加当前速度之后。


image.png

自适应的梯度更新方法:

AdaGrad

基本思想:

  • 较大的偏导具有较大的学习率,较小的偏导有较小的学习率
    问题:
  • 学习率是单调递减的,训练后期学习率过小会导致训练困难,甚至提前结束

RMSProp

基本思想:解决AdaGrad后期的学习率较小,导致难以训练的问题。

  • 使用指数衰减平均(递归定义)以丢弃遥远的历史,也就是代替r,使其能够在找到某个“凸”结构后快速收敛;此外,RMSProp 还加入了一个超参数 ρ 用于控制衰减速。
    问题:
  • 仍然需要设置一个全局衰减率,还有一个全局学习率。

AdaDelta

  • AdaDelta 进一步解决了 AdaGrad 需要设置一个全局学习率的问题

Adam

  • 除了加入历史梯度平方的指数衰减平均(r)外,还保留了历史梯度的指数衰减平均(s),相当于动量。

基于二阶梯度的牛顿法

  • 梯度下降算法本质上是使用一阶梯度去拟合,而牛顿法使用的是二阶梯度,二阶梯度是一个曲面,反应的是梯度的变化率,一阶梯度是平面。
  • 通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。
  • 通俗理解
    比如你想找一条最短的路径走到一个盆地的最底部,
    梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步;
    牛顿法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。
    所以,牛顿法比梯度下降法看得更远,能更快地走到最底部。
  • 牛顿法优点
    更新速度更快
    -牛顿法缺点:
    每一次都需要计算二阶导数,速度过慢。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容