卷积神经网络(二):Softmax损失以及反向传播导数推导
2018-03-13 16:47
513 查看
Softmax与交叉熵
Softmax函数如下:Pk=eθkx∑dj=0eθjxPk=eθkx∑j=0deθjx
其中,Pk对应输出层第k个神经元的输出,也就是预测为第k类的概率,d表示输出层神经元总数
其损失函数(交叉熵)如下:
J(θ)=−1n∑i=0n∑j=0dI(label(i)==k)lnPiJ(θ)=−1n∑i=0n∑j=0dI(label(i)==k)lnPi
其中,label(i)表示第i个样本的标签为第几类,I(label(i)==k)判断第i个样本的标签是否为k,若是值为1否则值为0
Softmax对反向传播推导
Softmax反向传播求导主要使用链式求导法则,因此我们只需要从输出层开始逐层倒推即可。博主为了简便期间,先只讨论一般的神经网络情况(只存在全连接层,无卷积,池化层)
对前一层神经元输出的求导
在这里我们将Softmax层展开,如果前一层的输出(卷积神经网络中通常是全连接层)是X,那么记θX=Y,Pk=eyk∑dj=0eyjPk=eyk∑j=0deyj
根据链式求导法则,要求出Loss对y的偏导那就可以继续求Loss对x的偏导。
Loss对y的偏导分为两种情况,1:对于第i个样本的第label(i)个y的偏导
2.对非标签对应项的y的偏导,如果记为b
总的来说可以归纳为:
ΔJθΔyk=−∑i=0n1n[I(label(i)==k)−Pk,i]ΔJθΔyk=−∑i=0n1n[I(label(i)==k)−Pk,i]
因此ΔJθΔxm=−∑j=0d∑i=0nΔJθΔykΔykΔxm=−∑j=0d{∑i=0n1n[I(label(i)==j)−Pj,i]∗θm,j}ΔJθΔxm=−∑j=0d∑i=0nΔJθΔykΔykΔxm=−∑j=0d{∑i=0n1n[I(label(i)==j)−Pj,i]∗θm,j}
对更前的层的输出的求导
核心原理:同样使用链式法则倒推,假设要求得某一层某个神经元z的导数则:
ΔJθΔz=−∑j=0D∑i=0nΔJθΔxjΔxjΔzΔJθΔz=−∑j=0D∑i=0nΔJθΔxjΔxjΔz
其中,我们假设了x0x0到xDxD都是z神经元在前向传播过程中参与计算了的(也就是说倘若把x的表达式用z对应的层的神经元展开,则x0x0到xDxD是全部z参与运算得到的x,毕竟只有z参与运算才有x对z的导数)
公式表述:
为了能够简洁的表示损失对某一神经元或者权重的求导,一般记敏感度δljδjl为损失J对第l层的某个神经元j激活前的输出的偏导
可以写成如下公式:
其中WlijWijl表示第l层第i个神经元连接第l+1层第j个神经元的权值,XliXil表示第l层的第i个输入,SljSjl表示第l层的第i个输出,f(x)表示激活函数
敏感度通过(2)式方向传播,而对权值的偏导数可以如(1)式通过敏感度求得
(以上(1),(2)两个公式都是只考虑一个样本的情况,否则还要加一个求和)
对于卷积神经网络
对于卷积神经网络的求导原理与上述情况一样,由于有卷积和池化层的存在,下一层会存在大量的与上一层无关的神经元,因此敏感度反向传播方式类似于反卷积的过程,由于原理已经掌握,而且在实践中都是由深度学习框架实现,在此就不再详述,感兴趣的可以自己查找其他博客。相关文章推荐
- 深度网络中softmax_loss、Smooth L1 loss计算以及反向传播推导
- 卷积神经网络反向传播理论推导
- 卷积神经网络(CNN)反向传播理论推导
- 卷积神经网络反向传播推导
- 卷积神经网络反向传播理论推导
- softmax及交叉熵损失的反向传递推导及实现
- 反向传播的工作过程以及公式推导
- 【机器学习】反向传播神经网络推导
- 卷积神经网络中的反向传播
- 初学者——从NN到RNN,深刻理解以softmax为激活函数的反向传播,有代码
- CS231n作业笔记1.3:SVM的误差函数以及反向传播(非向量及向量算法)
- 卷积神经网络-反向传播
- 三、梯度下降与反向传播(含过程推导及证明)
- 卷积神经网络反向BP算法公式推导
- Batch Normalization 反向传播(backpropagation )公式的推导
- caffe反向传播计算--softmax
- Batch Normalization梯度反向传播推导
- caffe中 softmax 函数的前向传播和反向传播
- 机器学习:神经网络反向传播推导
- caffe loss以及正则项反向传播过程