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