softmax函数梯度

softmax 函数形式:

ˆyj=softmax(θj)=exp(θj)Vi=1exp(θi)

交叉熵损失(cross-entropy loss)的定义如下

J=Vi=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)

kj

ˆyjθk=exp(θj)exp(θk)(Vi=1exp(θi))2=ˆyjˆyk

所以:

ˆyjθk={ˆyj(1ˆyj),k=jˆyjˆyk,kj

交叉熵损失的梯度如下:

Jθk=Vi=1yilogˆyiθk=Vi=1yi1ˆyiˆyiθk=yk1ˆykˆyk(1ˆyk)ikyi1ˆyi(ˆyiˆyk)=yk(1ˆyk)+ikyi(ˆyk)=yk+ykˆyk+ikyi(ˆyk)=ˆyk(iyi)yk=ˆykyk

所以:

Jθk=ˆykyk
宁雨 /
Published under (CC) BY-NC-SA in categories MachineLearning  tagged with