失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > CS231n李飞飞计算机视觉 神经网络训练细节part2上

CS231n李飞飞计算机视觉 神经网络训练细节part2上

时间:2023-11-02 12:14:59

相关推荐

CS231n李飞飞计算机视觉 神经网络训练细节part2上

神经网络训练细节part2上

参数更新机制

SGDMomentum updateNesterov Momentum updateAdaGrad updateRMSProp updateAdam update

SGD

随机梯度下降:

x += - learning_rate * dx

特点:如果在水平方向上梯度较小,而在垂直方向上梯度较大,会造成在水平方向更新较慢,而在垂直方向上造成上下抖动。收敛速度慢。

Momentum update

动量更新

v = mu*v - learning_rate * dxx += v

借用物理学动量的思想,给参数更新加上一个动量。其中mu是超参数,通常设置在0.5到0.9之间,v的初始值为0。

特点:(1)收敛速度比SGD快。(2)从实现可以看出动量更新会逐渐放慢速度,最终停下来。

Nesteriov Momentum update

不同于动量更新,动量更新是当前的梯度加上当前的动量值,得到实际更新的方向,而Nestreriov Momentum update是用当前的动量加上预测的梯度得到更新的方向。

左边:

右边:

特点:比前面两种更新速度更快地向最优解靠近。

AdaGrad update

cache += dx**2x += learning_rate * dx / (np.sqrt(cache) + 1e-7 )

在更新时,考虑到了数据每一维的规模。其中1e-7是为了防止分母为0的情况出现。

特点:(1)补偿措施。比如垂直方向上梯度较大,水平方向上梯度较大,在用AdaGrad进行更新参数时,就会用垂直方向上的梯度除以对应的cache会使更新的梯度值较小,而同理会使水平方向上的梯度值较大,这在一定程度上是一种补偿措施。因为网络很多情况下需要在梯度大的方向上得到梯度叫较小的更新。(2)网络最终会停止。因为cache会不断变大,会使更新步长越来越小,最终会使网络停止更新,而网络需要不断更新。

RMSProp update

cache = dacay_rate * cache + (1 - decay_rate) * dx**2x += - learning_rate * dx / (np.sqrt(cache) + 1e-7)

该方法对AdaGrad的最终停止更新做出了改善,decay_rate是一个超参数,名为衰减率,一般设置为0.99。

特点:具备AdaGrad的全部优点,并且不会过早停止。

Adam update

m = beta1*m + (1-beta1)*dxv = beta2*v + (1-beta2)*(dx**2)x += - learning_rate * m / (np.sqrt(v) + 1e-7)

是动量和RMSProp的一种结合。

实际上实现的时候会有偏置矫正,一开始的时候数据可能不正确,在最初几次更新中,使m和v较大,不会过小。

m = beta1*m + (1-beta1)*dxv = beta2*v + (1-beta2)*(dx**2)m /= 1-beta1**tv /= 1-beta2**tx += - learning_rate * m / (np.sqrt(v) + 1e-7)

学习率:最初使用较高的学习率,然后逐渐减小学习率。

如果觉得《CS231n李飞飞计算机视觉 神经网络训练细节part2上》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。