版权声明:本文为博主jmh原创文章,未经博主允许不得转载。 https://blog.csdn.net/jmh1996/article/details/84862513
前言
在机器学习以及神经网络里面,我们经常会遇到“熵”、“互信息”、“条件熵”,“最大熵”等字眼,尤其是最大熵模型 在自然语言处理中用处可谓是超级大。这些概念都是信息论里面的东西,因此它们都被统一称为信息论模型。
这篇博客就是专门来研究一下信息论模型,先介绍基本概念,下篇博客介绍最大熵模型。
熵的定义
信息量
记离散型随机变量
X,取
xk的概率为
pk.即:
P(X=xk)=P{w∣X(w)=xk}=pk
这是随机变量的标准定义。
那么定义事件
Ak={w∣X(w)=xk}的信息量为:
I(Ak)=log(pk1)=−log(pk)
很明显
I(Ak)是一个只跟事件
Ak发生的概率大小有关的量,它与对应的随机变量取什么值是无关的。
信息量
I(Ak)衡量了当事件
Ak发生时,所带来的信息量的多少。这是什么意思呢?可以直观理解为这个事件发生了会引起人们的多大关注度。如果这个事件的概率越小,那它发生后,往往会引起举世关注,例如 “太阳从西边升起” 啊。
但是,如果一个事件的概率本来就很大,那么它发生后,人民关注的会很少,例如 “太阳从东边升起”。
信息量的性质有:
-
I(Ak)=0,若P(Ak)=1
-
I(Ak)>=0,若0<=P(Ak)<=1
-
I(Ak)<I(Ai),若P(Ak)<P(Ai)
信息熵
信息量的期望,就是定义为信息熵啦。
对于离散型随机变量
X,且
P(X=xk)=pk。
定义信息熵
H(X)为该随机变量的某个函数的数学期望:
H(X)=E[−log(pk)]=−k=1∑npklog(pk)
其实就是信息量的平均值。
当随机变量
X是连续型的时候,若它的概率密度函数为
f(x),分布函数为
F(x),那么定义它
X的连续信息熵为:
H(X)=E[−log(f(x)Δx)]=∫−∞+∞−log(f(x)Δx)f(x)dx
于是
H(X)=−∫−∞+∞(log(f(x))+log(Δx))f(x)dx=
−∫−∞+∞log(f(x))f(x)dx−∫−∞+∞log(Δx)f(x)dx=h(X)−log(Δx)
而
h(X)=−∫−∞+∞log(f(x))f(x)dx
可以看到,连续型随机变量的信息熵不是标准意义上的信息熵,因为它会在最后面带上一个小尾巴。于是为了讨论分别,我们下面都以离散型随机变量为讨论对象。
那么信息熵反映了什么呢? 信息熵其实刻画了某个随机变量的离散程度,它是随机变量的一个数字特征,是和数字变量的均值、方差类似的数字特征。如果随机变量取各个值的概率都基本相等,那么这个随机变量的随机性就很高。
信息熵的性质:
- 与随机变量能够取什么值没有关系,只与随机变量的概率有关。
- 对于离散型随机变量当且仅当某个
pk=1时,
H(X)=0。否则
H(X)非负。
- 对于离散型随机变量当仅当
p1=p2=⋯=pn=n1时,
H(X)取得最大值。此时
H(X)=−∑k=1nn1log(n1)=−log(n1)=log(n)。此时
H(X)=−∑k=1nn1log(n1)=−log(n1)=log(n)。
在机器学习以及深度学习中,我们一般不关注某个随机变量的信息熵到底多大,而是更大的关注什么时候取得最大。
互信息
互信息定义为信息熵减去条件熵,它衡量了两个随机变量的相关关系,注意不仅仅是线性相关,还有其他的相关关系,这里的相关关系特值与两个随机变量独立相对立。
假设
X,Y是两个离散型随机变量,他们的联合概率分布为
p(x,y),给定
y,随机变量X的条件概率为
p(x∣y)。
那么给定
Y=y,随机变量X的条件熵为
H(X∣Y=y)=−x∑p(x∣y)log(p(x∣y))
而给定
Y,随机变量
X的条件熵定义为
H(X∣Y)=y∑H(X∣Y=y)=−y∑p(y)x∑p(x∣y)log(p(x∣y))=−y∑x∑p(x,y)logp(x∣y)
注意体会一下条件熵的含义:如果X和Y独立,显然给定Y的条件下是不会影响X的随机程度的。因此有
H(X∣Y)=H(X)
同时有
H(X,Y)=H(X∣Y)+H(Y)
对于随机变量
X,Y,他们的互信息定义为:
I(X,Y)=H(X)−H(X∣Y)=H(Y)−H(Y∣X)=H(X)+H(Y)−H(X,Y)
互信息的信息:
- 两个随机变量,相互独立,那么他们的互信息为0。
- 两个随机变量存在可逆变换使得
Y=g(X),那么他们的互信息就是
H(X)或
H(Y),在这个情况下
Y是随机变量
X的函数,而
X是随机变量
Y的函数,他们的熵其实也是相等的。
3.两个随机变量,他们的互信息越大,说明相关性就越强。
看到这,就不禁让人很激动呀。
想想我们的神经网络,给定输入特征向量
X,可以把它看做一个随机向量;我们希望神经网络是一个函数
f,它把
X映射到
Y去。很明显,我们是希望
X与
Y是强关联的,因为我们想给定输入
X 就有唯一确且的输出
Y。于是只要模型
f足够好,那么
I(X,Y)就会特别大,当
f好到能够建立
X,
Y之间的一一映射时,
I(X,Y)达到最大。于是我们就可以把目标函数设置为最大化
I(X,Y)。