【机器学习基础】熵、KL散度、交叉熵

  熵(entropy)、KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)在机器学习的很多地方会用到。比如在决策树模型使用信息增益来选择一个最佳的划分,使得熵下降最大;深度学习模型最后一层使用 softmax 激活函数后,我们也常使用交叉熵来计算两个分布的“距离”。KL散度和交叉熵很像,都可以衡量两个分布之间的差异,相互之间可以转化。

1. 如何量化信息?

  信息论是应用数学的一个分支,主要研究的是对一个信号包含信息的多少进行量化。信息论的基本想法是一个不太可能的事件发生了,要比一个非常可能的事件发生,能提供更多的信息。

  在信息论中,我们认为:

    • 非常可能发生的事件信息量要比较少。在极端情况下,确保能够发生的事件应该没有信息量。
    • 较不可能发生的事件具有更高的信息量。
    • 独立事件应具有增量的信息。例如,投掷的硬币两次正面朝上传递的信息量,应该是投掷一次硬币正面朝上的信息量的两倍。

  为了满足上面 3 个性质,定义了一事件 $\mbox{x} = x$ 的自信息(self-information)为

\begin{equation}
I(x) = -\log P(x) 
\end{equation}

  我们使用 $\text{x}$ 表示随机变量,使用 $x_1, x_2,...,x_i,..., x_N$ 或者 $x$ 表示随机变量 $\text{x}$ 可能的取值。当式(1)中 $\log$ 以 2 为底数时,$I(x)$ 单位是比特(bit)或者香农(shannons);当 $\log$ 以自然常数 $e$ 为底数时,$I(x)$ 单位是奈特(nats)。这两个单位之间可以互相转换,通过比特度量的信息只是通过奈特度量信息的常数倍。(使用对数换底公式转化)

  自信息只能处理单个的输出。我们可以使用香农熵(Shannon entropy)来对整个概率分布中的不确定性总量进行量化:

\begin{equation}
H(\text{x}) = \mathbb{E}_{\text{x} \sim P}[I(x)] = \sum_{i= 1}^{N} P(x_i)I(x_i) = - \sum_{i= 1}^{N} P(x_i)\log P(x_i) 
\end{equation}

式(2)后两个等号是在离散型变量的情况下成立,对于连续型变量,则需要求积分。当 $\text{x}$ 是连续的,香农熵被称为微分熵(differential entropy)。

  在1948年,克劳德·艾尔伍德·香农将热力学的熵,引入到信息论,因此它又被称为香农熵。机器学习(ML)中熵的概念都是由信息论而来,所以在 ML 中能看到的熵都是香农熵,而不会是热力学的熵。

  熵的一些性质:

    • 那些接近确定性的分布(输出几乎可以确定)具有较低的熵。
    • 那些接近均匀分布的概率分布具有较高的熵。

2. KL 散度

  KL 散度全称 Kullback-Leibler (KL) divergence。

  KL 散度可以用来衡量两个分布的差异。

  在概率论与统计中,我们经常会将一个复杂的分布用一个简单的近似分布来代替。KL 散度可以帮助我们测量在选择一个近似分布时丢失的信息量。

  假设原概率分布为 $P(\text{x})$,近似概率分布为 $Q(\text{x})$,则使用 KL 散度衡量这两个分布的差异:

\begin{equation}
D_{KL}(P||Q) = \mathbb{E}_{\text{x} \sim P}[\log \frac{P(x)}{Q(x)}] = \mathbb{E}_{\text{x} \sim P}[\log P(x) - \log Q(x)] 
\end{equation}

  如果 $\text{x}$ 是离散型变量,式(3)还可以写成如下形式:

\begin{equation}
D_{KL}(P||Q) = \sum_{i= 1}^{N} P(x_i) \log\frac{P(x_i)}{Q(x_i)} = \sum_{i= 1}^{N} P(x_i)[\log P(x_i) - \log Q(x_i)]   
\end{equation}

  对于连续型变量,则式(4)不能这么写,需要求积分。如果 $\text{x}$ 是连续型变量,则式(3)中概率分布最好用 $p(\text{x})$和$q(\text{x})$ 代替 $P(\text{x})$和$Q(\text{x})$。习惯上,用小写字母表示连续型变量的概率密度函数(probability density function,PDF),用大写字母表示离散型变量的概率质量函数(probability mass function,PMF)。(PDF和PMF都是用来描述概率分布)

  KL 散度的一些性质:

    • KL 散度是非负的。
    • KL 散度为 0,当且仅当 $P$ 和 $Q$ 在离散型变量的情况下是相同的分布,或者在连续型变量的情况下是“几乎处处”相同的。
    • KL 散度不是真的距离,它不是对称的,即 $ D_{KL}(P||Q) \ne D_{KL}(Q||P)$。

3. 交叉熵

  交叉熵(cross-entropy)和 KL 散度联系很密切。同样地,交叉熵也可以用来衡量两个分布的差异。以离散型变量 $\text{x}$ 为例:

\begin{equation}
H(P, Q) = - \mathbb{E}_{\text{x} \sim P}\log Q(x) = - \sum_{i= 1}^{N} P(x_i) \log Q(x_i) 
\end{equation}

  交叉熵 $H(P, Q) = H(P) +  D_{KL}(P||Q)$。其中 $H(P)$(即 $H(\text{x})$ ,其中 $\text{x} \sim P$)为分布 $P$ 的熵,$D_{KL}(P||Q)$ 表示两个分布的 KL 散度。当概率分布 $P(\text{x})$ 确定了时,$H(P)$ 也将被确定,即 $H(P)$ 是一个常数。在这种情况下,交叉熵和 KL 散度就差一个大小为 $H(P)$ 的常数。下面给出一个简单的推导:

  我们将式(4)中 KL 散度的公式再进行展开:

\begin{equation}\label{equ:tpr}
\begin{split}
D_{KL}(P||Q) &= \sum_{i= 1}^{N} P(x_i)[\log P(x) - \log Q(x)]  \\ &=  \sum_{i= 1}^{N} P(x_i) \log P(x_i)  - \sum_{i= 1}^{N} P(x_i) \log Q(x_i)  \\ &= -[- \sum_{i= 1}^{N} P(x_i) \log P(x_i)]+ [ - \sum_{i= 1}^{N} P(x_i) \log Q(x_i) ] \\ &= - H(P) + H(P, Q)
\end{split}
\end{equation}
即 $H(P, Q) = H(P) +  D_{KL}(P||Q)$。

  交叉熵的一些性质:

    • 非负。
    • 和 KL 散度相同,交叉熵也不具备对称性,即 $H(P, Q) \ne H(Q,P)$。
    • 对同一个分布求交叉熵等于对其求熵。

  为什么既有 KL 散度又有交叉熵?在信息论中,熵的意义是对 $P$ 事件的随机变量编码所需的最小字节数,KL 散度的意义是“额外所需的编码长度”如果我们使用 $Q$ 的编码来表示 $P$,交叉熵指的是当你使用 $Q$ 作为密码来表示 $P$ 是所需要的 “平均的编码长度”。但是在机器学习评价两个分布之间的差异时,由于分布 $P$ 会是给定的,所以此时 KL 散度和交叉熵的作用其实是一样的,而且因为交叉熵少算一项,更加简单,所以选择交叉熵会更好。

References

Goodfellow, I., Bengio, Y., & Courville, A. (2016). Deep Learning.

https://www.zhihu.com/question/65288314

Kullback-Leibler Divergence Explained

原文地址:https://www.cnblogs.com/wuliytTaotao/p/9713038.html

时间: 2024-08-03 05:06:40

【机器学习基础】熵、KL散度、交叉熵的相关文章

【深度学习】K-L 散度

K-L 散度 K-L 散度 K-L 散度在信息系统中称为相对熵,可以用来量化两种概率分布 P 和 Q 之间的差异,它是非对称性的度量.在概率学和统计学上,我们经常会使用一种更简单的.近似的分布来替代观察数据或太复杂的分布.K-L散度能帮助我们度量使用一个分布来近似另一个分布时所损失的信息量.一般情况下,P 表示数据的真实分布,Q 表示数据的理论分布,估计的模型分布或者 P 的近似分布. K-L 散度定义 ? Note:KL 散度仅当概率 \(P\) 和 \(Q\) 各自总和均为1,且对于任何 \

信息量,熵,交叉熵,相对熵与代价函数

本文将介绍信息量,熵,交叉熵,相对熵的定义,以及它们与机器学习算法中代价函数的定义的联系.转载请保留原文链接:http://www.cnblogs.com/llhthinker/p/7287029.html 1. 信息量 信息的量化计算: 解释如下: 信息量的大小应该可以衡量事件发生的“惊讶程度”或不确定性: 如果有?告诉我们?个相当不可能的事件发?了,我们收到的信息要多于我们被告知某个很可能发?的事件发?时收到的信息.如果我们知道某件事情?定会发?,那么我们就不会接收到信息. 也就是说,信息量

交叉熵损失函数

交叉熵损失是分类任务中的常用损失函数,但是是否注意到二分类与多分类情况下的交叉熵形式上的不同呢? 两种形式 这两个都是交叉熵损失函数,但是看起来长的却有天壤之别.为什么同是交叉熵损失函数,长的却不一样? 因为这两个交叉熵损失函数对应不同的最后一层的输出:第一个对应的最后一层是softmax,第二个对应的最后一层是sigmoid 先来看下信息论中交叉熵的形式 交叉熵是用来描述两个分布的距离的,神经网络训练的目的就是使 g(x) 逼近 p(x). softmax层的交叉熵 (x)是什么呢?就是最后一

机器学习、深度学习中的信息熵、相对熵(KL散度)、交叉熵、条件熵

信息熵 信息量和信息熵的概念最早是出现在通信理论中的,其概念最早是由信息论鼻祖香农在其经典著作<A Mathematical Theory of Communication>中提出的.如今,这些概念不仅仅是通信领域中的基础概念,也被广泛的应用到了其他的领域中,比如机器学习. 信息量用来度量一个信息的多少.和人们主观认识的信息的多少有些不同,这里信息的多少用信息的在一个语境中出现的概率来定义,并且和获取者对它的了解程度相关,概率越大认为它的信息量越小,概率越小认为它的信息量越大.用以下式子定义:

深度学习中交叉熵和KL散度和最大似然估计之间的关系

机器学习的面试题中经常会被问到交叉熵(cross entropy)和最大似然估计(MLE)或者KL散度有什么关系,查了一些资料发现优化这3个东西其实是等价的. 熵和交叉熵 提到交叉熵就需要了解下信息论中熵的定义.信息论认为: 确定的事件没有信息,随机事件包含最多的信息. 事件信息的定义为:\(I(x)=-log(P(x))\):而熵就是描述信息量:\(H(x)=E_{x\sim P}[I(x)]\),也就是\(H(x)=E_{x\sim P}[-log(P(x))]=-\Sigma_xP(x)l

交叉熵与KL散度

参考:https://blog.csdn.net/b1055077005/article/details/100152102 (文中所有公式均来自该bolg,侵删) 信息奠基人香农(Shannon)认为“信息是用来消除随机不确定性的东西”,我们需要寻找一个量来衡量信息的有用程度.首先要先明确,这里的信息都指的是正确信息. 一件越不可能的事发生了,对其他人的用处就越大.比如:我的cvpr被拒稿了.这是一个极大概率事件,所以我跟你说的话,你会感觉:这还用你说?也就是说这句话对你没啥用. 但是如果我说

机器学习-交叉熵原理

参考了这个博客:https://blog.csdn.net/tsyccnh/article/details/79163834 主要用于多分类.单分类任务中,计算loss,交叉熵定义如下: 其中: p是实际概率,在机器学习中通常为label值,且取值为0或则1 q是预测概率,在机器学习中通常为预测结果,通常取值(0,1) 原文地址:https://www.cnblogs.com/xbit/p/9955519.html

最大似然估计 (Maximum Likelihood Estimation), 交叉熵 (Cross Entropy) 与深度神经网络

最近在看深度学习的"花书" (也就是Ian Goodfellow那本了),第五章机器学习基础部分的解释很精华,对比PRML少了很多复杂的推理,比较适合闲暇的时候翻开看看.今天准备写一写很多童鞋们w未必完全理解的最大似然估计的部分. 单纯从原理上来说,最大似然估计并不是一个非常难以理解的东西.最大似然估计不过就是评估模型好坏的方式,它是很多种不同评估方式中的一种.未来准备写一写最大似然估计与它的好朋友们,比如说贝叶斯估计 (Beyasian Estimation), 最大后验估计(Max

交叉熵

http://www.cnblogs.com/ljy2013/p/6432269.html 作者:Noriko Oshima链接:https://www.zhihu.com/question/41252833/answer/108777563来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 熵的本质是香农信息量()的期望. 现有关于样本集的2个概率分布p和q,其中p为真实分布,q非真实分布.按照真实分布p来衡量识别一个样本的所需要的编码长度的期望(即平均编码长度)为