机器学习(3)——信息论基础(熵的介绍)

作者: WarrenRyan | 来源:发表于2018-08-24 21:23 被阅读71次

信息论基础

  在讲述熵的时候,我想先引入一个新的东西——信息量,信息是用来减少随机不确定性的东西(即不确定性的减少)。对于事件来说,它发生的概率越大,那么它所含有的信息量就越低,这很好理解,例如你今天去吃饭这个事件,这件事假定是一个必然事件的话,那么它所含有的信息只有吃饭这一件,那么假设这件事的概率越低,你也许会因为生病而不想吃饭,也许你随着心情来决定是否吃饭,它所含有的信息量就变大了。那么对于交叉熵中的熵,这又是一个什么东西呢?
  对于理工科的读者来说,这个东西并不难以理解,高中化学曾经学习过熵的一些概念。化学中的熵是指一个体系中的混乱程度,事实上对应我们机器学习中的熵是类似的。一个事物越混乱,那么很显然它就包含了更多的信息。
  熵有许多种,交叉、信息熵、相对熵以及条件熵等等。

信息熵

信息熵是由信息论之父香农提出来的,它用于随机变量的不确定性度量,先上信息熵的公式。
先上信息熵的公式:
H(X)=-\sum_{x \in X}p(x)logp(x)
我们可以用log\frac{1}{P}来衡量不确定性。P是一件事情发生的概率,概率越大,不确定性越小。
可以看到信息熵的公式,其实就是log\frac{1}{P}的期望,就是不确定性的期望,它代表了一个系统的不确定性,信息熵越大,不确定性越大。
注意这个公式有个默认前提,就是X分布下的随机变量x彼此之间相互独立。还有log的底默认为2,实际上底是多少都可以,但是在信息论中我们经常讨论的是二进制和比特,所以用2。
信息熵在联合概率分布的自然推广,就得到了联合熵:
H(X,Y)=-\sum_{x \in X} \sum_{y \in Y}p(x,y)logp(x,y)
当X, Y相互独立时,H(X, Y) = H(X) + H(Y)
当X和Y不独立时,可以用I(X, Y) = H(X) + H(Y) - H(X, Y)衡量两个分布的相关性,这个定义比较少用到。
下面这个例子很好的说明了这个问题

取自知乎
比如赌马比赛,有4匹马{ A, B, C, D},获胜概率分别为{ 1/2, 1/4, 1/8, 1/8 },将哪一匹马获胜视为随机变量X属于 { A, B, C, D } 。
假定我们需要用尽可能少的二元问题来确定随机变量 X 的取值。
例如,问题1:A获胜了吗? 问题2:B获胜了吗? 问题3:C获胜了吗?
最后我们可以通过最多3个二元问题,来确定取值。
如果X = A,那么需要问1次(问题1:是不是A?),概率为1/2
如果X = B,那么需要问2次(问题1:是不是A?问题2:是不是B?),概率为1/4
如果X = C,那么需要问3次(问题1,问题2,问题3),概率为1/8
如果X = D,那么需要问3次(问题1,问题2,问题3),概率为1/8
那么为确定X取值的二元问题的数量为
E(N)=\frac{1}{2}\cdot1+\frac{1}{4}\cdot2+\frac{1}{8}\cdot3+\frac{1}{8}\cdot3=\frac{7}{4}
回到信息熵的定义,会发现通过之前的信息熵公式,神奇地得到了:
H(X)=\frac{1}{2}log_2(2)+\frac{1}{4}log_24+\frac{1}{8}log_28=\frac{7}{4}bits
在二进制计算机中,一个比特为0或1,其实就代表了一个二元问题的回答。也就是说,在计算机中,我们给哪一匹马夺冠这个事件进行编码,所需要的平均码长为1.75个比特。
很显然,为了尽可能减少码长,我们要给发生概率p(x)较大的事件,分配较短的码长l(x)。这个问题深入讨论,可以得出霍夫曼编码的概念。
霍夫曼编码就是利用了这种大概率事件分配短码的思想,而且可以证明这种编码方式是最优的。我们可以证明上述现象:
为了获得信息熵为H(X)的随机变量X的一个样本,平均需要抛掷均匀硬币(或二元问题)H(X)次(参考猜赛马问题的案例)
信息熵是数据压缩的一个临界值(参考码长部分的案例)

Kullback-Leibler 散度

  我们通常将 Kullback-Leibler 散度称之为相对熵或者 KL距离 ,如果我们对于同一个随机变量 x 有两个单独的概率分布P(x)Q(x),我们可以使用KL散度来衡量这两个分布的差异。
  在机器学习中,P往往用来表示样本的真实分布,比如[1,0,0]表示当前样本属于第一类。Q用来表示模型所预测的分布,比如[0.7,0.2,0.1]。直观的理解就是如果用P来描述样本,那么就非常完美。而用Q来描述样本,虽然可以大致描述,但是不是那么的完美,信息量不足,需要额外的一些“信息增量”才能达到和P一样完美的描述。如果我们的Q通过反复训练,也能完美的描述样本,那么就不再需要额外的“信息增量”,Q等价于P。
  KL散度的计算公式:
D_{KL}(p||q)=\sum_{i=1}^np(x_i)log_2\frac{p(x_i)}{q(x_i)})
n为事件所有的可能性,D_{KL}的值与pq分布接近程度呈正相关关系。

交叉熵

  交叉熵可以看做 Kullback-Leibler散度 的特例,展开KL散度的公式:
D_{KL}(p||q)=\sum_{i=1}^np(x_i)log_2p(x_i)-p(x_i)log_2q(x_i)
  而之前我们给出的信息熵的公式是:
H(p)=-\sum_{i=1}^ip(x_i)logp(x_i)
  交叉熵公式是:
H(p,q) = -\sum_{i=1}^np(x_i)log_2(q(x_i))
  很容易发现,D_{KL}(p||q)+H(p)=H(p,q)。也就是说,如果H(p)是一个常量的时候,交叉熵和相对熵是完全等价的。
  看到这里,你也许会困惑为什么有KL散度和交叉熵两种算法?为什么他们可以用来求分布的不同?什么时候可以等价使用?这是一种解释:

  • 熵的意义是对A事件中的随机变量进行编码所需的最小字节数。
  • KL散度的意义是“额外所需的编码长度”如果我们用B的编码来表示A。
  • 交叉熵指的是当你用B作为密码本来表示A时所需要的“平均的编码长度”。

  大多数情况下,交叉熵和相对熵都是等价的,那么既然等价,显然使用更为简单的公式。

一点总结

  说了那么多,你或许会问,熵究竟有什么用处。交叉熵常常用作算法中的损失函数。为什么可以这样?因为机器学习算法本质上就是让模型学习到的分布与真实数据之间的分布越小越好。我们的 Kullback-Leibler 散度反映的不就是拟合程度吗?交叉熵可以和很多概率模型完美的结合。所以一般逻辑思路是,为了让学到的模型分布更贴近真实数据分布,我们最小化模型数据分布与训练数据之间的KL散度,而因为训练数据的分布是固定的,因此最小化KL散度等价于最小化交叉熵。因为等价,而且交叉熵更简单更好计算,所以我们还是使用交叉熵做为主要的计算公式。

欢迎关注我的博客获得第一时间更新 https://blog.tity.online

相关文章

  • 机器学习(3)——信息论基础(熵的介绍)

    信息论基础   在讲述熵的时候,我想先引入一个新的东西——信息量,信息是用来减少随机不确定性的东西(即不确定性的减...

  • 信息熵与最大熵模型

    信息熵是什么?机器学习入门:重要的概念---信息熵(Shannon’s Entropy Model)信息熵信息论中...

  • 交叉熵——我们如何评估差异

    前言 机器学习的本质是信息论。在信息论中,首先我们引入了信息熵的概念。认为一切信息都是一个概率分布。所谓信息熵,就...

  • 决策树算法梳理

    信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度) 信息熵:信息熵是度量样本集合纯度常用的一种指标。在信息论中...

  • 机器学习各种熵:从入门到全面掌握

    参考文献 1.统计学习方法2.从香农熵到手推KL散度:纵览机器学习中的信息论3.能否尽量通俗地解释什么叫做熵?4....

  • 决策树算法梳理

    决策树算法梳理 1. 信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度) 1.1 熵 (entropy)...

  • 信息论中的熵和惊异

    @[toc] 信息论基础 信息论涉及编码、解码、发送以及尽可能简洁地处理信息或数据。 熵 信息论的核心思想是量化数...

  • 机器学习(信息论):信息熵

    一、相关概念 自信息 当概率越小,消息出现的概率就越小,一旦出现所获得的信息量就越大。因此,我们定义,称为消息的自...

  • 从信息论的角度谈机器学习

    本文先介绍下信息的本质是什么,再介绍下机器学习的本质是什么接着介绍下机器学习的流程,以及其中的信息论原理。 信息是...

  • 《熵减:华为活力之源》读书总结

    熵本是热力学第二定律的概念,信息论鼻祖香农将其引入至信息论去度量信息,开创了信息论,奠定了通信及信息革命的理论基础...

网友评论

    本文标题:机器学习(3)——信息论基础(熵的介绍)

    本文链接:https://www.haomeiwen.com/subject/mmgiiftx.html