softmax函数求导

softmax函数简写为 S i = e i ∑ j e j S_i=\frac{e^i} {\sum_j e^j} Si=jejei
交叉熵损失函数 L = − ∑ k t k l n ( y = k ) L=-\sum_k t_kln(y=k) L=ktkln(y=k)。其中目标类的 t k t_k tk为1,其余类的 t k t_k tk为0.
当预测为第i个时,可以认为 t i = 1 t_i=1 ti=1 y i y_i yi表示求出的softmax值。
此时损失函数变成了: L o s s i = − l n y i Loss_i=-lny_i Lossi=lnyi
根据定义: y i = e i ∑ j e j y_i=\frac{e^i}{\sum_je^j} yi=jejei。我们已经将数值映射到了0-1之间,并且和为1,则有: e i ∑ j e j = 1 − ∑ j ≠ i e j ∑ j e j \frac{e^i}{\sum_je^j}=1-\frac{\sum_{j\neq i}e^j}{\sum_je^j} jejei=1jejj=iej
接下来对Loss求导: ∂ L o s s i ∂ i = − ∂ l n y i ∂ i = ∂ ( − l n e i ∑ j e J ) ∂ i \frac{\partial Loss_i}{\partial_i}=-\frac{\partial lny_i}{\partial_i}=\frac{\partial(-ln\frac{e^i}{\sum_j e^J})}{\partial_i} iLossi=ilnyi=i(lnjeJei) = − 1 e i ∑ j e J ⋅ ∂ ( e i ∑ j e J ) ∂ i =-\frac{1}{\frac{e^i}{\sum_j e^J}} \cdot \frac{\partial (\frac{e^i}{\sum_j e^J})}{\partial_i} =jeJei1i(jeJei) = − ∑ j e j e i ⋅ ∂ ( 1 − ∑ j ≠ i e j ∑ j e j ) ∂ i =-\frac{\sum_j e^j}{e^i}\cdot \frac{\partial(1-\frac{\sum_{j\neq i}e^j}{\sum_je^j})}{\partial_i} =eijeji(1jejj=iej) = − ∑ j e j e i ⋅ ( − ∑ j ≠ i e j ) ⋅ ∂ ( 1 ∑ j e j ) ∂ i =-\frac{\sum_j e^j}{e^i}\cdot(-\sum_{j\neq i}e^j)\cdot\frac{\partial(\frac{1}{\sum_je^j})}{\partial_i} =eijej(j=iej)i(jej1) = ∑ j e j ⋅ ∑ j ≠ i e j ) e i ⋅ ( − 1 ) ⋅ e i ( ∑ j e j ) 2 =\frac{\sum_je^j\cdot\sum_{j\neq i}e^j)}{e^i}\cdot(-1)\cdot\frac{e^i}{(\sum_je^j)^2} =eijejj=iej)(1)(jej)2ei = − ∑ j ≠ i e j ∑ j e j =-\frac{\sum_{j\neq i}e^j}{\sum_je^j} =jejj=iej = e i ∑ j e j − 1 =\frac{e^i}{\sum_je^j}-1 =jejei1 = y i − 1 =y_i - 1 =yi1
所以我们只需要正向求出 y i y_i yi,将结果减1就是反向更新的梯度。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值