Optimization algorithms优化算法

1. Mini-batch gradient descent

将训练集拆分成小批量,比如一个小批样例只有1000个训练样例


image.png

小批量梯度下降,每次只对一个小批样例进行计算

  • mini-batch的大小就等于m 这样其实就是批量梯度下降 ,在这种情况下你的mini-batch 只有一个X{1}和Y{1} 而它就等于你的整个训练集
  • 另一极端情况是把mini-batch的大小设为1,就会得到一种叫随机梯度下降的算法
image.png
  • (epoch) 遍历是指过一遍训练集 只不过在批量梯度下降法中 对训练集的一轮处理只能得到一步梯度逼近 而小批量梯度下降法中对训练集的一轮处理 也就是一次遍历 可以得到5000步梯度逼近
  • 当你有一个大型训练集时 小批量梯度下降法比梯度下降法要快得多

2. Understanding mini-batch gradient descent

image.png
image.png

3. Exponentially weighted averages

image.png

4. Understanding exponentially weighted averages

近似认为平均值数,截止到权重项影响值小于1/3时


image.png

5. Bias correction in exponentially weighted averages

  • 使之成为加权平均,消除了偏差
  • 当t值足够大时 偏差修正值对运算将基本没有影响 这也是为什么当t值增大 紫线 和绿线基本重合


    image.png

6. Gradient descent with momentum

有一种算法叫做动量(Momentum) 或者叫动量梯度下降算法 它几乎总会比标准的梯度下降算法更快 一言以蔽之 算法的主要思想是 计算梯度的指数加权平均 然后使用这个梯度来更新权重

image.png

image.png

7. RMSprop

有一个叫做RMSprop的算法 全称为均方根传递(Root Mean Square prop)它也可以加速梯度下降


image.png

8. Adam optimization

image.png
image.png

9. Learning rate decay

image.png
image.png

10. The problem of local optima

要点是

  • 首先 实际上你不太可能陷入糟糕的局部最优点 只要你训练的是一个较大的神经网络 有很多参数 代价函数J定义在一个相对高维的空间上
  • 其次 停滞区是个问题,它会让学习过程变得相当慢 这也是像动量(Momentum)算法或RmsProp算法 或Adam算法能改善你的学习算法的地方 这些场景下 更复杂的算法 比如Adam算法 可以加快沿停滞区向下移动 然后离开停滞区的速度 因为神经网络是在 非常高维的空间上解决优化问题

你可能感兴趣的:(Optimization algorithms优化算法)