交叉熵损失的反向传播

对于一个单标签多分类问题,假设网络的输出层的输入为$Z_{in}=[z_1,\cdots,z_i,\cdots,z_n]$,输出为$\hat Y=[\hat y_1,\cdots,\hat y_i,\cdots,\hat y_n]$,真实类标签为$Y = [y_1,\cdots,y_i,\cdots,y_n]$,$n$为类别数(输出层神经元数),通常有:

其中$Softmax​$为:

交叉熵损失

损失对神经网络输出的偏导(标量对向量求偏导)为:

后向传播推导中遇到的所有量都是变量,最终的目的是找到损失关于某变量的偏导,程序中也只用这个公式求得对应输入点的梯度

Softmax的偏导

求$\hat y_i​$对$z_i​$的偏导,根据$\eqref{2}​$可得:

求$\hat Y$对$Z$的偏导(向量对向量求导)

这里把$y$的坐标写作$k$

$k=i$时:

$k \neq i$时:

写成矩阵:

这是一个对称矩阵,在链式求导时加不加转置都一样

根据$\eqref{5}$和$\eqref{8}$,损失$L$对输入$Z$的偏导(标量对向量求偏导):