摘要:
熵(entropy)、KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)以及JS散度,在深度学习以及机器学习很多地方都用的到,尤其是对于目标函数和损失函数的定义。在逻辑回归问题中,目标函数就是用交叉熵定义的。
信息论是应用数学的一个分支,主要研究的是对一个信号包含信息的多少进行量化。信息论的基本想法是一个不太可能的事件发生了,要比一个非常可能的事件发生,能提供更多的信息。事件发生的可能性大,信息量少;事件发生的可能性小,其信息量大。
比如:早上你出门碰到一个朋友,他告诉你今天是晴天,这句话的信息量就很小,因为天气你已经知道了,而且是个确定性事件,等同于废话。
要是他再告诉你,明天可能下雪,这句话的信息量就比刚刚的话要大好多。
可以看出信息量的大小与事件发生的可能性成反比。
那些接近均匀分布的概率分布具有较高的熵。
当一个事件的发生概率为\(p(x)\) 时,它的信息量就是\(?log(p(x))\)。那么我们将这个事件的所有可能发生的结果都罗列出来,求的该事件信息量的期望(信息量的算术平均)
熵就是用来描述事件发生的不确定性。事件所含有的信息
从KL散度的角度理解熵的概念将熵的定义式写为:
\[ H(P)=log(\frac{1}{P(x)}) \]
\(Q(x)=1\)为确定性事件,则事件\(P\)的熵(自信息)为与确定性事件的差异,也就是\(P\)变成确定性事件所需要的信息。
KL 散度可以用来衡量两个分布的差异。
在概率论与统计中,我们经常会将一个复杂的分布用一个简单的近似分布来代替。KL 散度可以帮助我们测量在选择一个近似分布时丢失的信息量。
假设原概率分布为 \(P(x)\),近似概率分布为 \(Q(x)\),则使用 KL 散度衡量这两个分布的差异:
\[
D_{KL}(P||Q)=E_{x~P}[log(\frac{P(x)}{Q(x)})]=E_{x~P}[logP(x)?logQ(x)] \tag{3}
\]
如果 x 是离散型变量,式(3)还可以写成如下形式:
\[
D_{KL}(P||Q)=\sum_{i=1}^NP(x_i)logP(x_i)Q(x_i)=\sum_{i=1}^NP(x_i)[logP(x_i)?logQ(x_i)] \tag{4}
\]
对于连续型变量,则式(4)不能这么写,需要求积分。如果 x 是连续型变量,则式(3)中概率分布最好用 \(p(x)\)和\(q(x)\) 代替 \(P(x)\)和\(Q(x)\)。习惯上,用小写字母表示连续型变量的概率密度函数(probability density function,PDF),用大写字母表示离散型变量的概率质量函数(probability mass function,PMF)。(PDF和PMF都是用来描述概率分布)
KL 散度的一些性质:
交叉熵(cross-entropy)和 KL 散度联系很密切。同样地,交叉熵也可以用来衡量两个分布的差异。以离散型变量 x 为例:
\[
H(P,Q)=?E_{x~P}logQ(x)=?\sum_{i=1}^NP(x_i)logQ(x_i) \tag{5}
\]
交叉熵 H(P,Q)=H(P)+DKL(P||Q)。其中 H(P)(即 H(x) ,其中 x~P)为分布 P 的熵,DKL(P||Q) 表示两个分布的 KL 散度。当概率分布 P(x) 确定了时,H(P) 也将被确定,即 H(P) 是一个常数。在这种情况下,交叉熵和 KL 散度就差一个大小为 H(P) 的常数。下面给出一个简单的推导:
我们将式(4)中 KL 散度的公式再进行展开:
\[
D_{KL}(P||Q)=\sum_{i=1}^NP(x_i)[logP(x)?logQ(x)]=\sum_{i=1}^NP(x_i)logP(x_i)?\sum_{i=1}^NP(x_i)logQ(x_i)=?[?\sum_{i=1}^NP(x_i)logP(x_i)]+[?\sum_{i=1}^NP(x_i)logQ(x_i)]=?H(P)+H(P,Q) \tag{6}
\]
即 \(H(P,Q)=H(P)+D_{KL}(P||Q)\)。
交叉熵的一些性质:
JS散度也是用于度量两个概率分布的相似度,其解决了KL散度不对称的缺点。
\[
JS(p||q)=\frac{1}{2}KL(p||\frac{p+q}{2})+\frac{1}{2}KL(q||\frac{p+q}{2}) \tag{7}
\]
原文:https://www.cnblogs.com/zhoubindut/p/12163933.html