我是靠谱客的博主 眼睛大灰狼,最近开发中收集的这篇文章主要介绍卷积神经网络(二):Softmax损失以及反向传播导数推导Softmax与交叉熵Softmax对反向传播推导,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Softmax与交叉熵

Softmax函数如下:

Pk=eθkxdj=0eθjxPk=eθkx∑j=0deθjx

其中,label(i)表示第i个样本的标签为第几类,I(label(i)==k)判断第i个样本的标签是否为k,若是值为1否则值为0

Softmax对反向传播推导

Softmax反向传播求导主要使用链式求导法则,因此我们只需要从输出层开始逐层倒推即可。
博主为了简便期间,先只讨论一般的神经网络情况(只存在全连接层,无卷积,池化层)

对前一层神经元输出的求导

在这里我们将Softmax层展开,如果前一层的输出(卷积神经网络中通常是全连接层)是X,那么记θX=Y,

Pk=eykdj=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=0di=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=0Di=0nΔJθΔxjΔxjΔzΔJθΔz=−∑j=0D∑i=0nΔJθΔxjΔxjΔz
表示第l层的第i个输出,f(x)表示激活函数
敏感度通过(2)式方向传播,而对权值的偏导数可以如(1)式通过敏感度求得
(以上(1),(2)两个公式都是只考虑一个样本的情况,否则还要加一个求和)

对于卷积神经网络

对于卷积神经网络的求导原理与上述情况一样,由于有卷积和池化层的存在,下一层会存在大量的与上一层无关的神经元,因此敏感度反向传播方式类似于反卷积的过程,由于原理已经掌握,而且在实践中都是由深度学习框架实现,在此就不再详述,感兴趣的可以自己查找其他博客。

最后

以上就是眼睛大灰狼为你收集整理的卷积神经网络(二):Softmax损失以及反向传播导数推导Softmax与交叉熵Softmax对反向传播推导的全部内容,希望文章能够帮你解决卷积神经网络(二):Softmax损失以及反向传播导数推导Softmax与交叉熵Softmax对反向传播推导所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部