社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

机器学习最常用的损失函数之交叉熵

一个普普通通简简单单平平凡凡的神 • 6 年前 • 302 次点击  

阅读大概需要4分钟

作者 rtygbwwwerr huangjx36

编辑 zenRRan 稍有修改

链接

https://blog.csdn.net/rtygbwwwerr/article/details/50778098

https://blog.csdn.net/huangjx36/article/details/78147617

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

什么是信息量?

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

I(x0)=−log(p(x0)),可以理解为,一个事件发生的概率越大,则它所携带的信息量就越小,而当p(x0)=1时,熵将等于0,也就是说该事件的发生不会导致任何信息量的增加。举个例子,小明平时不爱学习,考试经常不及格,而小王是个勤奋学习的好学生,经常得满分,所以我们可以做如下假设: 

事件A:小明考试及格,对应的概率P(xA)=0.1,信息量为I(xA)=−log(0.1)=3.3219 

事件B:小王考试及格,对应的概率P(xB)=0.999,信息量为I(xB)=−log(0.999)=0.0014 

可以看出,结果非常符合直观:小明及格的可能性很低(十次考试只有一次及格),因此如果某次考试及格了(大家都会说:XXX竟然及格了!),必然会引入较大的信息量,对应的I值也较高。而对于小王而言,考试及格是大概率事件,在事件B发生前,大家普遍认为事件B的发生几乎是确定的,因此当某次考试小王及格这个事件发生时并不会引入太多的信息量,相应的I值也非常的低。

什么是熵?

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

即: 

对应小王的熵: 

虽然小明考试结果的不确定性较低,毕竟十次有9次都不及格,但是也比不上小王(1000次考试只有一次才可能不及格,结果相当的确定) 

我们再假设一个成绩相对普通的学生小东,他及格的概率是P(xC)=0.5,即及格与否的概率是一样的,对应的熵: 

其熵为1,他的不确定性比前边两位同学要高很多,在成绩公布之前,很难准确猜测出他的考试结果。 

可以看出,熵其实是信息量的期望值,它是一个随机变量的确定性的度量。熵越大,变量的取值越不确定,反之就越确定。

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

X的熵定义为: 

如果p(x)是连续型随机变量的pdf,则熵定义为: 

为了保证有效性,这里约定当p(x)→0时,有p(x)logp(x)→0 

当X为0-1分布时,熵与概率p的关系如下图

可以看出,当两种取值的可能性相等时,不确定度最大(此时没有任何先验知识),这个结论可以推广到多种取值的情况。在图中也可以看出,当p=0或1时,熵为0,即此时X完全确定。 

熵的单位随着公式中log运算的底数而变化,当底数为2时,单位为“比特”(bit),底数为e时,单位为“奈特”。

什么是相对熵?

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

并且为了保证连续性,做如下约定: 

显然,当p=q时,两者之间的相对熵DKL(p||q)=0 

上式最后的Hp(q)表示在p分布下,使用q进行编码需要的bit数,而H(p)表示对真实分布p所需要的最小编码bit数。基于此,相对熵的意义就很明确了:DKL(p||q)表示在真实分布为p的前提下,使用q分布进行编码相对于使用真实分布p进行编码(即最优编码)所多出来的bit数。

什么是交叉熵?

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

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

特别的,在logistic regression中, 

p:真实样本分布,服从参数为p的0-1分布,即X∼B(1,p) 

q:待估计的模型,服从参数为q的0-1分布,即X∼B(1,q) 

两者的交叉熵为: 

对所有训练样本取均值得: 

这个结果与通过最大似然估计方法求出来的结果一致。

每日托福单词

quantum  n. 量子

amendment  n. 修正,修改,修正案

composed  adj. 镇定的,沉着的

remnant  n. 残余,剩余部分

undermine  n. 破坏,削弱

推荐阅读:

精彩知识回顾

未来 3~5 年内,哪个方向的机器学习人才最紧缺?

详解依存树的来龙去脉及用法

TreeLSTM Sentiment Classification

一分钟搞懂的算法之BPE算法

福利来了!本人近300G的学习资料愿与大家分享

【干货】神经网络SRU

基于attention的seq2seq机器翻译实践详解

【干货】基于注意力机制的seq2seq网络

【干货】GRU神经网络


欢迎关注深度学习自然语言处理公众号,我会 每天更新自己在科研学习路上的一点一滴!再小的人也有自己的品牌!期待和你一起进步!

长按识别二维码

点个赞呗

今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/HpL3AG1fuy
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/10681
 
302 次点击