一、各优化算法简介
1. 批量梯度下降(Batch gradient descent,BGD)
θ=θ−η⋅∇θJ(θ)
每迭代一步,都要用到训练集所有的数据。
2. 随机梯度下降(Stochastic Gradient Descent,SGD)
θ=θ−η⋅∇θJ(θ;x(i);y(i))
通过每个样本来迭代更新一次,以损失很小的一部分精确度和增加一定数量的迭代次数为代价,换取了总体的优化效率的提升。增加的迭代次数远远小于样本的数量。
缺点:
- 对于参数比较敏感,需要注意参数的初始化
- 容易陷入局部极小值
- 当数据较多时,训练时间长
3. 小批量梯度下降(Mini Batch Gradient Descent,MBGD)
θ=θ−η⋅∇θJ(θ;x(i:i+n);y(i:i+n))
为了避免SGD和标准梯度下降中存在的问题,对每个批次中的n个训练样本,这种方法只执行一次更新。
4. Momentum
vt=γvt−1+η⋅∇θJ(θ)
θ=θ−vt
在参数更新时,一定程度上保留更新之前的方向。在训练的过程中,参数的更新方向十分依赖当前的batch,因此不稳定。加入momentum后,能够让参数一定程度上按照之前变化方向进行更新,使参数更稳定的更新。
优点:
- 下降初期时,使用上一次参数更新,下降方向一致,乘上较大的μ能够进行很好的加速
- 下降中后期时,在局部最小值来回震荡的时候,gradient→0,μ使得更新幅度增大,跳出陷阱
- 在梯度改变方向的时候,μ能够减少更新 总而言之,momentum项能够在相关方向加速SGD,抑制振荡,从而加快收敛
5. Nesterov(NAG)
vt=γvt−1+η⋅∇θJ(θ−γvt−1)
θ=θ−vt