交叉熵的反向传播梯度推导(使用softmax激活函数)

1. 多分类问题的交叉熵

设标签 y k = 1 y_k=1 yk=1,也即 x k x_k xk对应的第 k k k类的标签为1,则交叉熵损失函数为:
(1) J = − ∑ j = 1 N y j log ⁡ a j L = − log ⁡ a k L J = -\sum_{j=1}^Ny_j\log a_j^L = -\log a_k^L \tag{1} J=j=1NyjlogajL=logakL(1)
其中 N N N是分类的类别数目。

softmax激活函数的表达式为:
(2) a k L = e z k L ∑ j = 1 N e z j L a_k^L = \frac{e^{z_k^L}}{\sum\limits_{j=1}^{N}e^{z_j^L}} \tag{2} akL=j=1NezjLezkL(2)

反向传播过程需要对每一个 z j L , j = 1 , 2 , ⋯   , N z_j^L, j=1, 2, \cdots, N zjL,j=1,2,,N求导数。

(1) 当 j = k j=k j=k时:
(3) ∂ J ∂ z j L = ∂ J ∂ z k L = ∂ J ∂ a k L ∂ a k L ∂ z k L

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
softmax函数和交叉熵是深度学习中经常使用的重要概念。 首先来解释一下softmax函数。softmax函数是一种常用的激活函数,它将输入的实数向量转换为一组概率分布。其定义如下: $$ softmax(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}} $$ 其中,$\mathbf{z}$是输入的实数向量,$K$是向量的维度。该函数通过对每个输入值应用指数函数并进行归一化,得到一组概率值。softmax函数常用于多分类问题的输出层,将原始的得分或概率转化为每个类别的概率。 接下来是交叉熵,它是常用的损失函数,用于衡量模型输出的概率分布与真实标签的差异。对于二分类问题,交叉熵的定义如下: $$ H(p, q) = -\sum_{i=1}^{2} p_i \log(q_i) $$ 其中,$p$是真实标签的概率分布,$q$是模型输出的概率分布。交叉熵损失函数希望模型的预测概率分布尽可能接近真实分布,从而提供一个优化目标。 当使用softmax函数作为激活函数使用交叉熵作为损失函数时,我们可以使用反向梯度传导算法来更新模型参数,以减小损失函数的值。具体来说,我们首先计算损失函数对输出的梯度,然后通过链式法则将梯度传递回网络的每一层,并将参数按梯度方向更新。对于softmax函数,其梯度计算如下: $$ \frac{\partial softmax(\mathbf{z})_i}{\partial z_j} = \frac{\partial}{\partial z_j} \left( \frac{e^{z_i}}{\sum_{k=1}^{K} e^{z_k}} \right) = \begin{cases} softmax(\mathbf{z})_i (1 - softmax(\mathbf{z})_i) & i = j \\ - softmax(\mathbf{z})_i \cdot softmax(\mathbf{z})_j & i \neq j \end{cases} $$ 对于交叉熵损失函数,其对模型输出的梯度计算如下: $$ \frac{\partial H(p, q)}{\partial q_i} = - \frac{p_i}{q_i} $$ 通过将以上两种梯度进行链式法则的组合运算,我们可以计算出损失函数对模型输入的梯度,从而实现反向梯度传导,以调整模型参数使其逐渐趋近于最优值。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值