交叉熵损失函数总结: 定义、应用及求导

本文详细介绍了交叉熵损失函数,从信息熵、相对熵的概念出发,解释了交叉熵的定义及其在分类任务中的应用。同时,文章还探讨了二分类和多分类任务下交叉熵损失函数的公式及求导过程,展示了它在反向传播中的优势。
摘要由CSDN通过智能技术生成

交叉熵损失函数总结: 定义、应用及求导

先说熵(entropie),熵最早出现在热力学中,用于度量一个热力学系统的无序程度。后来熵被引入到信息论里面,表示对不确定性的测量。

为了弄清楚交叉熵,首先需要弄清楚交叉熵相关的几个概念。

1.1 信息量

信息量用于刻画消除随机变量X在x处的不确定性所需的信息量的大小。也就是说不确定性越高,信息量越大。信息量的数学表达式如下,其中 p p p 为随机变量 X X X 的概率分布,即 p ( x ) p(x) p(x) 为随机变量 X X X X = x X=x X=x 处的概率密度函数值。

I ( x ) = − log ⁡ p ( x ) = log ⁡ 1 p ( x ) I(x) = -\log{p(x)} = \log{\frac{1}{p(x)}} I(x)=logp(x)=logp(x)1

1.2 信息熵

信息熵也叫熵。上面的信息量定义了随机变量 X X X 在一个点处的香农信息量,那么如何衡量随机变量 X X X(或整个样本空间)的总体香农信息量呢?下面就要引出随机变量 X X X 的信息熵的概念,或概率分布 p p p 的信息熵。信息熵 H ( p ) H(p) H(p) 是香农信息量 I ( x ) I(x) I(x) 的数学期望,即所有 X = x X=x X=x 处的香农信息量的和,由于每一个 x x x 出现的概率不一样(用概率密度函数值 p ( x ) p(x) p(x) 衡量),需要用 p ( x ) p(x) p(x) 加权求和。因此信息熵是用于刻画消除随机变量 X X X 的不确定性所需要的总体信息量的大小。其数学定义如下:

H ( p ) = H ( X ) = E x   p [ I ( x ) ] = − ∑ i = 1 N p ( x i ) log ⁡ p ( x i ) H(p) = H(X) = E_{x~p}[I(x)] = -\sum_{i=1}^{N}p(x_i)\log{p(x_i)} H(p)=H(X)=Ex p[I(x)]=i=1Np(xi)logp(xi)

1.3 相对熵

相对熵,又称KL散度(Kullback-Leibler divergence),是两个概率分布 p 和 q 之间的差异的非对称性的度量。在信息论中,相对熵等价于两个概率分布的信息熵的差值。

D K L ( p , q ) = E x   p [ log ⁡ p ( x ) q ( x ) ] = E x   p [ log ⁡ p ( x ) − log ⁡ q ( x ) ] = ∑ i = 1 N p ( x i ) [ log ⁡ p ( x ) − log ⁡ q ( x ) ] \begin{aligned} D_{KL}(p,q) &= E_{x~p}[\log{\frac{p(x)}{q(x)}}] \\ &= E_{x~p}[\log{p(x) - \log{q(x)}}] \\ &= \sum_{i=1}^{N}p(x_i)[\log{p(x) - \log{q(x)}}] \end{aligned} DKL(p,q)=Ex p[logq(x)p(x)]=Ex p[logp(x)logq(x)]=i=1Np(xi)[logp(x)logq(x)]

1.4 交叉熵

交叉熵是 Shannon 信息论中的一个重要概念,主要用于度量两个概率分布间的差异性信息。在信息论中,交叉熵表示两个概率分布 p, q,其中 p 表示真实分布,q 表示拟合分布,在同一组事件中,其中用拟合分布 q 来表示某个事件发生所需要的平均比特数。
更进一步,假设 q ( x ) q(x) q(x) 是用来拟合 p ( x ) p(x) p(x) 的概率分布, x x x 属于 p p p 的样本空间,交叉熵用于衡量 q q q 在拟合 p p p 的过程中,用于消除不确定性而充分使用的信息量大小(理解为衡量 q q q 为了拟合 p p p 所付出的努力,另外注意交叉熵定义里的“充分使用”和信息熵定义里的“所需”的区别,“充分使用”不一定能达到全部,“所需”是指全部)。
由于在每一个点 X = x X=x X=x q q q 的香农信息量为 − log ⁡ q ( x ) -\log{q(x)} logq(x),也就是在点 X = x X=x X=x 处, q q q 消除不确定性而充分使用的信息量为 − log ⁡ q ( x ) -\log{q(x)} logq(x)(理解为衡量 q q q 在 $ X=x$ 处为了拟合 p p p 所作的努力),那么就可以计算出在整个样本空间上 q q q 消除不确定性而充分使用的总体信息量,即 − log ⁡ q ( x ) -\log{q(x)} logq(x) 的数学期望,由于每个 x x x 的权重为 p ( x ) p(x) p(x),因此交叉熵 H ( p , q ) H(p,q) H(p,q) 为:

H ( p , q ) = E x   p [ I ( x ) ] = − ∑ i = 1 N p ( x i ) log ⁡ q ( x i ) H(p,q) = E_{x~p}[I(x)] = -\sum_{i=1}^{N}p(x_i)\log{q(x_i)} H(p,q)=Ex p[I(x)]=i=1Np(xi)logq(xi)

2 交叉熵损失函数

由于交叉熵可以度量两个概率分布间的的差异性信息,常被应用于分类任务中,度量标签分布与预测分布的差异。

需要注意的是交叉熵的输入应该是概率分布,所以需要在交叉熵损失函数前加入 sigmoid 或者 softmax 函数将网络的输出转化为概率分布(即0 到 1 之间)。

下面我们以神经网络最后一层输出为例,看一下交叉熵的具体应用场景:

(1)在神经网络的最后一层(输入为 x i x_i xi,权重为 w i w_i wi) 里,我们首先得到了每个类别的得分 scores ( S i S_i Si);

(2)这个得分经过 sigmoid(或 softmax) 函数的变换会获得一个概率输出 ( P i P_i Pi);

(3)将得到的概率输出与真实类别 ( y i y_i yi) 的 one hot 形式进行交叉熵损失函数的计算。

2.1 二分类任务下的交叉熵损失函数

二分类任务下的交叉熵损失函数可以表达如下:

L o s s = − ∑ i = 1 2 y i log ⁡ P i = − [ y l o g P + ( 1 − y ) l o g ( 1 − P ) ] (2.1.1) \begin{aligned} Loss&=-\sum_{i=1}^{2}y_i\log{P_i} \tag{2.1.1}\\ &=-[ylogP + (1-y)log(1-P)] \end{aligned} Loss=i=12yilogPi=[ylogP+(1y)log(1P)](2.1.1)

2.2 多分类任务下的交叉熵损失函数

L o s s = − ∑ i = 1 C y i log ⁡ P i (2.2.1) \begin{aligned} Loss&=-\sum_{i=1}^{C}y_i\log{P_i} \tag{2.2.1}\\ \end{aligned} Loss

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在深度学习中,交叉熵损失函数常用于多分类问题中衡量模型输出与真实标签之间的差异。对于使用softmax作为激活函数的输出层,我们可以使用交叉熵损失函数进行优化。 设模型的输出为$y=(y_1,y_2,\dots,y_n)$,其中$y_i$表示模型对第$i$类的预测概率。设真实标签为$z=(z_1,z_2,\dots,z_n)$,其中$z_i$表示第$i$类的真实标签(通常取值为0或1)。 交叉熵损失函数定义如下: $$L(y,z)=-\sum_{i=1}^n z_i \log(y_i)$$ 接下来,我们来求解交叉熵对每个预测值的导数。 计算$L$对$y_k$的偏导数: $$\frac{\partial L}{\partial y_k} = -\frac{\partial}{\partial y_k} \sum_{i=1}^n z_i \log(y_i)$$ 由于交叉熵对于除$y_k$以外的其他预测值$y_i$的偏导数为0(可以通过计算验证),因此只需计算$L$对$y_k$的偏导数。 我们可以使用链式法则来进行求导: $$\frac{\partial L}{\partial y_k} = -\sum_{i=1}^n \frac{\partial}{\partial y_k} (z_i \log(y_i))$$ 当$i\neq k$时,$\frac{\partial}{\partial y_k}(z_i \log(y_i))=0$,因此上式可以简化为: $$\frac{\partial L}{\partial y_k} = -\frac{\partial}{\partial y_k} (z_k \log(y_k)) = -\frac{z_k}{y_k}$$ 综上所述,我们得到交叉熵损失函数对于softmax模型输出的偏导数为: $$\frac{\partial L}{\partial y_k} = \begin{cases} y_k-z_k, & \text{if $k=j$}\\ y_k, & \text{if $k\neq j$} \end{cases}$$ 其中$j$表示真实标签为1的类别。这样,我们就可以利用该导数来进行反向传播,更新模型参数,从而优化模型。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值