softmax及其求导过程

目录

 

1.softmax

2.softmax求导过程:

3. softmax结合交叉熵


1.softmax

softmax多用于多分类问题,它会把网络的输出变成概率,公式如下:

                                                        softmax及其求导过程_第1张图片

softmax一般会和交叉熵结合在一起,因为交叉熵的输入是概率,而softmax就可以把网络的输出变成对应等比例的概率。

 

2.softmax求导过程:

假设求导时,有如下x:

                   softmax及其求导过程_第2张图片

s 为网络输出,第一个输出节点为S_{1},第二个为S_{2},以此类推第 i 个输出节点为S_{i},同理 x 就是网络的输入节点了,第 j 个输入节点为X_{j} 。

softmax及其求导过程_第3张图片

这时候要分两种情况,即 i = j 和 i不等于j的情况。

举例,例如求 S_{1}X_{1}的导数:(相当于与 i = j情况)

softmax及其求导过程_第4张图片

但是由于从softmax公式的分母可知,分母包括了e^{x1}e^{x2}​​​​​​​,……,e^{xj}​​​​​​​,所以任何一个输出节点 S_{i}都要对所有x 进行求导。

所以就有了 i 不等j 这种情况,如:求 s1 对 x2 的导数:

softmax及其求导过程_第5张图片

所以可以得到,i=j 时 和 i 不等于 j 时的 softmax导数如下:

                              softmax及其求导过程_第6张图片

3. softmax结合交叉熵

由于交叉熵的输入是概率,因此经常和sigmoid或softmax结合在一起。一般情况下,在神经网络中,最后一个输出层的节点个数与分类任务的目标数相等。假设最后的节点数为N,那么对于每一个样例,神经网络可以得到一个N维的数组作为输出结果,数组中每一个维度会对应一个类别。在最理想的情况下,如果一个样本属于k,那么这个类别所对应的的输出节点的输出值应该为1,而其他节点的输出都为0,即[0,0,1,0,….0,0],这个数组也就是样本的Label,是神经网络最期望的输出结果,交叉熵就是用来判定实际的输出与期望的输出的接近程度!

交叉熵公式:

                             Loss=-\sum_{i}^{ }y_{i}\l n(S_{i})

如下图所示,若Loss对Z点求导,则:

softmax及其求导过程_第7张图片

                    \frac{\partial Loss}{\partial Z_{j}}=-\sum_{i}^{ }\frac{\partial (y_{i}*ln(S_{i}))}{\partial S_{i}}*\frac{\partial S_{i}}{\partial Z_{j}} =-\sum_{i}^{ }\frac{y_{i}}{S_{i}}*\frac{\partial S_{i}}{\partial Z_{j}}=-\frac{y_{j}}{S_{j}}*S_{j}(1-S_{j})+\sum_{i\neq j}^{ }\frac{y_{i}}{S_{i}}*S_{i}S_{j}=-y_{i}+\sum_{i}^{ }y_{i}S_{j}=S_{j}-y_{i}

解释下上面的式子,由softmax的公式可知,输出节点Si 是由所有Z组成的,所以若Loss对某个Z,如Zi求导的话,则需要对每个输出节点S进行求导。可以从求导的结果看出:用交叉熵对网络softmax前的输出求导,其结果等于softmax后的结果减去真实标签label。

你可能感兴趣的:(DeepLearning,机器学习)