信息熵、交叉熵与KL散度

信息量

在信息论与编码中,信息量,也叫自信息(self-information),是指一个事件所能够带来信息的多少。一般地,这个事件发生的概率越小,其带来的信息量越大。从编码的角度来看,这个事件发生的概率越大,其编码长度越小,这个事件发生的概率越小,其编码长度就越大。但是编码长度小也是代价的,比如字母’a’用数字‘0’来表示时,为了避免歧义,就不能有其他任何以‘0’开头的编码了。因此,信息量定义如下:
在这里插入图片描述

信息熵

信息熵是指一个概率分布p的平均信息量,代表着随机变量或系统的不确定性,熵越大,随机变量或系统的不确定性就越大。从编码的角度来看,信息熵是表示一个概率分布p需要的平均编码长度,其可表示为:
在这里插入图片描述

交叉熵

交叉熵是指在给定真实分布q情况下,采用一个猜测的分布p对其进行编码的平均编码长度(或用猜测的分布来编码真实分布得到的信息量)。交叉熵可以用来衡量真实数据分布于当前分布的相似性,当前分布与真实分布相等时(q=p),交叉熵达到最小值。其可定义为:
在这里插入图片描述
因此,在很多机器学习算法中都使用交叉熵作为损失函数,交叉熵越小,当前分布与真实分布越接近。此外,相比于均方误差,交叉熵具有以下两个优点:

  • 在LR中,如果用均方误差损失函数,它是一个非凸函数,而使用交叉熵损失函数,它是一个凸函数;
  • 在LR中使用sigmoid激活函数,如果使用均方误差损失函数,在对其求残差时,其表达式与激活函数的导数有关,而sigmoid(如下图所示)的导数在输入值超出[-5,5]范围后将非常小,这会带来梯度消失问题,而使用交叉熵损失函数则能避免这个问题。
    信息熵、交叉熵与KL散度_第1张图片

KL散度

KL散度又称相对熵,是衡量两个分布之间的差异性。从编码的角度来看,KL散度可表示为采用猜测分布p得到的平均编码长度与采用真实分布q得到的平均编码长度多出的bit数,其数学表达式可定义为:
信息熵、交叉熵与KL散度_第2张图片
一般地,两个分布越接近,其KL散度越小,最小为0.它具有两个特性:

  • 非负性,即KL散度最小值为0,其详细证明可见[1] ;
  • 非对称性,即Dq(p)不等于Dp(q) ;

KL散度与交叉熵之间的关系

在这里,再次盗用[1]的图来形象地表达这两者之间的关系:
信息熵、交叉熵与KL散度_第3张图片

  • 最上方cH(p)为信息熵,表示分布p的平均编码长度/信息量;
  • 中间的Hq(p)表示用分布q表编码分布p所含的信息量或编码长度,简称为交叉熵,其中Hq(p)>=H(p);
  • 最小方的Dq(p)表示的是q对p的KL距离,衡量了分布q和分布p之间的差异性,其中Dq(p)>=0;
    从上图可知,Hq(p) = H(p) + Dq(p)。

参考资料

[1] https://blog.csdn.net/haolexiao/article/details/70142571
[2] https://blog.csdn.net/saltriver/article/details/57531963
[3] https://zhuanlan.zhihu.com/p/29321631
[4] https://www.zhihu.com/question/41252833

你可能感兴趣的:(机器学习,交叉熵,信息熵,KL散度)