Softmax求导
之前也推导过Softmax求导过程,但是结论没记住,每次都要重新推,很麻烦,现做个记录。
Softmax公式
^yi=exp(xi)∑jexp(xj)注意:在实际实现softmax时需将x减去max(x),防止溢出。
交叉熵损失
给定标签y和模型输出ˆy,交叉熵损失函数定义为:
L=−∑iyilog(ˆyi)求导
使用链式法则求导
∂L∂ˆyi=−yiˆyi∂L∂xi=∑j∂L∂ˆyj∂ˆyj∂xi=∑i=j−yiˆyi(ˆyi−ˆy2i)+∑i≠jyiˆyjˆyjˆyi=∑i=j(ˆyi−1)yi+∑i≠jyjˆyi={1(ˆyi−1)=ˆyi−1yi=1ˆyiyi=0=ˆyi−1yi=1
其中:
∂ˆyj∂xi={0−exp(xj)exp(xi)S2=−ˆyjˆyii≠jexp(xj)S−exp(xj)2S2=ˆyj−ˆy2ji=jS=∑kexp(xk)
用向量表示:
∂L∂xi=ˆyi−y