信息熵,交叉熵,相对熵,KL散度

2024-06-12 15:18

本文主要是介绍信息熵,交叉熵,相对熵,KL散度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        ,信息熵在机器学习和深度学习中是十分重要的。那么,信息熵到底是什么呢?

  首先,信息熵是描述的一个事情的不确定性。比如:我说,太阳从东方升起。那么这个事件发生的概率几乎为1,那么这个事情的反应的信息量就会很小。如果我说,太阳从西方升起。那么这就反应的信息量就很大了,这有可能是因为地球的自转变成了自东向西,或者地球脱离轨道去到了别的地方,那么这就可能导致白天变成黑夜,热带雨林将变成沙漠。

  那么,太阳从东方升起这个事件,概率很大,信息量就会很少。相反,太阳从西方升起,概率很小,信息量就会很多。因此,信息熵常被用来作为一个系统的信息量量化指标。信息熵也是不确定程度的度量, 一个事件的不确定程度越大, 则信息熵越大。

总结一下:消除熵=获取信息 (消除信息量)!

首先给出信息量的公式:

                                                                   

 可以看到当p(x)取得最大值1时,h(x)=0,即对于一个确定事件,其信息量为0.

 信息熵就是信息量的期望。公式如下:

                                                                

交叉熵:现在有样本集的两种概率分布p和q,其中p是样本的真实分布q为预测分布(通过训练样本得到的分布),如果我们要用q来预测样本(对测试样本进行测试),则是基于分布q的信息量的期望,由于样本来自于分布p,因此期望与真实分布一致,所以基于q的样本预测公式为:

                                                                 

相对熵:用预测分布q预测样本  与  用真实分布p预测样本  的差值成为相对熵,又称为KL散度

                                                           

                                                                        

有两种方式可以证明KL(p|q)>=0:

第一种方式可以利用Jensen's Inequality来证明:

注:   Jensen's Inequality 标准定义形式如下:如果X是一个随机变量且\varphi是一个凸函数,则:

                                                       

 由此可得:

                                                 

                                          

                      

第二种方式是直观解释:当编码对应的分布与样本对应的分布为同一分布时,即为最优编码状态,此时编码所需的全部比特数一定是最少的,其余任何方式都会使所需比特数增多,所以P与Q之间的KL散度不小于0。

KL散度除了基本的非负性,还有其它两个常见性质:

第一个是它的非对称性,即KL(p|q) 与KL(q|p)不相等。

第二个是KL散度并不满足三角不等式,即KL(p|q') + KL(q'|q) 与 KL(p|q) 没有明确的大小关系。

机器学习的目的是预测分布q更加接近于真实分布p,因此我们自然而然想到就是要求相对熵的最小值。而相对熵公式中的后一项由于p(x)的分布是确定的,因此可以说是常数,这样就变成了我们熟悉的,要求交叉熵的最小值,也即求最大似然估计。

fēi duì chèn xìng

[数] asymmetry

这篇关于信息熵,交叉熵,相对熵,KL散度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1054580

相关文章

基于ZYNQ7000的交叉编译工具链Qt+OpenCV+ffmpeg等库支持总结

最近刚刚接触XILINX的ZYNQ板,刚接触没有十天。XILINX定位它为SOC,我也很认同,起码比TI定位MPU为SOC强很多。据说今年TI的最新产品也加入了ZYNQ板。 之前的MIPS处理器设计与实现的项目就算做告一段落,搞了将近7个月,成果显著,收获颇多,最近打算搞搞ZYNQ。 之前MIPS也有一套交叉编译工具,不过是老师提供的,自己也尝试搞了搞,太辛苦了,而且也没什么成果,因为我

PyTorch nn.CrossEntropyLoss() 交叉熵损失函数详解和要点提醒

文章目录 前置知识nn.CrossEntropyLoss() 交叉熵损失参数数学公式带权重的公式(weight)标签平滑(label_smoothing) 要点 附录参考链接 前置知识 深度学习:关于损失函数的一些前置知识(PyTorch Loss) nn.CrossEntropyLoss() 交叉熵损失 torch.nn.CrossEntropyLoss(weight=N

交叉编译directfb

 http://hi.-baidu.---c--o-m  ---/findtest/blog/item/b8e92508fbd7ded362d986dd--.html 在我的2440上运行directfb,是不是很有意思呢. 那么首先就是要来编译. 编译要准备的东西当然是编译器和库了. 我用的还是编译SDL的那个编译器3.4.4 根据directfb的说明书--仔细看说明书再下

ubuntu14.4下安装4412交叉编译器

解压友善之臂带的交叉编译链 tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C/ 在这个文件中导出环境变量 gedit /root/.bashrc export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin 重启电脑 执行arm-linux-gcc命令 出现错误 bash: /

Python统计实战:一题搞定多元线性回归、共线性、相对重要性分析

为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。 (以下练习题来源于《统计学—基于Python》。联系获取完整数据和Python源代码文件。) 练习题 为了分析影响不良贷款的因素,一家商业银行在所属的多家分行中随机抽取25家,得到的不良贷款、贷款余额、应收贷款、贷款项目个数、固定资产投资等有关数据如下(前3行

word交叉引用

这里写目录标题 多个交叉引用快捷键 多个交叉引用 例: 选中引用号,切换域代码 改成下图 [4-5] 其中 \# 表示后面的不显示,加入"[0" 则表示除了[0外不显示,数字0在这里代指本来的引用编号,即原本的引用号[4]会变成[4 选中编号,F9刷新即变成如下图 快捷键 F9 快速刷新 shift、ctrl和‘+’ 可以快捷变成上标

10 交叉验证3

交叉验证3 交叉验证3 介绍例子 - 藉由 validation_curve 来检视模型参数有没有过拟合Overfitting的问题 介绍 连续三节的交叉验证(cross validation)让我们知道在机器学习中验证是有多么的重要, 这一次的 sklearn 中我们用到了sklearn.learning_curve当中的另外一种, 叫做validation_curve,用

9 交叉验证2 overfitting

交叉验证2 过拟合overfitting 交叉验证2 过拟合overfitting 介绍 介绍 sklearn.learning_curve 中的 learning curve 可以很直观的看出我们的 model 学习的进度, 对比发现有没有 overfitting 的问题. 然后我们可以对我们的 model 进行调整, 克服 overfitting 的问题. from s

8 交叉验证 1 Cross-validation

交叉验证 1 Cross-validation 交叉验证 1 Cross-validation 介绍例子1 - 如何选择正确的Model 基础验证法例子2 - 如何选择正确的Model 交叉验证法Cross Validation例子3 - 如何选择模型参数 以准确率accuracy判断例子4 - 如何选择模型参数 以平均方差Mean squared error判断 介绍 Sk

libsvm交叉验证与网格搜索(…

原文地址:libsvm交叉验证与网格搜索(参数选择) 作者:manifold libsvm交叉验证与网格搜索(参数选择) 由冰河 发表于 12:29 添加评论 502 阅读 十 21 2010 首先说交叉验证。 交叉验证(Cross validation)是一种评估统计分析、机器学习算法对独立于训练数据的数据集的泛化能力(generalize), 能够避免过拟合问题。