信息论基础(信息量、熵、KL散度、交叉熵)

文章目录

  • 信息论基础(信息量、熵、KL散度、交叉熵)
    • 1. 信息量与熵
    • 2. KL散度与交叉熵
      • 交叉熵与LogisticLogisticLogistic回归
    • 后续待补充

我们知道同为正态分布的两个模型可以通过均值和方差进行模型之间的差异比较。那不同类别的模型,比如正态分布和泊松分布之间应该如何衡量差异呢?

答:只要是两个概率模型,就能被(EntropyEntropyEntropy)统一衡量。

熵:在信息论中用来表示随机变量不确定性的度量。


1. 信息量与熵

先引入自信息/信息量:

自信息selfintroductionself\ introductionself introduction:表示一个随机事件所包含的信息量,一个随机事件发生的概率越高,其自信息越低;必然事件的自信息为0。

信息量是指信息多少的度量(一个事件从不确定变为确定,他的难度有多大)。比如中国足球队夺冠概率为11024\frac{1}{1024}10241​,你却告诉我他夺冠了,那么这个"信息"就有10bit的信息量。

  • 随机变量XXX,当X=xiX=x_iX=xi​时的自信息 / 信息量I(x)I(x)I(x)定义为:I(xi)=−logpiI(x_i) = -log\ p_iI(xi​)=−log pi​
  • pi为X取值为xip_i为X取值为x_ipi​为X取值为xi​的概率;
    对数的底数可以为2、eee和10,为2时单位为bit,为eee时单位为纳特natnatnat。

信息量一个具体事件从不确定变为确定的难度有多大。信息量越大说明难度越高。
类似,但不是衡量一个具体事件,熵用来衡量整个系统中的所有事件,即一个系统从不确定变为确定的难度有多大

  • 对于分布为p(x)p(x)p(x)的随机变量XXX,其信息量/自信息的期望为熵。公式为:H(X)=E(−logpi)=−∑i=1npilogpiH(X)=E(-log\ p_i)=-\sum_{i=1}^n p_i \ log\ p_iH(X)=E(−log pi​)=−i=1∑n​pi​ log pi​

2. KL散度与交叉熵

ok,回到开始的问题,如何比较两个概率模型。

如果直接算出两个概率模型的熵来比较大小,有些简单粗暴。
那么引入KL散度/相对熵

DKL(P∣∣Q):以P为基准考虑P和Q相差多少D_{KL}(P||Q):以P为基准考虑P和Q相差多少 DKL​(P∣∣Q):以P为基准考虑P和Q相差多少

DKL(P∣∣Q):=∑i=1mpi(IQ(qi)−IP(pi))=∑i=1mpi((−log2qi)−(−log2pi))=∑i=1mpi(−log2qi)−∑i=1mpi(−log2pi)=H(P,Q)−H(P)一般形式:  DKL(P∣∣Q)=∑ipilogpiqiD_{KL}(P||Q) := \sum_{i=1}^m p_i(I_Q(q_i) - I_P(p_i)) = \sum_{i=1}^m p_i((-log_2q_i) - (-log_2p_i))\\ =\sum_{i=1}^m p_i(-log_2q_i) - \sum_{i=1}^m p_i(-log_2p_i) = H(P,Q) - H(P)\\ 一般形式:\ \ D_{KL}(P||Q) =\sum_i p_i log\frac{p_i}{q_i} DKL​(P∣∣Q):=i=1∑m​pi​(IQ​(qi​)−IP​(pi​))=i=1∑m​pi​((−log2​qi​)−(−log2​pi​))=i=1∑m​pi​(−log2​qi​)−i=1∑m​pi​(−log2​pi​)=H(P,Q)−H(P)一般形式:  DKL​(P∣∣Q)=i∑​pi​logqi​pi​​

H§就是P的熵,恒定不变;
H(P,Q)为交叉熵
KL散度=0时,P和Q最接近

由吉布斯不等式可知:KL散度≥0,QP相等时=0。那么要想让P和Q概率模型非常接近,就需要找到交叉熵H(P,Q)H(P,Q)H(P,Q)的最小值。

交叉熵公式:
H(P,Q)=−∑i=1mpilogqiH(P,Q) = -\sum_{i=1}^m p_i\ log q_i H(P,Q)=−i=1∑m​pi​ logqi​

交叉熵与LogisticLogisticLogistic回归

对于LogisticLogisticLogistic回归,假设真实的labellabellabel概率分布为P(x)P(x)P(x),模型预测的为Q(x)Q(x)Q(x),那么就可以用KL散度衡量预测值与真实值概率模型之间的差异

KL散度公式:

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)

然后H(P)H(P)H(P)(真实值的熵)为固定值,所以H(P,Q)H(P,Q)H(P,Q)交叉熵越小,KL散度越大,预测值与真实值之间差异越大,故选取交叉熵作为logisticlogisticlogistic回归的损失函数

根据交叉熵公式:
logisticlogisticlogistic回归中m=2m=2m=2,得到二元交叉熵
H(P,Q)=−(p1(logq1)+p2(logq2))=−(p1(logq1)+(1−p1)(log(1−q2)))=−(ylog(hθ(x))+(1−y)log(1−hθ(x)))H(P,Q) = -( p_1(logq_1) + p_2(logq_2) )\\ = -( p_1(logq_1) + (1-p_1)(log(1-q_2)))\\ = -(ylog(h_\theta (x)) + (1-y)log(1-h_\theta (x))) H(P,Q)=−(p1​(logq1​)+p2​(logq2​))=−(p1​(logq1​)+(1−p1​)(log(1−q2​)))=−(ylog(hθ​(x))+(1−y)log(1−hθ​(x)))

后续待补充

参考:
B站 - 王木头学科学
神经网络与深度学习 - 邱锡鹏

信息论基础(信息量、熵、KL散度、交叉熵)相关推荐

  1. 交叉熵三连(3)——交叉熵及其使用

    相关文章: 交叉熵三连(1)--信息熵 交叉熵三连(2)--KL散度(相对熵) 交叉熵三连(3)--交叉熵及其使用   在神经网络中,我们经常使用交叉熵做多分类问题和二分类的损失函数,在通过前面的两篇 ...

  2. 信息量-log2P(莫斯编码使用频繁P大的字符编码段信息量少)、信息熵:期望E=-Plog2P、两点分布交叉熵=KL散度=相对熵=-plnp-(1-p)ln(1-p)不对称、JS散度对称

    信息熵为什么要定义成-Σp*log§? 信息熵为什么要定义成-Σp*log(p)? 在解释信息熵之前,需要先来说说什么是信息量. 信息量是对信息的度量,单位一般用bit. 信息论之父克劳德·艾尔伍德· ...

  3. 自信息/熵/联合熵/条件熵/相对熵/交叉熵/互信息及其相互之间的关系

    [深度学习基础]:信息论(一)_自信息/熵/联合熵/条件熵/相对熵/交叉熵/互信息及其相互之间的关系_bqw的博客-CSDN博客 详解机器学习中的熵.条件熵.相对熵和交叉熵 - 遍地胡说 - 博客园

  4. 交叉熵损失函数python_交叉熵损失函数nn.CrossEntropyLoss()

    nn.CrossEntropyLoss() 1.引言 在使用pytorch深度学习框架做多分类时,计算损失函数通常会使用交叉熵损失函数nn.CrossEntropyLoss() 2. 信息量和熵 信息 ...

  5. matlab图像信息熵交叉熵,【机器学习】信息量,信息熵,交叉熵,KL散度和互信息(信息增益)...

    首先先强烈推荐一篇外文博客Visual Information Theory这个博客的博主colah是个著名的计算机知识科普达人,以前很是著名的那篇LSTM讲解的文章也是他写的.这篇文章详细讲解了信息 ...

  6. 信息量、信息熵、交叉熵、KL散度、JS散度、Wasserstein距离

    前两篇介绍了目标检测中的回归损失函数,本来这篇打算介绍目标检测中的分类损失函数.但是介绍classification loss function自然绕不过交叉熵,所以还是简单的把信息论中的一些概念在这 ...

  7. GANs之信息量、信息熵、交叉熵、KL散度、JS散度、Wasserstein距离

    信息量也叫做香农信息量,常用于刻画消除随机变量X在x处的不确定性所需的信息量大小.假设只考虑连续型随机变量的情况,设p为随机变量X的概率分布,即p(x)为随机变量X在X=x处的概率密度函数值,随机变量 ...

  8. matlab计算kl散度命令,熵,交叉熵,KL散度公式与计算实例

    交叉熵(Cross Entropy)和KL散度(Kullback–Leibler Divergence)是机器学习中极其常用的两个指标,用来衡量两个概率分布的相似度,常被作为Loss Function ...

  9. 交叉熵和mse_交叉熵 相对熵(KL散度/互熵)

    香农熵 熵考察(香农熵)的是单个的信息(分布)的期望:反映了一个系统的无序化(有序化)程度,一个系统越有序,信息熵就越低,反之就越高. 交叉熵 交叉熵考察的是两个的信息(分布)的期望: 交叉熵和熵,相 ...

最新文章

  1. Sco Unixware 7.1.3企业版服务器安装视频教程
  2. python大神-Python代码怎么写,听听顶尖Python大神的建议
  3. mini-treeselect的动态赋值
  4. ASP.NET MVC 实现与SQLSERVER的依赖缓存
  5. abap 字符串处理
  6. java获取异常的数据_Java(8题):异常,通过try catch进行处理,登录,商品,使用jdbc进行读取,详细图析...
  7. Master DNS服务的搭建
  8. 边缘计算精华问答 | 火爆的边缘计算为何兴起?
  9. Windows系统中常见的进程DOS操作命令
  10. 获取到某一方法的调用者的类名、方法名、命名空间
  11. 9、Fiddler中设置断点修改Request
  12. 玩转大数据系列之一:数据采集与同步
  13. 01 Python基础
  14. Linux 档案属性与目录配置
  15. 追求代码质量: 使用 TestNG-Abbot 实现自动化 GUI 测试
  16. C语言新手入门贪吃蛇的链表实现-控制光标位置,流畅不闪屏
  17. JavaEE ActionForm的高级应用
  18. Android 7.1 设置不支持遥控操作?
  19. 如何实现 iOS 短视频跨页面的无痕续播?
  20. paddle 图标注_UI进阶干货 如何标注才能高度还原设计稿?

热门文章

  1. 阿里云更换系统盘(公共镜像)
  2. 使用Matlab提取ADC采样数据中的噪声
  3. 如何安装Redis?
  4. 1930年航拍中的北京,那时候的北京好多田野
  5. 很不错的教程一步步教你如何写Makefile
  6. oracle的Minus的使用
  7. Windows 10 安装STF实战
  8. 郭德纲对18岁郭麒麟说的话,江湖阅历,字字珠玑,堪称郭氏家训
  9. Android(安卓),如何查看App渠道号?
  10. 深入理解Flutter动画原理,已整理成文档