详解机器学习中的熵、条件熵、相对熵和交叉熵

目录

信息熵html

条件熵算法

相对熵机器学习

交叉熵函数

总结学习

一、信息(information entropy)

 

熵 (entropy) 这一词最初来源于热力学。1948年,克劳德·爱尔伍德·香农将热力学中的熵引入信息论,因此也被称为香农熵 (Shannon entropy),信息熵 (information entropy)。本文只讨论信息熵。首先,咱们先来理解一下信息这个概念。信息是一个很抽象的概念,百度百科将它定义为:指音讯、消息、通信系统传输和处理的对象,泛指人类社会传播的一切内容。那信息能够被量化么?能够的!香农提出的“信息熵”概念解决了这一问题。编码

 

一条信息的信息量大小和它的不肯定性有直接的关系。咱们须要搞清楚一件很是很是不肯定的事,或者是咱们一无所知的事,就须要了解大量的信息。相反,若是咱们对某件事已经有了较多的了解,咱们就不须要太多的信息就能把它搞清楚。因此,从这个角度,咱们能够认为,信息量的度量就等于不肯定性的多少。好比,有人说广东下雪了。对于这句话,咱们是十分不肯定的。由于广东几十年来下雪的次数寥寥无几。为了搞清楚,咱们就要去看天气预报,新闻,询问在广东的朋友,而这就须要大量的信息,信息熵很高。再好比,中国男足进军2022年卡塔尔世界杯决赛圈。对于这句话,由于肯定性很高,几乎不须要引入信息,信息熵很低。spa

 

考虑一个离散的随机变量 $x$,由上面两个例子可知,信息的量度应该依赖于几率分布 $p(x)$,所以咱们想要寻找一个函数 $I(x)$,它是几率 $p(x)$ 的单调函数,表达了信息的内容。怎么寻找呢?若是咱们有两个不相关的事件 $x$ 和 $y$,那么观察两个事件同时发生时得到的信息量应该等于观察到事件各自发生时得到的信息之和,即:$I(x,y)=I(x)+I(y)$。.net

由于两个事件是独立不相关的,所以 $p(x,y)=p(x)p(y)$。根据这两个关系,很容易看出 $I(x)$必定与 $p(x)$ 的对数有关 (由于对数的运算法则是 $log_a(mn)=log_am+log_an$)。所以,咱们有code

$I(x)=-logp(x)$orm

其中负号是用来保证信息量是正数或者零。而 $log$ 函数基的选择是任意的(信息论中基经常选择为2,所以信息的单位为比特bits;而机器学习中基经常选择为天然常数,所以单位经常被称为奈特nats)。$I(x)$ 也被称为随机变量 $x$ 的自信息 (self-information),描述的是随机变量的某个事件发生所带来的信息量。图像如图:

 

最后,咱们正式引出信息熵。 如今假设一个发送者想传送一个随机变量的值给接收者。那么在这个过程当中,他们传输的平均信息量能够经过求 $I(x)=-logp(x)$ 关于几率分布 $p(x)$ 的指望获得,即:

$H(X)=-\displaystyle\sum_{x}p(x)logp(x)=-\sum_{i=1}^{n}p(x_i)logp(x_i)$

$H(X)$ 就被称为随机变量 $x$ 的熵,它是表示随机变量不肯定的度量,是对全部可能发生的事件产生的信息量的指望

从公式可得,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大,且 $0\le H(X)\le logn$。稍后证实。将一维随机变量分布推广到多维随机变量分布,则其联合熵 (Joint entropy) 为:

$H(X,Y)=-\displaystyle\sum_{x,y}p(x,y)logp(x,y)=-\sum_{i=1}^{n}\sum_{j=1}^{m}p(x_i,y_i)logp(x_i,y_i)$

注意点:一、熵只依赖于随机变量的分布,与随机变量取值无关,因此也能够将 $X$ 的熵记做 $H(p)$。二、令0log0=0(由于某个取值几率可能为0)。

 

 

那么这些定义有着什么样的性质呢?考虑一个随机变量 $x$。这个随机变量有4种可能的状态,每一个状态都是等可能的。为了把 $x$ 的值传给接收者,咱们须要传输2比特的消息。$H(X)=-4\times\dfrac{1}{4}log_2\dfrac{1}{4}=2\ bits$

如今考虑一个具备4种可能的状态 $\left\{a,b,c,d\right\}$ 的随机变量,每一个状态各自的几率为 $\left( \displaystyle\frac{1}{2},\frac{1}{4},\frac{1}{8},\frac{1}{8} \right)$

这种情形下的熵为:

$H(X)=-\displaystyle\frac{1}{2}log_2\frac{1}{2}-\frac{1}{4}log_2\frac{1}{4}-\frac{1}{8}log_2\frac{1}{8}-\frac{1}{8}log_2\frac{1}{8}=1.75\ bits$

咱们能够看到,非均匀分布比均匀分布的熵要小。如今让咱们考虑如何把变量状态的类别传递给接收者。与以前同样,咱们可使用一个2比特的数字来完成这件事情。然而,咱们能够利用非均匀分布这个特色,使用更短的编码来描述更可能的事件,使用更长的编码来描述不太可能的事件。咱们但愿这样作可以获得一个更短的平均编码长度。咱们可使用下面的编码串(哈夫曼编码):0、十、1十、111来表示状态 $\left\{a,b,c,d\right\}$。传输的编码的平均长度就是:

average code length = $\displaystyle\frac{1}{2}\times1+\frac{1}{4}\times2+2\times\frac{1}{8}\times3=1.75\ bits$

这个值与上方的随机变量的熵相等。熵和最短编码长度的这种关系是一种广泛的情形。Shannon 编码定理https://baike.baidu.com/item/Shannon%20%E7%BC%96%E7%A0%81%E5%AE%9A%E7%90%86/15585931?fr=aladdin 代表熵是传输一个随机变量状态值所需的比特位下界(最短平均编码长度)。所以,信息熵能够应用在数据压缩方面。这里这篇文章http://www.ruanyifeng.com/blog/2014/09/information-entropy.html讲的很详细了,我就不赘述了。

 

 

证实$0\le H(X)\le logn$

利用拉格朗日乘子法证实:

由于 $p(1)+p(2)+\dots+p(n)=1$

因此有

目标函数:$f(p(1),p(2),\dots,p(n))=-(p(1)logp(1)+p(2)logp(2)+\dots+p(n)logp(n))$

约束条件:$g(p(1),p(2),\dots,p(n),\lambda)=p(1)+p(2)+\dots+p(n)-1=0$

 

  一、定义拉格朗日函数:

$L(p(1),p(2),\dots,p(n),\lambda)=-(p(1)logp(1)+p(2)logp(2)+\dots+p(n)logp(n))+\lambda(p(1)+p(2)+\dots+p(n)-1)$

  二、$L(p(1),p(2),\dots,p(n),\lambda)$分别对 $p(1),p(2),p(n),\lambda$ 求偏导数,令偏导数为 $0$:

$\lambda-log(e\cdot p(1))=0$

$\lambda-log(e\cdot p(2))=0$

$\dots\dots$

$\lambda-log(e\cdot p(n))=0$

$p(1)+p(2)+\dots+p(n)-1=0$

  三、求出 $p(1),p(2),\dots,p(n)$ 的值:

解方程得,$p(1)=p(2)=\dots=p(n)=\displaystyle\frac{1}{n}$

代入 $f(p(1),p(2),\dots,p(n))$ 中获得目标函数的极值为 $f(\displaystyle\frac{1}{n},\frac{1}{n},\dots,\frac{1}{n})=-(\frac{1}{n}log\frac{1}{n}+\frac{1}{n}log\frac{1}{n}+\dots+\frac{1}{n}log\frac{1}{n})=-log(\frac{1}{n})=logn$

由此可证 $logn$ 为最大值。

 

 二、条件熵 (Conditional entropy)

 

条件熵 $H(Y|X)$ 表示在已知随机变量 $X$ 的条件下随机变量 $Y$ 的不肯定性。条件熵 $H(Y|X)$ 定义为 $X$ 给定条件下 $Y$ 的条件几率分布的熵对  $X$ 的数学指望:


条件熵 $H(Y|X)$ 至关于联合熵 $H(X,Y)$ 减去单独的熵 $H(X)$,即

$H(Y|X)=H(X,Y)-H(X)$,证实以下:

 

举个例子,好比环境温度是低仍是高,和我穿短袖仍是外套这两个事件能够组成联合几率分布 $H(X,Y)$,由于两个事件加起来的信息量确定是大于单一事件的信息量的。假设 $H(X)$ 对应着今天环境温度的信息量,因为今天环境温度和今天我穿什么衣服这两个事件并非独立分布的,因此在已知今天环境温度的状况下,我穿什么衣服的信息量或者说不肯定性是被减小了。当已知 $H(X)$ 这个信息量的时候,$H(X,Y)$ 剩下的信息量就是条件熵:

$H(Y|X) =H(X,Y)-H(X)$

所以,能够这样理解,描述 $X$ 和 $Y$ 所需的信息是描述 $X$ 本身所需的信息,加上给定  $X$ 的条件下具体化  $Y$ 所需的额外信息。关于条件熵的例子能够看这篇文章,讲得很详细。https://zhuanlan.zhihu.com/p/26551798

 

三、相对熵 (Relative entropy),也称KL散度 (Kullback–Leibler divergence)

 

设 $p(x)$、$q(x)$ 是 离散随机变量 $X$ 中取值的两个几率分布,则 $p$ 对 $q$ 的相对熵是:

$D_{KL}(p||q)=\displaystyle\sum_{x}p(x)log\frac{p(x)}{q(x)}=E_{p(x)}log\frac{p(x)}{q(x)}$

性质:

一、若是 $p(x)$ 和 $q(x)$ 两个分布相同,那么相对熵等于0

二、$D_{KL}(p||q)\not=D_{KL}(q||p)$ ,相对熵具备不对称性。你们能够举个简单例子算一下。

三、$D_{KL}(p||q)\geq0$ 证实以下(利用Jensen不等式https://en.wikipedia.org/wiki/Jensen%27s_inequality):

 由于:

$\displaystyle\sum_{x}p(x)=1$

因此:

$D_{KL}(p||q)\geq0$

 总结:相对熵能够用来衡量两个几率分布之间的差别,上面公式的意义就是求 $p$ 与 $q$ 之间的对数差在 $p$ 上的指望值

 

四、交叉熵 (Cross entropy)

 

如今有关于样本集的两个几率分布 $p(x)$ 和 $q(x)$,其中  $p(x)$ 为真实分布, $q(x)$ 非真实分布。若是用真实分布 $p(x)$ 来衡量识别别一个样本所须要编码长度的指望(平均编码长度)为:

$H(p) =\displaystyle\sum_{x}p(x)log\frac{1}{p(x)}$

若是使用非真实分布 $q(x)$ 来表示来自真实分布 $p(x)$ 的平均编码长度,则是:

$H(p,q)=\displaystyle\sum _{x}p(x)log\frac{1}{q(x)}$。(由于用 $q(x)$ 来编码的样原本自于分布 $q(x)$ ,因此 $H(p,q)$ 中的几率是 $p(x)$)。此时就将 $H(p,q)$ 称之为交叉熵。举个例子。考虑一个随机变量 $x$,真实分布$p(x)= \left( \displaystyle\frac{1}{2},\frac{1}{4},\frac{1}{8},\frac{1}{8} \right)$,非真实分布 $q(x)=\left( \displaystyle\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{4} \right)$, 则$H(p)=1.75\ bits$(最短平均码长),交叉熵 $H(p,q)=\displaystyle\frac{1}{2}log_24+\frac{1}{4}log_24+\frac{1}{8}log_24+\frac{1}{8}log_24=2\ bits$。由此能够看出根据非真实分布 $q(x)$ 获得的平均码长大于根据真实分布 $p(x)$ 获得的平均码长。

 

 

咱们再化简一下相对熵的公式。$D_{KL}(p||q)=\displaystyle\sum_{x}p(x)log\frac{p(x)}{q(x)}=\sum_{x}p(x)logp(x)-p(x)logq(x)$

有没有发现什么?

熵的公式 $H(p)=-\displaystyle\sum_{x}p(x)logp(x)$

交叉熵的公式 $H(p,q)=\displaystyle\sum _{x}p(x)log\frac{1}{q(x)}=-\sum _{x}p(x)logq(x)$

因此有:

$D_{KL}(p||q)=H(p,q)-H(p)$(当用非真实分布 $q(x)$ 获得的平均码长比真实分布 $p(x)$ 获得的平均码长多出的比特数就是相对熵)

又由于 $D_{KL}(p||q)\geq0$

因此 $H(p,q)\geq H(p)$(当 $p(x)=q(x)$ 时取等号,此时交叉熵等于信息熵)

而且当 $H(p)$ 为常量时(注:在机器学习中,训练数据分布是固定的),最小化相对熵 $D_{KL}(p||q)$ 等价于最小化交叉熵 $H(p,q)$ 也等价于最大化似然估计(具体参考Deep Learning 5.5)

 

 

在机器学习中,咱们但愿在训练数据上模型学到的分布 $P(model)$ 和真实数据的分布  $P(real)$ 越接近越好,因此咱们可使其相对熵最小。可是咱们没有真实数据的分布,因此只能但愿模型学到的分布 $P(model)$ 和训练数据的分布 $P(train)$ 尽可能相同。假设训练数据是从整体中独立同分布采样的,那么咱们能够经过最小化训练数据的经验偏差来下降模型的泛化偏差。即:

  1. 但愿学到的模型的分布和真实分布一致,$P(model)\simeq P(real)$
  2. 可是真实分布不可知,假设训练数据是从真实数据中独立同分布采样的,$P(train)\simeq P(real)$
  3. 所以,咱们但愿学到的模型分布至少和训练数据的分布一致,$P(train)\simeq P(model)$

根据以前的描述,最小化训练数据上的分布  $P(train)$ 与最小化模型分布 $P(model)$ 的差别等价于最小化相对熵,即 $D_{KL}(P(train)||P(model))$。此时, $P(train)$ 就是$D_{KL}(p||q)$ 中的 $p$,即真实分布,$P(model)$ 就是 $q$。又由于训练数据的分布 $p$ 是给定的,因此求  $D_{KL}(p||q)$  等价于求 $H(p,q)$。得证,交叉熵能够用来计算学习模型分布与训练分布之间的差别。交叉熵普遍用于逻辑回归的Sigmoid和Softmax函数中做为损失函数使用。这篇文章先不说了。

 

五、总结

 

  1. 信息熵是衡量随机变量分布的混乱程度,是随机分布各事件发生的信息量的指望值,随机变量的取值个数越多,状态数也就越多,信息熵就越大,混乱程度就越大。当随机分布为均匀分布时,熵最大;信息熵推广到多维领域,则可获得联合信息熵;条件熵表示的是在 $X$ 给定条件下,$Y$ 的条件几率分布的熵对 $X$的指望。
  2. 相对熵能够用来衡量两个几率分布之间的差别。
  3. 交叉熵能够来衡量在给定的真实分布下,使用非真实分布所指定的策略消除系统的不肯定性所须要付出的努力的大小。

 

或者:

 

  1. 信息熵是传输一个随机变量状态值所需的比特位下界(最短平均编码长度)。
  2. 相对熵是指用 $q$ 来表示分布 $p$  额外须要的编码长度。
  3. 交叉熵是指用分布 $q$ 来表示原本表示分布 $p$ 的平均编码长度。

 

六、参考

 

一、吴军《数学之美》

二、李航《统计学习方法》

三、马春鹏《模式识别与机器学习》

三、https://www.zhihu.com/question/41252833 如何通俗的解释交叉熵与相对熵

四、https://www.zhihu.com/question/65288314/answer/244557337为何交叉熵(cross-entropy)能够用于计算代价?

五、https://baike.baidu.com/item/%E4%BA%A4%E5%8F%89%E7%86%B5/8983241?fr=aladdin 交叉熵的百度百科解释

六、https://blog.csdn.net/saltriver/article/details/53056816信息熵究竟是什么

 

七、后记

 

本人不是大神,大牛。目前写博客是为了让我本身更深入地记忆学过的知识和对知识进行梳理。这篇博客是个人第一篇,其中借鉴了很多其余博主的博客里的分享,都有标注来源,若有遗忘,劳烦提醒,衷心感谢他们对本身所掌握的知识的分享。这篇博客可能还存在着一些错误,若有发现请求斧正,谢谢。

相关文章
相关标签/搜索