softmax函数
这里以神经网络多分类问题为例,假设输出层有nnn个神经元,输出为z1,z2,...,znz_1,z_2,...,z_nz1,z2,...,zn,经过softmax函数后的输出为a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an,aia_iai的计算公式为:
ai=ezi∑j=1nezja_i=\frac{e^{z_i}}{\sum_{j=1}^{n}{e^{z_j}}}ai=∑j=1nezjezi
交叉熵损失函数
假设真实标签为y1,y2,...,yny_1,y_2,...,y_ny1,y2,...,yn,由于是分类问题,因此yiy_iyi的取值为0或1,并且∑i=1nyi=1\sum_{i=1}^{n}y_i=1∑i=1nyi=1。则交叉熵损失函数为:
L(a,y)=−∑inyilnaiL(\bold{a},\bold{y})=-\sum_{i}^ny_i\ln a_iL(a,y)=−i∑nyilnai
求导
下面详细介绍损失函数对ziz_izi的导数求解过程。
根据链式求导可知,
∂L∂zi=∑j∂L∂aj∂aj∂zi\frac{\partial L}{\partial z_i}=\sum_j \frac{\partial L}{\partial a_j}\frac{\partial a_j}{\partial z_i}∂zi∂L=