[AI算法]:信息论相关概念总结以及理解

机器学习基础–信息论相关概念总结以及理解


摘要:
熵(entropy)、KL 散度(Kullback-Leibler (KL) divergence)和交叉熵(cross-entropy)以及JS散度,在深度学习以及机器学习很多地方都用的到,尤其是对于目标函数和损失函数的定义。在逻辑回归问题中,目标函数就是用交叉熵定义的。

1. 信息量(熵)

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

比如:早上你出门碰到一个朋友,他告诉你今天是晴天,这句话的信息量就很小,因为天气你已经知道了,而且是个确定性事件,等同于废话。
要是他再告诉你,明天可能下雪,这句话的信息量就比刚刚的话要大好多。
可以看出信息量的大小与事件发生的可能性成反比。

  1. 非常可能发生的事件信息量要比较少。在极端情况下,确保能够发生的事件应该没有信息量。
  2. 较不可能发生的事件具有更高的信息量。
  3. 独立事件应具有增量的信息。例如,投掷的硬币两次正面朝上传递的信息量,应该是投掷一次硬币正面朝上的信息量的两倍。
      为了满足上面 3 个性质,定义了一事件 x = X x=X x=X 的自信息(self-information)为:
    I ( x ) = − l o g ( P ( x ) ) (1) I(x)=-log(P(x)) \tag{1} I(x)=log(P(x))(1)
    使用 x x x 表示随机变量,使用 x 1 , x 2 , . . . , x i , . . . , x N x_1,x_2,...,x_i,...,x_N x1,x2,...,xi,...,xN 或者 x x x 表示随机变量 x x x 可能的取值。当式(1)中 log 以 2 为底数时, I ( x ) I(x) I(x) 单位是比特(bit)或者香农(shannons);当 l o g log log 以自然常数 e e e 为底数时, I ( x ) I(x) I(x) 单位是奈特(nats)。这两个单位之间可以互相转换,通过比特度量的信息只是通过奈特度量信息的常数倍。(使用对数换底公式转化)在机器学习中大部分是以 e e e为底。
    自信息只能处理单个的输出。我们可以使用香农熵(Shannon entropy)来对整个概率分布中的不确定性总量进行量化:
    H ( P ) = H ( x ) = E x ∼ P [ I ( x ) ] = ∑ i = 1 N P ( x i ) I ( x i ) = − ∑ i = 1 N P ( x i ) l o g P ( x i ) (2) H(P)=H(x)= E_{x∼P}[I(x)]=\sum_{i=1}^NP(x_i)I(x_i)=−\sum_{i=1}^NP(x_i)logP(x_i)\tag{2} H(P)=H(x)=ExP[I(x)]=i=1NP(xi)I(xi)=i=1NP(xi)logP(xi)(2)
    式(2)后两个等号是在离散型变量的情况下成立,对于连续型变量,则需要求积分。当 x 是连续的,香农熵被称为微分熵(differential entropy)。
    熵的一些性质:
  • 那些接近确定性的分布(输出几乎可以确定)具有较低的熵。
  • 那些接近均匀分布的概率分布具有较高的熵。
    当一个事件的发生概率为 p ( x ) p(x) p(x) 时,它的信息量就是 − l o g ( p ( x ) ) −log(p(x)) log(p(x))。那么我们将这个事件的所有可能发生的结果都罗列出来,求的该事件信息量的期望(信息量的算术平均)

熵就是用来描述事件发生的不确定性。事件所含有的信息
从KL散度的角度理解熵的概念将熵的定义式写为:
H ( P ) = l o g ( 1 P ( x ) ) H(P)=log(\frac{1}{P(x)}) H(P)=log(P(x)1)
1 1 1为确定性事件,则事件 P P P的熵(自信息)为与确定性事件的差异,也就是 P P P变成确定性事件所需要的信息。

2. KL散度

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

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

假设原概率分布为 P ( x ) P(x) P(x),近似概率分布为 Q ( x ) Q(x) Q(x),则使用 KL 散度衡量这两个分布的差异:
D K L ( P ∣ ∣ Q ) = E x ∼ P [ l o g ( P ( x ) Q ( x ) ) ] = E x ∼ P [ l o g P ( x ) − l o g Q ( x ) ] (3) D_{KL}(P||Q)=E_{x∼P}[log(\frac{P(x)}{Q(x)})]=E_{x∼P}[logP(x)−logQ(x)] \tag{3} DKL(P∣∣Q)=ExP[log(Q(x)P(x))]=ExP[logP(x)logQ(x)](3)
  如果 x 是离散型变量,式(3)还可以写成如下形式:
D K L ( P ∣ ∣ Q ) = ∑ i = 1 N P ( x i ) l o g P ( x i ) Q ( x i ) = ∑ i = 1 N P ( x i ) [ l o g P ( x i ) − l o g Q ( x i ) ] (4) 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} DKL(P∣∣Q)=i=1NP(xi)logP(xi)Q(xi)=i=1NP(xi)[logP(xi)logQ(xi)](4)
  对于连续型变量,则式(4)不能这么写,需要求积分。如果 x 是连续型变量,则式(3)中概率分布最好用 p ( x ) p(x) p(x) q ( x ) q(x) q(x) 代替 P ( x ) P(x) P(x) Q ( x ) Q(x) Q(x)。习惯上,用小写字母表示连续型变量的概率密度函数(probability density function,PDF),用大写字母表示离散型变量的概率质量函数(probability mass function,PMF)。(PDF和PMF都是用来描述概率分布)

KL 散度的一些性质:

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

3. 交叉熵

交叉熵(cross-entropy)和 KL 散度联系很密切。同样地,交叉熵也可以用来衡量两个分布的差异。以离散型变量 x 为例:
H ( P , Q ) = − E x ∼ P l o g Q ( x ) = − ∑ i = 1 N P ( x i ) l o g Q ( x i ) (5) H(P,Q)=−E_{x∼P}logQ(x)=−\sum_{i=1}^NP(x_i)logQ(x_i) \tag{5} H(P,Q)=ExPlogQ(x)=i=1NP(xi)logQ(xi)(5)
  交叉熵 H(P,Q)=H§+DKL(P||Q)。其中 H§(即 H(x) ,其中 x∼P)为分布 P 的熵,DKL(P||Q) 表示两个分布的 KL 散度。当概率分布 P(x) 确定了时,H§ 也将被确定,即 H§ 是一个常数。在这种情况下,交叉熵和 KL 散度就差一个大小为 H§ 的常数。下面给出一个简单的推导:

我们将式(4)中 KL 散度的公式再进行展开:
D K L ( P ∣ ∣ Q ) = ∑ i = 1 N P ( x i ) [ l o g P ( x ) − l o g Q ( x ) ] = ∑ i = 1 N P ( x i ) l o g P ( x i ) − ∑ i = 1 N P ( x i ) l o g Q ( x i ) = − [ − ∑ i = 1 N P ( x i ) l o g P ( x i ) ] + [ − ∑ i = 1 N P ( x i ) l o g Q ( x i ) ] = − H ( P ) + H ( P , Q ) (6) 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} DKL(P∣∣Q)=i=1NP(xi)[logP(x)logQ(x)]=i=1NP(xi)logP(xi)i=1NP(xi)logQ(xi)=[i=1NP(xi)logP(xi)]+[i=1NP(xi)logQ(xi)]=H(P)+H(P,Q)(6)
H ( P , Q ) = H ( P ) + D K L ( P ∣ ∣ Q ) H(P,Q)=H(P)+D_{KL}(P||Q) H(P,Q)=H(P)+DKL(P∣∣Q)

最好自己手推一下 公式很简单 手推可以加深印象。

交叉熵的一些性质:

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

4. JS散度

JS散度也是用于度量两个概率分布的相似度,其解决了KL散度不对称的缺点。
再GAN公式的推导中会用到,到时候再回来。
J S ( p ∣ ∣ q ) = 1 2 K L ( p ∣ ∣ p + q 2 ) + 1 2 K L ( q ∣ ∣ p + q 2 ) (7) JS(p||q)=\frac{1}{2}KL(p||\frac{p+q}{2})+\frac{1}{2}KL(q||\frac{p+q}{2}) \tag{7} JS(p∣∣q)=21KL(p∣∣2p+q)+21KL(q∣∣2p+q)(7)
JS散度的一些性质:

  • 值域 J S ( P ∣ ∣ Q ) ∈ [ 0 , 1 ] JS(P||Q)\in[0,1] JS(P∣∣Q)[0,1],P,Q两分布相同为0,相反为1
  • 对称性
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值