熵、相对熵、交叉熵等理解
**
信息量
**
假设我们听到了两件事,分别如下:
事件A:巴西队进入了2018世界杯决赛圈。
事件B:中国队进入了2018世界杯决赛圈。
仅凭直觉来说,显而易见事件B的信息量比事件A的信息量要大。究其原因,是因为事件A发生的概率很大,事件B发生的概率很小。所以当越不可能的事件发生了,我们获取到的信息量就越大。越可能发生的事件发生了,我们获取到的信息量就越小。那么信息量应该和事件发生的概率有关,一个事件发生的概率越大,不确定性越小,则其携带的信息量就越小。
设X是一个离散型随机变量,其取值为集合X=x0,x1,…,xn ,则其概率分布函数为p(x)=Pr(X=x),x∈X,则定义事件X=x0 的信息量为:
当p(x0)=1时,该事件必定发生,其信息量为0.
由于是概率所以p(x0)的取值范围是[0,1],绘制为图形如下:
熵
熵用来衡量一个系统的混乱程度,代表系统中信息量的总和;熵值越大,表明这个系统的不确定性就越大。
信息量是衡量某个事件的不确定性,而熵是衡量一个系统(所有事件)的不确定性。
熵的计算公式:
其中,p(xi)为事件X=xi的概率,−log(p(xi))为事件X=xi的信息量。
可以看出,熵是信息量的期望值。
相对熵(KL散度)
对于同一个随机变量 x 有两个单独的概率分布p(x) 和 q(x),我们可以使用 KL 散度(Kullback-Leibler (KL) divergence)来衡量这两个分布的差异。
设 p(x),q(x) 分别是离散随机变量X的两个概率分布,则p对q的相对熵是:
表示如果用p来描述目标问题,而不是用q来描述目标问题,得到的信息增量。求和共有n项,表示为事件的所有可能性,值越小,表示q分布和p分布越接近。
在机器学习中,p往往用来表示样本的真实分布,比如[1,0,0]表示当前样本属于第一类。q用来表示模型所预测的分布,比如[0.7,0.2,0.1]
直观的理解就是如果用p来描述样本,那么就非常完美。而用q来描述样本,虽然可以大致描述,但是不是那么的完美,信息量不足,需要额外的一些“信息增量”才能达到和p一样完美的描述。如果我们的q通过反复训练,也能完美的描述样本,那么就不再需要额外的“信息增量”,q等价于p。
相对熵具有以下性质:
(1)如果p(x)和q(x)的分布相同,则其相对熵等于0
(2)DKL(p∥q)≠DKL(q∥p),也就是相对熵不具有对称性。
(3)DKL(p∥q)≥0
交叉熵
设 p(x),q(x) 分别是 离散随机变量X的两个概率分布,其中p(x)是目标分布,p和q的交叉熵可以看做是,使用分布q(x) 表示目标分布p(x)的困难程度:
将熵、相对熵以及交叉熵的公式放到一起:
通过上面三个公式就可以得到:
相对熵=交叉熵-熵。
在机器学习中,目标的分布p(x) 通常是训练数据的分布是固定的,即是H§ 是一个常量。这样两个分布的交叉熵H(p,q) 也就等价于最小化这两个分布的相对熵DKL(p∥q)。
设p(x) 是目标分布(训练数据的分布),我们的目标的就让训练得到的分布q(x)尽可能的接近p(x),这时候就可以最小化DKL(p∥q),等价于最小化交叉熵H(p,q) 。
从最大似然看交叉熵
设有一组训练样本X={x1,x2,⋯,xm} ,该样本的分布为p(x) 。假设使用θ 参数化模型得到q(x;θ) ,现用这个模型来估计X 的概率分布,得到似然函数
最大似然估计就是求得θ 使得L(θ) 的值最大,也就是
对上式的两边同时取log ,等价优化log 的最大似然估计:
对上式的右边进行缩放并不会改变argmax 的解,上式的右边除以样本的个数m:
和相对熵等价。
注意上式的
相当于求随机变量X 的函数log(X;θ) 的均值 ,根据大数定理,随着样本容量的增加,样本的算术平均值将趋近于随机变量的期望。 也就是说
其中EX∼P 表示符合样本分布P 的期望,这样就将最大似然估计使用真实样本的期望来表示
对右边取负号,将最大化变成最小化运算。
由于Ex∼p(logp(x)) 是训练样本的期望,是个固定的常数,在求最小值时可以忽略,所以最小化DKL(p∥q) 就变成了最小化−Ex∼p(logq(x)) ,这和最大似然估计是等价的。
最大似然估计、相对熵、交叉熵的公式如下
从上面可以看出,最小化交叉熵,也就是最小化DKL ,从而预测的分布q(x) 和训练样本的真实分布p(x) 最接近。而最小化DKL 和最大似然估计是等价的。
设训练数据中类别的概率分布为p(ci) ,那么目标分布p(ci) 和预测分布q(ci)的交叉熵为
每个训练样本所属的类别是已知的,并且每个样本只会属于一个类别(概率为1),属于其他类别概率为0。具体的,可以假设有个三分类任务,三个类分别是:猫,猪,狗。现有一个训练样本类别为猫,则有:
通过预测得到的三个类别的概率分别为:q(cat)=0.6,q(pig)=0.2,q(dog)=0.2 ,计算p 和q 的交叉熵为:
利用这种特性,可以将样本的类别进行重新编码,就可以简化交叉熵的计算,这种编码方式就是one-hot 编码。以上面例子为例,
通过这种编码方式,在计算交叉熵时,只需要计算和训练样本对应类别预测概率的值,其他的项都是0⋅logq(ci)=0 。
具体的,交叉熵计算公式变成如下:
其中ci 为训练样本对应的类别,上式也被称为负对数似然(negative log-likelihood,nll)。
总结
相对熵可以用来度量两个分布相似性,假设分布p是训练样本的分布,q是预测得到的分布。分类训练的过程实际上就是最小化DKL(p∥q),由于由于交叉熵
其中,H§是训练样本的熵,是一个已知的常量,这样最小化相对熵就等价于最小化交叉熵。
从最大似然估计转化为最小化负对数似然
也等价于最小化相对熵。
参考
- https://blog.csdn.net/u010521842/article/details/82186910
- https://www.cnblogs.com/wangguchangqing/p/12068084.html
熵、相对熵、交叉熵等理解相关推荐
- 熵,信息熵,香农熵,微分熵,交叉熵,相对熵
2019-07-13 https://blog.csdn.net/landstream/article/details/82383503 https://blog.csdn.net/pipisorry ...
- 自信息/熵/联合熵/条件熵/相对熵/交叉熵/互信息及其相互之间的关系
[深度学习基础]:信息论(一)_自信息/熵/联合熵/条件熵/相对熵/交叉熵/互信息及其相互之间的关系_bqw的博客-CSDN博客 详解机器学习中的熵.条件熵.相对熵和交叉熵 - 遍地胡说 - 博客园
- 交叉熵损失函数和focal loss_理解熵、交叉熵和交叉熵损失
交叉熵损失是深度学习中应用最广泛的损失函数之一,这个强大的损失函数是建立在交叉熵概念上的.当我开始使用这个损失函数时,我很难理解它背后的直觉.在google了不同材料后,我能够得到一个令人满意的理解, ...
- [机器学习]理解熵,交叉熵和交叉熵的应用
一 信息量 信息论当中的熵指的是信息量的混乱程度,也可以理解成信息量的大小. 举个简单的例子,以下两个句子,哪一个句子的信息量更大呢? 我今天没中彩票 我今天中彩票了 从文本上来看,这两句话的字数一致 ...
- 【Pytorch神经网络理论篇】 21 信息熵与互信息:联合熵+条件熵+交叉熵+相对熵/KL散度/信息散度+JS散度
1 信息熵 熵 (Entropy),信息熵:常被用来作为一个系统的信息含量的量化指标,从而可以进一步用来作为系统方程优化的目标或者参数选择的判据. 1.1 信息熵的性质 单调性,发生概率越高的事件,其 ...
- 从熵到交叉熵损失的直观通俗的解释
来源:DeepHub IMBA本文约1100字,建议阅读5分钟 本文从信息论的角度解释有关熵的概念. 对于机器学习和数据科学的初学者来说,必须清楚熵和交叉熵的概念.它们是构建树.降维和图像分类的关键基 ...
- 信息量、熵、交叉熵、KL散度、JS散度杂谈
信息量.熵.交叉熵.KL散度.JS散度杂谈 信息量 任何事件都会承载着一定的信息量,包括已经发生的事件和未发生的事件,只是它们承载的信息量会有所不同.如昨天下雨这个已知事件,因为已经发生,既定事实,那 ...
- AI入门:通俗讲解熵、交叉熵和 KL 散度
全文共 4351 字,23 幅图, 预计阅读时间 22 分钟. 本文被以下三份资料所启发,纯纯的致敬! [Christopher Colah] - Visual Information Theory ...
- PyTorch-05神经网络与全连接(Logistic Regression、交叉熵、交叉熵来优化一个多分类的问题、全连接层(MLP网络层)、激活函数与GPU加速、测试、Visdom可视化)
PyTorch-05神经网络与全连接(Logistic Regression逻辑回归.交叉熵.交叉熵来优化一个多分类的问题.全连接层(MLP网络层).激活函数与GPU加速.测试(validation ...
- 信息量、熵、交叉熵、KL散度、JS散度、Wasserstein距离
信息量.熵.交叉熵.KL散度.JS散度 文章目录 信息量.熵.交叉熵.KL散度.JS散度 前言 一.信息量 二.熵 三.交叉熵 四.KL散度 五.JS散度 六. Wasserstein距离 1.解决的 ...
最新文章
- python解析json_python3 解析 json 字符串并返回支持属性访问的对象
- 天涯对房市预测比较准的是孤独的思想
- poj 3177 Redundant Paths
- 从FTP服务器进行文件的上传和下载
- Spring+Quartz 集群
- hadoop 写入mysql_使用MapReducer将文件写入mysql 数据库
- 数据切分——Atlas读写分离Mysql集群的搭建
- VS2008如何添加 OLE/COM 对象查看器 .
- 部署和调优 1.3 pureftp部署和优化-1
- acquire方法_Python锁类| 带有示例的acquire()方法
- Shell_Oracle Erp和其他系统Interface资料传输通过Shell进行控制(案例)
- 凸包模板(分治 or Graham扫描法)
- (转)使用CUnit进行单元测试和覆盖率统计
- 利用octave求矩阵的转置
- visio如何忽略跳线|跨线
- 秒杀系统设计的关键点思考
- python正态性检验_在python中做正态性检验示例
- arcgis 将2000球面坐标转换成平面坐标
- 6大页面数据抓取工具
- Android 更换 APP logo 无效问题处理