cross entropy_神经网络多分类中softmax+cross-entropy的前向传播和反向传播过程

4289317fe1f945a92a11d5a3e9c59ca4.png

神经网络解决多分类问题时,通常在最后使用 softmax layer + cross-entropy 的组合方案,本文将介绍这一部分的前向传播和反向传播过程。

1 前向传播

神经网络进行训练时,从输入层开始,前向传播经过隐藏层运算,最后经过softmax layer得到预测分类概率分布,然后通过cross-entropy计算预测分类概率分布和目标分类概率分布的损失值。

1.1 softmax layer

c218708c508bc66131236578b1dc2f69.png

softmax layer的作用是将网络的输出进行概率化。

softmax公式,输入是一个m维的向量

,输出是一个m维的向量
:

如上图所示,假设神经网络进行手写数字识别问题,总共有L层。不添加softmax layer时,网络的输出是

, 每个维度的值是对应类别的得分;经过softmax layer之后,输出将变为
, 每个维度的值是分类为对应类别的概率,输出的每个维度都是正数,并且和为1,这符合概率分布,所以称为将输出进行概率化。

那么为什么要添加softmax layer呢?如果不添加softmax layer,我们在原来的

上选择得分最高的类别作为最终的类别就可以了,并且这时候选择的分类结果和softmax layer之后选择的分类结果是完全一致的(实际上在推理预测时,我们并没有在网络中添加softmax layer,就是选择的
中分数最高的维度对应的类别作为分类结果,因为此时不需要计算loss,也不需要反向传播)。添加softmax layer是因为在训练时我们的损失函数是交叉熵函数,它度量的是两个概率分布之间的距离,所以我们使用softmax layer将原来的输出进行概率化,变成一个概率分布,而另一个概率分布就是分类的目标向量,是一个one-hot向量,就上面的例子,类别是2,目标向量就是

1.2 cross-entropy

cross-entropy公式如下:

它计算的是a分布和y分布之间的距离,C越小,两者分布越接近。多分类问题的优化目标就是最小化C,在这里a就是神经网络经过softmax layer输出的分类概率分布,y就是目标分类向量。

因为y是一个one-hot向量,所以上面的公式可以转化为:

2 反向传播

softmax layer + cross-entropy的反向传播是用来求一个梯度,注意这是一个向量:

然后将这个梯度继续反向向前传播,用来求解损失函数对前面模型参数的偏导数。

这里先把求解的结果写出来,然后后面再来分析:

这个结果是很漂亮的,是网络的预测概率输出与目标概率输出的差,实现上很容易。

下面分析求解过程,依据就是链式法则,

其中

对应cross-entropy过程,
对应softmax layer.

2.1 cross-entropy

转化为:

所以C对a求导时需要讨论a的下标:

  • 如果

  • 如果

所以,

(注意,按照雅克比矩阵的定义,这里的偏导数应该是行向量)

2.2 softmax layer

是一个向量,
也是一个向量,根据向量微积分,得到
是一个雅克比矩阵:

softmax的公式:

那么:

其中:

需要讨论 i 与 j的关系.
  • 如果

  • 如果

所以:

最终得到:

2.3 合并

3 总结

本文详细介绍了 softmax layer + cross-entropy 层的前向传播和反向传播计算过程,虽然在推导上有一些麻烦,但在实现上确是很简单。

接下来将会写一篇神经网络中前向传播和反向传播的详细过程的文章,并结合分析动手写一个前馈神经网络的框架,用来实现手写数字识别的任务。

参考:

  1. https://eli.thegreenplace.net/2016/the-softmax-function-and-its-derivative/
  2. http://neuralnetworksanddeeplearning.com/chap2.html
  3. 《深度学习入门》
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值