卷积神经网络(2)
作者:互联网
误差计算
普通神经网络正向计算的过程。
下图为三层神经网络为例。
x:输入值;w:参数;σ:激活函数;b:偏置;y:基本输出;Softmax:最后的激活函数;o:最终输出;
具体节点计算过程如图所示。
y的计算方式如下;
因为y的计算结果不满足概率分布,因此引入softmax函数,使得所有最终输出结果的概率和为1;
交叉熵损失(Cross Entropy Loss)
误差具体计算过程如下(此例中采用softmax函数作为输出);
误差的反向传播
根据Loss值反传播修改各个参数的值,以参数w11(2)为例;知道o1 的计算方式和y1的计算方式,因为w11(2)后面的值σ()为已知的数值,因此可当作常熟表示,则可更具Loss函数对w11(2)进行求偏导,按照链式求导法则得到对应公式;
具体求导计算过程如下:
log默认是以e为底
最终求得结果如下
权重更新
权重的更新按照如下计算公式进行计算:
用旧的参数减去损失梯度乘以学习率
但是否结束了呢
当使用imageNet类似大数据库来进行训练,则选择分批训练,经过多次批次训练得到全局最优;
为了更快的收敛因此引入优化器方法;
分批次训练就是SGD优化器;
缺点:容易受到样本噪声影响;可能陷入局部最优解
为解决sgd的缺点在其中引入动量Momentum,vt-1表示图中g(t),g(wt)表示图中g(t+1);
优化器的效果
(1)如果数据是稀疏的,使用自适应学习方法。
(2)RMSprop,Adadelta,Adam是非常相似的优化算法,Adam的bias-correction帮助其在最后优化期间梯度变稀疏的情况下略微战胜了RMSprop。整体来讲,Adam是最好的选择。
(3)很多论文中使用vanilla SGD without momentum。SGD通常能找到最小值,但是依赖健壮的初始化,并且容易陷入鞍点。因此,如果要获得更快的收敛速度和训练更深更复杂的神经网络,需要选择自适应学习方法。
如有错误欢迎指正!
标签:Loss,卷积,w11,神经网络,Adam,计算,SGD 来源: https://blog.csdn.net/temp_X/article/details/115716544