softmax求导

粗体表示向量
s o f t m a x ( x ) = e x 1 T e x softmax(\boldsymbol{x})=\frac{e^{\boldsymbol{x}}}{\boldsymbol{1}^T e^{\boldsymbol{x}}} softmax(x)=1Texex
其中 1 \boldsymbol{1} 1是一个全 1 1 1的向量

d i a g ( x ) = d i a g ( x 1 , x 2 , ⋯   , x n ) diag(\boldsymbol{x})=diag(x_1,x_2,\cdots,x_n) diag(x)=diag(x1,x2,,xn)

用到的法则(采用分母布局)
a = a ( x ) , u = u ( x ) a=a(\boldsymbol{x}),\boldsymbol{u}=u(\boldsymbol{x}) a=a(x)u=u(x)
∂ a u ∂ x = a ∂ u ∂ x + ∂ a ∂ x u T \frac{\partial a\boldsymbol{u}}{\partial \boldsymbol{x}}=a\frac{\partial \boldsymbol{u}}{\partial \boldsymbol{x}}+\frac{\partial a}{\partial \boldsymbol{x}}\boldsymbol{u}^T xau=axu+xauT
u = u ( x ) , v = v ( x ) \boldsymbol{u} = \boldsymbol{u}\left(\boldsymbol{x}\right),\boldsymbol{v} = \boldsymbol{v}\left(\boldsymbol{x}\right) u=u(x),v=v(x)
∂ u T v ∂ x = ∂ u ∂ x v + ∂ v ∂ x u \frac{\partial \boldsymbol{u}^T\boldsymbol{v}}{\partial \boldsymbol{x}} = \frac{\partial \boldsymbol{u}}{\partial \boldsymbol{x}}\boldsymbol{v} + \frac{\partial \boldsymbol{v}}{\partial \boldsymbol{x}}\boldsymbol{u} xuTv=xuv+xvu

采用分母布局
y = s o f t m a x ( x ) \boldsymbol{y}=softmax(\boldsymbol{x}) y=softmax(x)
∂   s o f t m a x ( x ) ∂ x = 1 1 T e x ∂ e x ∂ x + ∂ ( 1 1 T e x ) ∂ x ( e x ) T = 1 1 T e x d i a g ( e x ) − 1 ( 1 T e x ) 2 ∂ ( 1 T e x ) ∂ x ( e x ) T = 1 1 T e x d i a g ( e x ) − 1 ( 1 T e x ) 2 1 T d i a g ( e x ) ( e x ) T = 1 1 T e x d i a g ( e x ) − 1 ( 1 T e x ) 2 e x ( e x ) T = d i a g ( s o f t m a x ( x ) ) − s o f t m a x ( x ) ( s o f t m a x ( x ) ) T = d i a g ( y ) − y y T \begin{aligned} \frac{\partial\ softmax(\boldsymbol{x})}{\partial \boldsymbol{x}} &=\frac{1}{\boldsymbol{1}^T e^{\boldsymbol{x}}}\frac{\partial e^{\boldsymbol{x}}}{\partial \boldsymbol{x}}+\frac{\partial (\frac{1}{\boldsymbol{1}^T e^{\boldsymbol{x}}})}{\partial \boldsymbol{x}}(e^{\boldsymbol{x}})^T\\ &=\frac{1}{\boldsymbol{1}^T e^{\boldsymbol{x}}}diag(e^{\boldsymbol{x}})-\frac{1}{(\boldsymbol{1}^T e^{\boldsymbol{x}})^2}\frac{\partial (\boldsymbol{1}^T e^{\boldsymbol{x}})}{\partial \boldsymbol{x}}(e^{\boldsymbol{x}})^T\\ &=\frac{1}{\boldsymbol{1}^T e^{\boldsymbol{x}}}diag(e^{\boldsymbol{x}})-\frac{1}{(\boldsymbol{1}^T e^{\boldsymbol{x}})^2} \boldsymbol{1}^T diag(e^{\boldsymbol{x}})(e^{\boldsymbol{x}})^T\\ &=\frac{1}{\boldsymbol{1}^T e^{\boldsymbol{x}}}diag(e^{\boldsymbol{x}})-\frac{1}{(\boldsymbol{1}^T e^{\boldsymbol{x}})^2} e^{\boldsymbol{x}}(e^{\boldsymbol{x}})^T\\ &=diag(softmax(\boldsymbol{x}))-softmax(\boldsymbol{x})(softmax(\boldsymbol{x}))^T\\ &=diag(\boldsymbol{y})-\boldsymbol{y}\boldsymbol{y}^T \end{aligned} x softmax(x)=1Tex1xex+x(1Tex1)(ex)T=1Tex1diag(ex)(1Tex)21x(1Tex)(ex)T=1Tex1diag(ex)(1Tex)211Tdiag(ex)(ex)T=1Tex1diag(ex)(1Tex)21ex(ex)T=diag(softmax(x))softmax(x)(softmax(x))T=diag(y)yyT

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Nightmare004

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值