多分类(Softmax)交叉熵损失函数反向传播推导

        在上一篇随笔中,我提到了多分类(Softmax)交叉熵损失函数反向传播为y-t,但并未证明,现将证明过程附上。

        首先,多分类的Softmax函数为:

y_{i} = \frac{e^{x_{i}}}{\sum_{j}e^{x_{j}}}

        交叉熵损失函数为:

L = -\sum_{i}t_{i}lny_{i}

        x为输入值,k为输入值的第k个维度,y为预测值,i为第i个标签,t为真实值。所求的反向传播,实际上是损失函数L对于入参每个维度k的偏导数\frac{\partial L}{\partial x_{k}}

\frac{\partial L}{\partial x_{k}} = \sum_{i}^{}\frac{\partial L}{\partial y_{i}}\frac{\partial y_{i}}{\partial x_{k}}

\frac{\partial L}{\partial y_{i}} = -\frac{t_{i}}{y_{i}}\frac{\partial y_{i}}{\partial x_{k}} = \frac{\partial }{\partial x_{k}}\left (\frac{e^{x_{i}}}{\sum_{j}e^{x_{j}}} \right )

因此\frac{\partial L}{\partial x_{k}} = -\sum_{i}^{}\frac{t_{i}}{y_{i}}\frac{\partial }{\partial x_{k}}\left (\frac{e^{x_{i}}}{\sum_{j}e^{x_{j}}} \right )

        注意到,上式右边偏导数的算法取决于ik是否相等,因此我们将上式分开。有:

\frac{\partial L}{\partial x_{k}} = -\left (\frac{t_{k}}{y_{k}}\frac{\partial }{\partial x_{k}}\left (\frac{e^{x_{k}}}{\sum_{j}e^{x_{j}}} \right ) + \sum_{i\neq k}^{}\frac{t_{i}}{y_{i}}\frac{\partial }{\partial x_{k}}\left (\frac{e^{x_{i}}}{\sum_{j}e^{x_{j}}} \right ) \right )

\frac{\partial }{\partial x_{k}}\left (\frac{e^{x_{k}}}{\sum_{j}e^{x_{j}}} \right ) = \frac{e^{x_{k}}\left ( \sum_{j}e^{x_{j}} - e^{x_{k}} \right )}{\left (\sum_{j}e^{x_{j}} \right )^{2}} = y_{k}\left ( 1 - y_{k} \right )

\frac{\partial }{\partial x_{k}}\left (\frac{e^{x_{i}}}{\sum_{j}e^{x_{j}}} \right ) = - \frac{e^{x_{i}}e^{x_{k}}}{\left (\sum_{j}e^{x_{j}} \right )^{2}} = -y_{i}y_{k}

因此\frac{\partial L}{\partial x_{k}} = -\left (\frac{t_{k}}{y_{k}} y_{k}\left ( 1 - y_{k} \right ) - \sum_{i\neq k}^{}\frac{t_{i}}{y_{i}}y_{i}y_{k} \right )

=\sum_{i\neq k}^{}t_{i}y_{k} - t_{k}\left ( 1 - y_{k} \right )

= y_{k}\sum_{i}t_{i} - t_{k}

        因为对于多分类任务,真实值t是one-hot向量,所以\sum_{i}t_{i} = 1,因此,

\frac{\partial L}{\partial x_{k}} = y_{k}- t_{k}

        上面这一点也提醒我们,多分类交叉熵损失函数只适用于单标签的多分类任务,不适用于该函数训练多标签分类任务(本人惨痛教训),切记。望多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值