交叉熵与交叉熵损失

本文深入探讨了信息论中的核心概念——熵与交叉熵,详细解释了信息量、熵、相对熵(KL散度)和交叉熵的概念及其在机器学习中的应用。通过具体实例,阐述了这些概念如何量化信息的不确定性,并解释了交叉熵损失函数在模型训练中的作用。

原文出处:https://blog.youkuaiyun.com/rtygbwwwerr/article/details/50778098

红字部分为读完这篇博文之后我的一些理解。

 

交叉熵(Cross-Entropy)

交叉熵是一个在ML领域经常会被提到的名词。在这篇文章里将对这个概念进行详细的分析。

1.什么是信息量?

假设X是一个离散型随机变量,其取值集合为X,概率分布函数为p(x)=Pr(X=x),x\in X,我们定义事件X=x_{0}的信息量为

                                                                                        I(x_{0})=-log_{2}(p(x_{0}))

可以理解为,一个事件发生的概率越大,则它所携带的信息量就越小,而当p(x_{0})=1时,熵将等于0,也就是说该事件的发生不会导致任何信息量的增加。

举个例子,小明平时不爱学习,考试经常不及格,而小王是个勤奋学习的好学生,经常得满分,所以我们可以做如下假设:
事件A:小明考试及格,对应的概率P(x_{A})=0.1,信息量为I(x_{A})=-log_{2}(0.1)=3.3219
事件B:小王考试及格,对应的概率P(x_{B})=0.999,信息量为I(x_{B})=-log_{2}(0.999)=0.0014
可以看出,结果非常符合直观:小明及格的可能性很低(十次考试只有一次及格),因此如果某次考试及格了(大家都会说:XXX竟然及格了!),必然会引入较大的信息量,对应的I值也较高。而对于小王而言,考试及格是大概率事件,在事件B发生前,大家普遍认为事件B的发生几乎是确定的,因此当某次考试小王及格这个事件发生时并不会引入太多的信息量,相应的I值也非常的低。

2.什么是熵?

那么什么又是熵呢?还是通过上边的例子来说明,假设小明的考试结果是一个0-1分布X_{A}

只有两个取值{0:不及格,1:及格},在某次考试结果公布前,小明的考试结果有多大的不确定度呢?你肯定会说:十有八九不及格!因为根据先验知识,小明及格的概率仅有10%,90%的可能都是不及格的。怎么来度量这个不确定度?求期望!不错,我们对所有可能结果带来的额外信息量求取均值(期望),其结果不就能够衡量出小明考试成绩的不确定度了吗。
即:

H_{A(x)}=-[p(x_{A})log_{2}(p(x_{A}))+(1-p(x_{A}))log_{2}(1-p(x_{A}))]=0.4690
对应小王的熵:

H_{B(x)}=-[p(x_{B})log_{2}(p(x_{B}))+(1-p(x_{B}))log_{2}(1-p(x_{B}))]=0.0114
虽然小明考试结果的不确定性较低,毕竟十次有9次都不及格,但是也比不上小王(1000次考试只有一次才可能不及格,结果相当的确定)
我们再假设一个成绩相对普通的学生小东,他及格的概率是P(xC)=0.5,即及格与否的概率是一样的,对应的熵:

H_{C(x)}=-[p(x_{C})log_{2}(p(x_{C}))+(1-p(x_{C}))log_{2}(1-p(x_{C}))]=1
其熵为1,他的不确定性比前边两位同学要高很多,在成绩公布之前,很难准确猜测出他的考试结果。
可以看出,熵其实是信息量的期望值,它是一个随机变量的确定性的度量。熵越大,变量的取值越不确定,反之就越确定。

对于一个随机变量X而言,它的所有可能取值的信息量的期望E[I(x)]就称为熵。
随机变量X的熵定义为:

H(X)=E[log_{2}P(X)]=-\sum p(x)logp(x),x\in X
如果p(x)是连续型随机变量的pdf(ProbabilityDensityFunction),则熵定义为:

H(X)=-\int p(x)log_{2}p(x)dx,x\in X
为了保证有效性,这里约定当p(x)\rightarrow 0时,有p(x)log_{2}p(x)\rightarrow 0


X为0-1分布时,熵与概率p的关系如下图:
这里写图片描述
可以看出,当两种取值的可能性相等时,不确定度最大(此时没有任何先验知识),这个结论可以推广到多种取值的情况。在图中也可以看出,当p=0或1时,熵为0,即此时X完全确定。
熵的单位随着公式中对数运算的底数而变化,当底数为2时,单位为“比特”(bit),底数为e时,单位为“奈特”。

3.什么是相对熵?

相对熵(relative entropy)又称为KL散度(Kullback-Leibler divergence),KL距离,是两个随机分布间距离的度量。记为DKL(p||q)。它度量当真实分布为p时,假设分布q的无效性。

D_{KL}(p||q)=E_{p}[log_{2}\frac{p(x)}{q(x)}]=\sum_{x\in \chi }p(x)log_{2}\frac{p(x)}{q(x)}

=\sum_{x\in \chi }[p(x)log_{2}p(x)-p(x)log_{2}q(x)]

=\sum_{x\in \chi }p(x)log_{2}p(x)-\sum_{x\in \chi }p(x)log_{2}q(x)

=-H(p)-\sum_{x\in \chi }p(x)log_{2}q(x)

=-H(p)+Ep[-log_{2}q(x)]

=H_{p}(q)-H(p)

也就是交叉熵减去熵。
并且为了保证连续性,做如下约定:
0log0=0,0logq=0,plog0=\infty
显然,当p=q时,两者之间的相对熵DKL(p||q)=0
上式最后的H_{p}(q)表示在p分布下,使用q进行编码需要的bit数,而H(p)表示对真实分布p所需要的最小编码bit数。基于此,相对熵的意义就很明确了:

DKL(p||q)表示在真实分布为p的前提下,使用q分布进行编码相对于使用真实分布p进行编码(即最优编码)所多出来的bit数。

4. 什么是交叉熵?

交叉熵容易跟相对熵搞混,二者联系紧密,但又有所区别。假设有两个分布p,q,则它们在给定样本集上的交叉熵定义如下:

CEH(p,q)=Ep[-log_{2}q]=-\sum_{x\in X} p(x)logq(x)=H(p)+DKL(p||q)
可以看出,交叉熵与上一节定义的相对熵仅相差了H(p),当p已知时,可以把H(p)看做一个常数,此时交叉熵与KL距离在行为上是等价的,都反映了分布p,q的相似程度。最小化交叉熵等于最小化KL距离。它们都将在p=q时取得最小值(p=q时KL距离为0,交叉熵为H(p),因此有的工程文献中将最小化KL距离的方法称为Principle of Minimum Cross-Entropy (MCE)或Minxent方法。

举个例子:含有4个字母(A,B,C,D)的数据集中,真实分布p=(1/2, 1/2, 0, 0),即A和B出现的概率均为1/2,C和D出现的概率都为0。则熵为

H(P)=-\frac{1}{2}log_{2}\frac{1}{2}-\frac{1}{2}log_{2}\frac{1}{2}=1

即只需要1位编码即可识别A和B。其中0log_{2}0=0

如果使用分布Q=(1/4, 1/4, 1/4, 1/4)来编码则得到

H(p,q)=-\frac{1}{2}log_{2}\frac{1}{4}-\frac{1}{2}log_{2}\frac{1}{4}=2

即需要2位编码来识别A和B。

 

而交叉熵损失(cross entropy loss)就是把交叉熵当做损失函数时这个损失函数的名称,即交叉熵损失等价于交叉熵。

5.参考链接:

维基百科关于cross-entropy的解释
交叉熵损失函数
UFLDL中关于logistic regression的说明
Kraft’s inequality
Visual Information

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值