softmax函数反向传播

1.softmax函数

X= \begin{bmatrix} x_{1},x_{2},\cdot \cdot \cdot ,x_{n} \end{bmatrix}Y=softmax\begin{pmatrix} X \end{pmatrix}=\begin{bmatrix} y_{1},y_{2},\cdot \cdot \cdot ,y_{n} \end{bmatrix}

y_{i}=\frac{e^{x_{i}}}{\sum_{j=1}^{n}e^{x_{j}}},显然\sum_{i=1}^{n}y_{i}=1

例如:X=\begin{bmatrix} 2,3 \end{bmatrix},则Y=softmax\begin{pmatrix} X \end{pmatrix}=\begin{bmatrix} \frac{e^{2}}{e^{2}+e^{3}},\frac{e^{3}}{e^{2}+e^{3}} \end{bmatrix}=\begin{bmatrix} 0.26894142,0.73105858 \end{bmatrix}

2.softmax函数求导

(1)当i=j时

 (2)当i!=j时

 综上所述:\frac{\partial y_{i}}{\partial x_{j}}=\begin{cases} y_{i}-y_{i}y_{i} & \text{ if } i=j \\ 0-y_{i}y_{i} & \text{ if } i\neq j \end{cases}

所以\frac{\partial Y}{\partial X}=diag\begin{pmatrix} Y \end{pmatrix}-Y^{T}\cdot Y

 3.softmax 函数的一个性质

softmax(X+c)=softmax(X)

这里X是向量,c是一个常数。下面证明左右两边的每一个分量相等。

证明:

 

实际应用:为了防止溢出,事先把x减去最大值。最大值是有效数据,其他值溢不溢出可管不了,也不关心。

 4.softmax函数+交叉熵代价函数

C=-\sum_{k}^{}\hat{y}_{k}logy_{k}

这里的\hat{y}_{k}是真实值,是训练的目标,取0或1.在求导的时候是常量。 y_{i}是softmax函数的输出值,是训练结果,是变量。

 log似然代价函数C对每一个x_{i}求偏导,结果都是

\frac{\partial C}{\partial x_{i}}=y_{i}-\hat{y}_{i}

\frac{\partial C}{\partial X}=Y-\hat{Y}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值