一、有关梯度下降
- 随机梯度下降(SGD)、小批量随机梯度下降(MBGD)和批量随机梯度下降(BGD):
- SGD:每处理一个样本,即进行一次梯度下降。设样本数为x,一个周期内进行x次梯度下降。
(1)梯度下降过程十分曲折,但一般也会朝着最小值方向移动,最后在最小值附近震荡,不会停留在最小值。
(2)耗时过长 - MBGD:把样本分为多个batch,每处理一个batch的样本,即进行一次梯度下降,一个周期内进行x/batch_size次梯度下降。
(1)不保证每次朝梯度最小移动,但比SGD震荡幅度减小许多,且不会在最小值附近徘徊。
(2)可矢量计算 - BGD:每完整处理所有样本一次再进行一次梯度下降。一个周期进行一次梯度下降。
(1)失去矢量计算优势,不高效。
batch_size设为2的n次方可加速计算
- 对比:
- 对于小批量随机梯度下降:
批量大小=样本数量:等价于梯度下降
批量大小=1:等价于随机梯度下降 - 小批量随机梯度下降和随机梯度下降的学习率需要自我衰减
- 指数加权移动平均:
- vt=β*vt-1+(1-β)*θt(建议β取0.9)
- 对前面1/(1-β)的数求平均。β越大,合成曲线越平滑。且会右移,因为取平均的数量较大,存在延迟。
- 优势:节省空间,代码简单
二、动量法
- 梯度下降仅仅取决于当前自变量的值会带来问题