5/1-3 BP神经网络的改进及MATLAB实现(下)

5/1-3 BP神经网络的改进及MATLAB实现(下)

文章目录

  • 5/1-3 BP神经网络的改进及MATLAB实现(下)
    • 1. 自适应梯度下降法(Adagrad )
    • 2.动量法(momentum)

1. 自适应梯度下降法(Adagrad )

\qquad 我们知道,在更新权重与偏置时设置了学习率 η \eta η控制下降速度详见5/1-1 神经网络识别手写数字及MATLAB程序。
W k = W k − 1 − η ∂ C ∂ W k − 1 W^{k}=W^{k-1}-\eta\frac{\partial C}{\partial W^{k-1}} Wk=Wk1ηWk1C b k = b k − 1 − η ∂ C ∂ b k − 1 b^{k}=b^{k-1}-\eta\frac{\partial C}{\partial b^{k-1}} bk=bk1ηbk1C其中C为损失函数。若学习率设置过小,则权重与偏置更新缓慢,若学习率设置过大则容易越过最小值点(我们的目标是最小化损失函数),导致一直不能求得最小值点。所以学习率的选择非常关键。
\qquad 以开口向上的抛物线为例,我们希望越靠近最小值点学习率越小;梯度越大学习率越大,梯度越小学习率越小,于是我们可以用如下方法改进: η w = η ∑ i = 1 t ( ∂ C ∂ W i ) 2 + ϵ \eta_w=\frac{\eta}{\sqrt{\sum_{i=1}^t(\frac{\partial C}{\partial W^{i}})^2+\epsilon}} ηw=i=1t(WiC)2+ϵ η
上式表明,随着更新次数的变大,学习率越来越小。当 ∂ C ∂ W i \frac{\partial C}{\partial W^{i}} WiC趋于0时 η w \eta_w ηw趋于一个常数。此时 W k = W k − 1 − η w ∂ C ∂ W k − 1 W^{k}=W^{k-1}-\eta_w\frac{\partial C}{\partial W^{k-1}} Wk=Wk1ηwWk1C b k = b k − 1 − η w ∂ C ∂ b k − 1 b^{k}=b^{k-1}-\eta_w\frac{\partial C}{\partial b^{k-1}} bk=bk1ηwbk1C

2.动量法(momentum)

\qquad 当前步的下降方向,不只是由当前的梯度决定,而是由当前梯度与以往梯度共同决定。这样有可能跳出局部极小值,例如下图
5/1-3 BP神经网络的改进及MATLAB实现(下)_第1张图片
从C点出发,A点是局部极小值点,如果点走到B点,此时梯度与历史梯度反向,故更新方向会往A点走,很容易陷入局部极小。若改用动量法,以上一刻的梯度与此刻梯度的加权平均决定总梯度的方向(如上图,虽然在B点梯度与C点梯度相反,但若想达到全局最小,需要向C同负梯度方向更新)。故可用$ V t = β V t − 1 + ( 1 − β ) ∂ C ∂ W t V^t=\beta V^{t-1}+(1-\beta)\frac{\partial C}{\partial W^{t}} Vt=βVt1+(1β)WtC W t = W t − 1 − η V t W^t=W^{t-1}-\eta V^t Wt=Wt1ηVt这里 β \beta β一般取 0.9 0.9 0.9

你可能感兴趣的:(深度学习与神经网络,matlab,神经网络,机器学习)