Softmax求导推导

Softmax求导

之前也推导过Softmax求导过程,但是结论没记住,每次都要重新推,很麻烦,现做个记录。

Softmax公式

^yi=exp(xi)jexp(xj)

注意:在实际实现softmax时需将x减去max(x),防止溢出。

交叉熵损失

给定标签y和模型输出ˆy,交叉熵损失函数定义为:

L=iyilog(ˆyi)

求导

使用链式法则求导

Lˆyi=yiˆyi
Lxi=jLˆyjˆyjxi=i=jyiˆyi(ˆyiˆy2i)+ijyiˆyjˆyjˆyi=i=j(ˆyi1)yi+ijyjˆyi={1(ˆyi1)=ˆyi1yi=1ˆyiyi=0=ˆyi1yi=1

其中:

ˆyjxi={0exp(xj)exp(xi)S2=ˆyjˆyiijexp(xj)Sexp(xj)2S2=ˆyjˆy2ji=j
S=kexp(xk)

用向量表示:

Lxi=ˆyiy