斯坦福CS231n计算机视觉-神经网络参数更新机制

梯度下降法(Gradient descent update,SGD)

斯坦福CS231n计算机视觉-神经网络参数更新机制

最后一行就是梯度下降的公式,只是简单的相乘。

存在问题:

斯坦福CS231n计算机视觉-神经网络参数更新机制

梯度的不连续性会导致参数来回震荡,所以收敛的比较慢。

动量更新(momentum update)

斯坦福CS231n计算机视觉-神经网络参数更新机制

斯坦福CS231n计算机视觉-神经网络参数更新机制

可以看到就是本次更新和上几次的更新还有关系,原来相当于一个没有质量的球滚动,现在考虑了球的质量,有一定的惯性。V一般初始化为0,mu一般为0.5, 0.9, or 0.99,如果为1则不断震荡,相当于之前的更新不会衰减,更新速度上比SGD要快。

Nesterov Momentum update

斯坦福CS231n计算机视觉-神经网络参数更新机制

 

关键在于不使用本点的梯度,而是用预测的下一个点的梯度。

斯坦福CS231n计算机视觉-神经网络参数更新机制

斯坦福CS231n计算机视觉-神经网络参数更新机制

具体怎么计算以后再看。

AdaGrad update

斯坦福CS231n计算机视觉-神经网络参数更新机制

基于凸优化提出的一种更新方法,中心思想为:梯度大的方向更新权值小。为什么呢?一般的神经网络训练中,梯度大的方向减慢速度才是好的策略,因此才有AdaGrad update,可能是经验性的结论。注意:1E-7平滑因子超参数,因为一开始cache为0。但有一个问题就是cache会逐渐变得越来越大,从而dX逐渐会变成0,很可能还没有收敛到最优解就停止了计算,于是提出:RMSProp update

RMSProp update

斯坦福CS231n计算机视觉-神经网络参数更新机制

是AdaGrad update的改进,其实就是在cache更新上添加了一个衰减超参数,让cache不会那么大,一般来说效果会比AdaGrad update好。

Adam update

斯坦福CS231n计算机视觉-神经网络参数更新机制

其实就是结合了两种类型的参数更新方式,即加入动量的概念,又使用梯度大的方向更新权值小的思想。具体来说,Beta1一般0.9,beta2一般0.995

实际应用:

斯坦福CS231n计算机视觉-神经网络参数更新机制

加入偏置矫正概念,偏置矫正是针对M、V初始化为0的补偿措施,防止一开始不正确,只会在最初几次更新中改变值。

在几种方法中,Adam update最快(2017年)

不同学习率的影响

斯坦福CS231n计算机视觉-神经网络参数更新机制

什么是一个好的学习率?

应该在不同阶段使用不同的学习率,一开始使用高的学习率而后逐渐降低,相当于逐渐降低系统能量,否则会在比较好的几个解之间跳动。

有以下几种衰减方式:

斯坦福CS231n计算机视觉-神经网络参数更新机制

二阶优化

斯坦福CS231n计算机视觉-神经网络参数更新机制

优势:没有学习率,没有超参数,能更快的收敛

用到Hessian 矩阵。

但是运算量很大,需要存储大量数据,对噪声敏感,有时候不能实现,大型神经网络不适用。

结论:

一般使用adam,权衡的结果。