摘要:
在之前的两篇文章中RNN训练与BP算法,BP算法心得体会都是在具体在讲bp算法在神经网络里面的推导。两篇文章都没有讲过和softmax相关的东西。而softmax作为分类任务里面重要的一层,所以打算本篇文章介绍一下softmax层。另外,一致沿用的损失函数都是均方误差,所以借这个机会也讲解下当损失函数是交叉熵时候的推导情况。
引言:
本文打算在RNN训练与BP算法文章的基础,将最后一层输出层改成softmax层,推导整个公式。
下面是前向传播的公式(来源于上面的文章,新来的读者建议新看下这篇文章)
网络中共有
具体为:
经过激活后的输出为:
具体为:
经过激活后的输出为:
这里,由于我们输出层是softmax所以只需要把输出层的激活函数
具体来说:
(大家可能发现了。希望网络输出softmax的结果只需要改输出层激活函数。那么推导公式中可能变化的也只有涉及到输出层激活函数部分的偏导数)
最后定义我们的损失函数——交叉熵:
1.求
和之前讲解BP的文章套路一样,我们可以对
对于等式右边第二项很好计算,
和之前一样,我们定义等式右边第一项为误差信号
然后,下面求解误差信号,通常按照我们的思路,我们会如下推导:
但是需要注意的是!!!!这是错误的!!!!!
我们看看softmax的公式:
对于:
具体为:
对于:
其中
将
当然,需要在求和项中分成
因此对于第一项
(这里需要意识到
对于第二项:
把两项合在一起可以得到:
值得注意的是,每一次输出中只有一个目标标签为1。故
至此,我们推导完毕,即:
ok,至此后面关于其他权重的推导都和之前文章的一样,所以就不再重复了。
另外,这里是一篇关于单层神经网络softmax+交叉熵的推导,其实大多数步骤都是一样的,大家可以参考一下:
参考文章