本周将如何是的自己的算法更快
1.mini-batch梯度下降
同时处理的不再是整个X和Y,而是一部分X^{1}、Y^{1}...这样可以使梯度下降先处理一部分,加快训练速度。
batch来源于整个训练集合训练完成梯度下降,mini-batch是分割数据集后进行多次梯度下降。
epoch 代表完全遍历集合一次,batch只能做一次梯度下降,而mini-batch可以做多次(和分割的大小有关)
2.理解mini batch
mini batch的大小:
最大size=m, 则变成了batch,代词迭代时间太长(尤其是大数据的情况)
最小size=1,则变成了随机梯度下降,这种会走很多弯路而且不会收敛,只会在最小值附近徘徊;会失去所有向量化带来的加速
所以合理的大小在1和m中间(绿色),也会出现不收敛的情况,这是可以调小学习率来解决。
如何选择mini batch的大小:
3.指数加权平均
比梯度下降更快的解决方法
举例:伦敦一年每天的的气温:
1/(1-B)代表了多少天的数据做平均:
越大是越长时间段的温度做平均,对于当天的温度就约不敏感(绿色)
越小则对当天的温度变化更敏感,但是会出现一些异常值(黄)
4.理解指数加权平均
5.指数加权平均的偏差修正
只能使早起的更加准确,有的人宁愿熬过早起去获取后面的数据。
紫色修正偏差后变成绿色
6. 动量梯度下降(Momentum)
计算梯度的指数加权平均数,并利用该梯度更新权重
左边的公式比较好:
7. RMSprop(root mean square prop)
可以实现类似水平方向加快而竖直方向减慢的效果:
和上面的方法一样,可以消除”摆动“,用更大的学习率alpha,加快速度
8. Adam优化算法(本质是结合Momentum和RSMprop)
Adam(Adaptive Moment Estimation)
9. 学习率衰减
在刚开始的时候使用较大的学习率,当接近目标后用较小的学习率,就可以使得在目标附近较小的范围内(绿色)。
常用方法:
其他方法:三种
10. 局部最优
比起在高纬度陷入局部最优,可能性更高的是在鞍点:
平滑区域:很长一段时间导数为0,也是为什么Adam等方法能够加速的原因