softmax作为输出层激活函数的反向传播推导
softmax作为多标签分类中最常用的激活函数,常常作为最后一层存在,并经常和交叉熵损失函数一起搭配使用。这里描述如何推导交叉熵损失函数的导数问题。
[toc]
一、一个简单的最后一层的例子
我们先看一个最后一层的例子,假设我们的标签有3类,那么最后一层一般定义成3个神经元,并先通过计算softmax得到最后一层激活函数的输出,然后将3个类别中概率最大的一类作为输出的预测结果。如下图所示:

假设$z_1$、$z_2$和$z_3$是最后一层的非激活函数结果,它的值是通过前一层的输出来做线性变化得到,即$\sum wa^{l-1} +b$得到,这里的$a^{l-1}$是指前一层的激活函数的输出结果。那么这一层激活函数选择softmax之后得到的结果是:
a_j = \frac{e^{z_j}}{e^{z_1}+e^{z_2}+e^{z_3}}
