一文搞懂交叉熵损失

本文深入探讨了交叉熵损失的原理,从熵和信息量的概念出发,解释了相对熵(KL散度)和交叉熵的关系。讨论了多分类和二分类任务中的交叉熵损失,并介绍了PyTorch中的实现。通过最大似然估计的角度,阐述了最小化交叉熵损失等价于使预测分布接近真实分布。

本文从信息熵和最大似然估计来推导交叉熵作为分类损失的依据。

从熵来看交叉熵损失

信息量

信息量来衡量一个事件的不确定性,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小。

XXX是一个离散型随机变量,其取值为集合X=x0,x1,…,xnX = {x_0,x_1,\dots,x_n}X=x0,x1,,xn ,则其概率分布函数为p(x)=Pr(X=x),x∈Xp(x) = Pr(X = x),x \in Xp(x)=Pr(X=x),xX,则定义事件X=x0X = x_0X=x0 的信息量为:
I(x0)=−log⁡(p(x0)) I(x_0) = -\log(p(x_0)) I(x0)=log(p(x0))
p(x0)=1p(x_0) = 1p(x0)=1时,该事件必定发生,其信息量为0.

熵用来衡量一个系统的混乱程度,代表系统中信息量的总和;熵值越大,表明这个系统的不确定性就越大。

信息量是衡量某个事件的不确定性,而熵是衡量一个系统(所有事件)的不确定性。

熵的计算公式
H(x)=−∑i=1np(xi)log⁡(p(xi)) H(x) = -\sum_{i=1}^np(x_i)\log(p(x_i)) H(x)=i=1np(xi)log(p(xi))
其中,p(xi)p(x_i)p(xi)为事件X=xiX=x_iX=xi的概率,−log(p(xi))-log(p(x_i))log(p(xi))为事件X=xiX=x_iX=xi的信息量。

可以看出,熵是信息量的期望值,是一个随机变量(一个系统,事件所有可能性)不确定性的度量。熵值越大,随机变量的取值就越难确定,系统也就越不稳定;熵值越小,随机变量的取值也就越容易确定,系统越稳定。

相对熵 Relative entropy

相对熵也称为KL散度(Kullback-Leibler divergence),表示同一个随机变量的两个不同分布间的距离。

p(x),q(x)p(x),q(x)p(x),q(x) 分别是 离散随机变量XXX的两个概率分布,则pppqqq的相对熵是:
DKL(p∥q)=∑ip(xi)log(p(xi)q(xi)) D_{KL}(p \parallel q) = \sum_i p(x_i) log(\frac{p(x_i)}{q(x_i)}) DKL(pq)=ip(xi)log(q(xi)p(xi))

相对熵具有以下性质:

  • 如果p(x)p(x)p(x)q(x)q(x)q(x)的分布相同,则其相对熵等于0
  • DKL(p∥q)≠DKL(q∥p)D_{KL}(p \parallel q) \neq D_{KL}(q \parallel p)DKL(pq)=DKL(qp),也就是相对熵不具有对称性。
  • DKL(p∥q)≥0D_{KL}(p \parallel q) \geq 0DKL(pq)0

总的来说,相对熵是用来衡量同一个随机变量的两个不同分布之间的距离。在实际应用中,假如p(x)p(x)p(x)是目标真实的分布,而q(x)q(x)q(x)是预测得来的分布,为了让这两个分布尽可能的相同的,就需要最小化KL散度。

交叉熵 Cross Entropy

p(x),q(x)p(x),q(x)p(x),q(x) 分别是 离散随机变量XXX的两个概率分布,其中p(x)p(x)p(x)是目标分布,pppqqq的交叉熵可以看做是,使用分布q(x)q(x)q(x) 表示目标分布p(x)p(x)p(x)的困难程度:
H(p,q)=∑ip(xi)log1log⁡q(xi)=−∑ip(xi)log⁡q(xi) H(p,q) = \sum_ip(x_i)log\frac{1}{\log q(x_i)} = -\sum_ip(x_i)\log q(x_i) H(p,q)=ip(xi)loglogq(xi)1=ip(xi)logq(xi)
将熵、相对熵以及交叉熵的公式放到一起,
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ H(p) &= -\sum_…
通过上面三个公式就可以得到
DKL(p,q)=H(p,q)−H(p) D_{KL}(p,q) = H(p,q)- H(p) DKL(p,q)=H(p,q)H(p)
在机器学习中,目标的分布p(x)p(x)p(x) 通常是训练数据的分布是固定,即是H(p)H(p)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值