softmax 函数形式:
ˆyj=softmax(θj)=exp(θj)∑Vi=1exp(θi)交叉熵损失(cross-entropy loss)的定义如下
J=−V∑i=1yilog(ˆyi)首先,求解softmax函数的梯度∂ˆyj∂θk。
当k=j时:
∂ˆyj∂θk=exp(θj)∑Vi=1exp(θi)−exp(θj)exp(θj)(∑Vi=1exp(θi))2=exp(θj)∑Vi=1exp(θi)−(exp(θj)∑Vi=1exp(θi))2=ˆyj−(ˆyj)2=ˆyj(1−ˆyj)当k≠j时
∂ˆyj∂θk=−exp(θj)exp(θk)(∑Vi=1exp(θi))2=−ˆyj∗ˆyk所以:
∂ˆyj∂θk={ˆyj(1−ˆyj),k=j−ˆyj∗ˆyk,k≠j交叉熵损失的梯度如下:
∂J∂θk=−V∑i=1yi∂logˆyi∂θk=−V∑i=1yi1ˆyi∂ˆyi∂θk=−yk1ˆykˆyk(1−ˆyk)−∑i≠kyi1ˆyi(−ˆyiˆyk)=−yk(1−ˆyk)+∑i≠kyi(ˆyk)=−yk+ykˆyk+∑i≠kyi(ˆyk)=ˆyk(∑iyi)−yk=ˆyk−yk所以:
∂J∂θk=ˆyk−yk