交叉熵、相对熵(KL散度)的数学原理及在机器学习中应用

本文深入解析信息量、熵、KL散度及交叉熵的概念,阐述它们在机器学习分类任务中的应用,特别是交叉熵作为损失函数的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 引言

最近频繁使用交叉熵,虽然之前学习过,但感觉对交叉熵的认识还是不够全面,打算再详细的总结一下。搜索了一番资料发现已经有人对这一块的知识讲解非常全面,所以就不再重复细说,只总结一下我认为比较关键的知识脉络吧。
要全面地搞懂交叉熵得从这一条概念链条着手:信息量—>熵—>KL散度—>交叉熵

2 信息量

假设X是一个离散型随机变量,其取值集合为χ,概率分布函数 p ( x ) = P ( X = x ) , x ∈ χ p(x)=P(X=x),x∈χ p(x)=P(X=x),xχ,则定义事件 X = x 0 X=x_0 X=x0的信息量为
I ( x 0 ) = − l o g ( p ( x 0 ) ) I(x_0)=−log(p(x_0)) I(x0)=log(p(x0))
至于信息量的计算公式为啥是这样?因为-logx这个函数的性质恰好是我们需要的,即随着x增大该函数不断减小,恰如信息量随着发生概率的增大而减小。
信息量描述的是一个事件发生的不确定性的大小。

3 熵

有了上面关于信息量的定义,我们就可以定义熵了,即:
H ( X ) = − ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) H(X)=−∑_{i=1}^np(x_i)log(p(x_i)) H(X)=i=1np(xi)log(p(xi))
为啥上面的式子是求和形式呢?
因为一个事件可能有很多种发生情况,每一种情况的发生都对应着一个发生概率,那么熵就是用来表示一个事件的信息量的期望。

4 KL散度

相对熵又称KL散度,如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。
KL散度的计算公式:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) D_{KL}(p||q)=\sum_{i=1}^np(x_i)log(\frac{p(x_i)}{q(x_i)}) DKL(pq)=i=1np(xi)log(q(xi)p(xi))
其中,n为事件的所有可能性。
D K L D_{KL} DKL的值越小,表示q分布和p分布越接近。
在机器学习分类任务中(假设分为三类),P往往用来表示样本的真实分布,比如[1,0,0]表示当前样本属于第一类。Q用来表示模型所预测的分布,比如[0.7,0.2,0.1] 。

5 交叉熵

在机器学习分类任务中,我们需要评估label和predict之间的差距,使用KL散度刚刚好,即 D K L ( y ∣ ∣ y ′ ) D_{KL}(y||y^{'}) DKL(yy),其中 y y y是label值, y ′ y^{'} y是predict值。
但是为啥我们却普遍使用交叉熵呢,而不是使用KL散度呢?
因为根据前面KL散度的公式我们可以继续推导出如下过程:
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) ) − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) = − H ( p ( x ) ) + [ − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) ] D_{KL}(p||q)=∑_{i=1}^{n}p(x_i)log(p(x_i))−∑_{i=1}^{n}p(x_i)log(q(x_i)) \\ =-H(p(x))+[−∑_{i=1}^{n}p(x_i)log(q(x_i))] DKL(pq)=i=1np(xi)log(p(xi))i=1np(xi)log(q(xi))=H(p(x))+[i=1np(xi)log(q(xi))]
加号的前一部分恰巧就是p的熵,加号的后一部分就是交叉熵,我们将其单独拎出来:
H ( p , q ) = − ∑ i = 1 n p ( x i ) l o g ( q ( x i ) ) H(p,q)=−∑_{i=1}^{n}p(x_i)log(q(x_i)) H(p,q)=i=1np(xi)log(q(xi))
其中p是样本的label真实概率值,q是对样本predict的概率值。
由于KL散度中的前一部分 − H ( p ( x ) ) -H(p(x)) H(p(x))不变(因为样本的标签不变),故在优化过程中,只需要关注交叉熵就可以了。所以一般在机器学习中直接用用交叉熵做loss,评估模型。

6 交叉熵在机器学习中的应用

假设为二分类任务,在单个样本中的label的真实值确定的y,模型预测值为y’。则单个样本的交叉熵损失函数:
L = − [ y l o g y ^ + ( 1 − y ) l o g ( 1 − y ^ ) ] L=−[ylog \hat y+(1−y)log (1−\hat y)] L=[ylogy^+(1y)log(1y^)]
其中,由于每个样本中的label是真实类别是确定的,那么y在正样本中为1,负样本中取0,而不是取(0,1)区间内的值。

如果训练样本有N个,则在分类任务中的目标损失函数的计算公式为:
L = − ∑ i = 1 N [ y ( i ) l o g   y ^ ( i ) + ( 1 − y ( i ) ) l o g   ( 1 − y ^ ( i ) ) ] L=-\sum_{i=1}^N[y^{(i)}log\ \hat y^{(i)}+(1-y^{(i)})log\ (1-\hat y^{(i)})] L=i=1N[y(i)log y^(i)+(1y(i))log (1y^(i))]

7 推荐资料

本文的总结来自如下这些资料,其中资料[1]给了比较详细的讲解且作者经验丰富,非常阅读。资料[2]给了比较全面的概括。
[1].https://www.zhihu.com/question/65288314/answer/244557337
[2].https://blog.csdn.net/tsyccnh/article/details/79163834
[3].https://blog.csdn.net/red_stone1/article/details/80735068

<think>嗯,用户想了解交叉熵损失函数的数学原理,包括公式推导以及在机器学习和深学习中的应用。首先,我需要回顾交叉熵的基础概念,可能要从信息论开始,因为交叉熵源自信息论中的熵和相对熵。记得交叉熵是用来衡量两个概率分布之间的差异,这在分类任务中特别有用,尤其是当使用softmax作为输出层时。 接下来,应该分步骤推导交叉熵的公式。可能需要先介绍信息熵,然后是KL,因为交叉熵可以看作是真实分布和预测分布之间的KL加上信息熵。用户提到的引用中有提到极大似然估计和信息论两种推导方式,需要结合这两种方法来说明,这样用户能更全面地理解。 然后,要具体到机器学习中的应用,比如在逻辑回归和二分类问题中的交叉熵形式,以及多分类的情况。可能还要对比MSE和交叉熵的区别,解释为什么分类问题中交叉熵更合适,比如梯消失的问题。 用户提供的引用中提到了交叉熵的凸性以及梯下降的应用,这部分需要详细说明,确保数学推导的正确性,比如对sigmoid或softmax的导数进行分析,说明为什么交叉熵损失在这些激活函数下更有效。 还要注意公式的格式,按照用户的要求,行内公式用$...$,独立公式用$$...$$,并且检查LaTeX语法是否正确。例如,交叉熵的公式应该是$H(y, \hat{y}) = -\sum y_i \log(\hat{y}_i)$,然后展开二分类和多分类的情况。 可能还需要回答生成的问题,比如交叉熵与极大似然的关系,或者在深学习中的具体应用,所以推导过程中要涵盖这些点,确保后续问题有依据。同时,引用文献要正确标注,比如引用[2]和[3]提到推导方法,引用[4]提到凸性,这些都需要在适当的地方加入引用标识。 最后,要确保语言流畅,结构清晰,分步骤讲解,从信息论基础到公式推导,再到具体应用,帮助用户逐步理解交叉熵数学原理。同时,检查是否有遗漏点,比如梯计算的具体步骤,或者交叉熵损失函数的优化特性,这些都可能对用户有帮助。</think>### 交叉熵损失函数的数学原理与推导 #### 一、信息论基础 1. **信息熵**:描述随机事件的不确定性,定义为: $$H(p) = -\sum_{i} p_i \log p_i$$ 其中$p_i$是事件$i$的真实概率[^2]。 2. **KL相对熵)**:衡量两个概率分布$p$(真实分布)和$q$(预测分布)的差异: $$D_{KL}(p \parallel q) = \sum_{i} p_i \log \frac{p_i}{q_i}$$ 3. **交叉熵**:由KL推导而来,定义为: $$H(p, q) = H(p) + D_{KL}(p \parallel q) = -\sum_{i} p_i \log q_i$$ --- #### 二、分类任务中的推导(以二分类为例) **场景**:二分类任务中,真实标签$y \in \{0,1\}$,预测概率$\hat{y} = \sigma(z)$($\sigma$为sigmoid函数) 1. **极大似然估计视角** - 似然函数:$P(y | z) = \hat{y}^y (1 - \hat{y})^{1-y}$ - 对数似然:$\log L = y \log \hat{y} + (1-y) \log (1 - \hat{y})$ - 损失函数取负对数似然: $$L = -[y \log \hat{y} + (1-y) \log (1 - \hat{y})]$$ 这即为二分类交叉熵损失函数[^3]。 2. **信息论视角** 直接套用交叉熵定义式,当真实分布$p=[y, 1-y]$,预测分布$q=[\hat{y}, 1-\hat{y}]$时: $$H(p, q) = -y \log \hat{y} - (1-y) \log (1 - \hat{y})$$ 与极大似然推导结果一致[^4]。 --- #### 三、多分类任务扩展 对于$C$个类别,使用softmax归一化预测概率$\hat{y}_i = \frac{e^{z_i}}{\sum_{j} e^{z_j}}$,交叉熵损失为: $$L = -\sum_{i=1}^{C} y_i \log \hat{y}_i$$ 其中$y_i$为one-hot编码的真实标签[^2]。 --- #### 四、梯推导(以sigmoid为例) 令$z = w^T x + b$,$\hat{y} = \sigma(z)$,损失函数对参数$w$的梯: $$ \frac{\partial L}{\partial w} = (\hat{y} - y)x $$ 这一简洁的梯形式避免了MSE损失中因sigmoid导数引起的梯消失问题[^4]。 --- #### 五、与MSE的对比 | 特性 | 交叉熵损失 | MSE损失 | |---------------------|--------------------------|------------------------| | 梯特性 | 与误差成正比,收敛快 | 含激活函数导数项,易饱和 | | 适用场景 | 分类任务(概率分布差异) | 回归任务(数值预测) | | 凸性 | 凸函数,全局最优解 | 非凸(含非线性激活时) | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值