深度学习-图像处理之误差传播、权重更新及优化器

以三层的BP神经网络为例:
在这里插入图片描述
输出如下:最后一层的激活函数统一用softmax,所以单独拎出来并没有写在里面。为什么要用softmax这个激活函数呢?因为输出的y1、y2并不属于任何一个分布,我们想让输出满足一个概率分布,就要进行softmax处理,计算公式如下图:可以看出o1+o2是等于1的。
在这里插入图片描述
在这里插入图片描述
对损失的计算一般选择是交叉熵,针对不同的分类问题,最后层的激活函数不同,导致交叉熵的计算公式略有差别:
在这里插入图片描述
将o1和o2带入交叉熵计算公式:
在这里插入图片描述

误差的反向传播

在这里插入图片描述
以求w11(2)为例来说明,根据链式求导法则可得如图结论,继续对每一个偏导求值:
在这里插入图片描述
下图中右边就是求解出来每一项的偏导数,左边就是w11(2)的损失梯度:
在这里插入图片描述
权重的更新:在这里插入图片描述
那么所求的损失梯度的方式是不是指向全局最优(损失减小最快)的方向?
下图给出了明确的说明:分批次训练会指向局部最优,但不会指向全局最优在这里插入图片描述
优化器:使网络得到更快的收敛,通过动态调整学习率来确定如何更新网络权重
刚才说的分批次进行训练,每一个批次进行一个损失的计算及误差的反向传播其实就是常说的SGD优化器。
在这里插入图片描述
这里给出SGD优化器更新参数的表达式:wt+1是更新后的参数,wt是更新前的参数,但SGD优化器的缺点也很明显,比如训练集中有些标注是错误的,那么求出来的损失梯度肯定就会有问题。另外,理想的情况是沿着图中黑色路径达到最优解,但分批次的话有可能梯度的方向不会这么理想,而跑偏,陷入局部最优。那么如何解决呢,引入SGD+Momentum优化器即可。
在这里插入图片描述
引入SGD+动量进行优化:除了计算当前的梯度之外,还会将之前的梯度加入进来,引入动量之后,会考虑上一次的梯度方向,如左下角所示,这样可以有效的抑制样本噪声的干扰。动量系数一般取0.9.
在这里插入图片描述
另外一个优化器:Adagrad优化器,其主要是在学习率上面做手脚,St是对损失梯度平方求和,这样会使得分母在训练过程中越来越大,从而导致学习率越来越小,这样就会达到一个自适应学习率的目的。但是其也有一个问题,就是学习率下降的太快,解决办法:引入RMSProp优化器。
在这里插入图片描述
相对于Adagrad优化器,RMSProp优化器多增加了两个系数,其目的就是用来控制衰减速度。
在这里插入图片描述
最后一个Adam优化器,其相对于前几个优化器看起来更复杂一点,包含一阶动量和二阶动量,
在这里插入图片描述
如何选择合适的优化器,博主只说一句话:实践是检验真理的唯一标准。

猜你喜欢

转载自blog.csdn.net/qq_42308217/article/details/109910215