在多分类问题中,一般选取softmax作为分类器,交叉熵作为损失函数。他们的形式都很简单,但是在BP的时候还是有些复杂,现在总结如下:
交叉熵损失函数
(1)C(a,y)=−∑iyilnaiC(a,y)=-\sum_i{y_i ln a_i} \tag{1}C(a,y)=−i∑yilnai(1)
softmax逻辑回归
第iii个输出值aia_iai为:
(2)ai=ezi∑kezka_i=\frac{e^{z_i}}{\sum_ke^{z_k}} \tag{2}ai=∑kezkezi(2)
结论
(3)∂C∂zi=ai−yi\frac{∂C}{∂z_i} = a_i−y_i \tag{3}∂zi∂C=ai−yi(3) 【预测值减真实值】
推导过程
(4)∂C∂zi=∑j(∂Cj∂aj∂aj∂zi)\frac{∂C}{∂z_i} =\sum_j(\frac{∂C_j}{∂a_j} \frac{∂a_j}{∂z_i} ) \tag{4}∂zi∂C=j∑(∂aj∂Cj∂zi∂aj)(4)
【因为ziz_izi总会出现在分母中,所以会对所有的aja_jaj产生影响,每个aja_jaj都会有一个损失值CjC_jCj(1式)】
-
先看第一项,由(1)式
- (5