文章目录
参考:Dive into Deep Learning A. zhang ect Chapter 18 Appendix: Mathematics for Deep Learning
利用信息论我们可以测量或者比较在不同的信号(signals)中信息。在这部分,我们主要讨论机器学习对信息论的一些概念和应用。
首先我们先简要描述介绍一下机器学习和信息论之间的关系。机器学习的主要的任务就是从数据中提取出有价值的信息,然后利用这些信息去做一些预测。而信息论主要研究信息的编码、解码、转换和操作(sencoding, decoding, transmitting, and manipulating information)。所以,我们可以利用信息论来讨论机器学习在训练中对信息的处理过程。
信息(Information)
信息就是能够将所有事情通过一种或者是多种编码格式编码成一个特定的序列。但是怎么样编码才能正确地表述事物所具有的信息量呢?在我们描述一个事件的时候,如果这件事情是不寻常的,这时候我们需要更多的信息来描述,反之需要更少的信息。这就好比说一个普通的碗和清朝乾隆皇帝御用的碗,后者是比较少见的,需要更多的必要信息才能描述清楚它的特征。所以可以将信息表示为事件发生的抽象概率。
自信息(Self-information)
香农(Shannon)将比特(bit)作为信息的单位,这将时间发生的概率转换成比特数。这样,对于一个长度为
n
n
n的二进制序列所包含的信息为
n
n
n比特。
假设二进制序列每一个位置为1或者0的概率相等(都为
1
2
\frac 12
21),所以对于一个事件
X
X
X,这个事件为:一个长度为
n
n
n二进制序列,每种序列出现的概率为
1
2
n
\frac{1}{2^n}
2n1,香农定义了自信息,将事件的概率转换成了比特数:
I
(
x
)
=
−
log
2
(
p
)
I(x) = -\log_2(p)
I(x)=−log2(p)
举例来说,对于一个序列“0010”的自信息为:
I
(
"
0010
"
)
=
−
log
2
(
p
(
"
0010
"
)
)
=
−
log
2
(
1
2
4
)
=
4
b
i
t
s
I("0010") = -\log_2(p("0010"))=-\log_2(\frac{1}{2^4})=4\ bits
I("0010")=−log2(p("0010"))=−log2(241)=4 bits
* 在本章节中,我们省略log的下标,如无特殊说明都表示
log
2
p
\log_2p
log2p
熵(Entropy)
自信息只能描述一个离散事件的信息,这部分介绍能够任意随机变量的描述方式。
提出熵的动机(Motivating Entropy)
熵的形式受限于香农熵定理:
- 我们通过观察随机变量得到的信息与随机变量的元素的名称无关,与发生概率为0的元素无关。
- 两个随机变量一起观测得到的信息 ≤ \le ≤ 两个随机变量分开观测得到的信息。当两个随机变量相互独立的时候,取得等号。
- 通过一个确定事件所得到的信息为0
我们可以将抛掷一个完全均匀的硬币所得到的信息为1比特作为基准,以消除使用不同的基本单位而导致的对同一事件的信息量上的差异。
定义(Definition)
对于一个随机变量
X
X
X, 遵循概率分布
P
P
P,概率密度函数或概率质量函数为
p
(
x
)
p(x)
p(x),我们利用熵来描述信息的期望值:
H
(
x
)
=
−
E
x
∼
P
[
log
p
(
x
)
]
H(x)=-E_{x\sim P}[\log p(x)]
H(x)=−Ex∼P[logp(x)]
具体来说:
H
(
X
)
=
{
−
∑
i
p
i
log
p
i
,
p
i
=
P
(
X
i
)
X
是
离
散
型
随
机
变
量
−
∫
x
p
(
x
)
log
p
(
x
)
d
x
X
是
连
续
型
随
机
变
量
H(X)=\left\{\begin{aligned} & -\sum_i p_i\log p_i, \quad p_i = P(X_i)\quad X 是离散型随机变量 \\ & -\int_x p(x)\log p(x) dx\quad X是连续型随机变量 \end{aligned} \right.
H(X)=⎩⎪⎪⎨⎪⎪⎧−i∑pilogpi,pi=P(Xi)X是离散型随机变量−∫xp(x)logp(x)dxX是连续型随机变量
连续性随机变量的熵也被称为微分熵(Differential Entropy)
解释(Interpretation)
在这一节中,主要解释两个关于上述公式的问题。
-
为什么要使用负对数?
首先是为什么要使用对数。这是为了保证熵对独立随机变量的可加性。对于一系列相互独立的事件发生的概率为 f i ( x ) f_i(x) fi(x), 那么所有事件发生的概率为 p ( X ) = ∏ i f i ( x ) p(X)=\prod_if_i(x) p(X)=∏ifi(x),使用对数可以将这个连乘转换成连加。 -
为什么添加负号?
因为信息的定义。由于发生概率低的事件应该包含更多的信息,但是对数是一个单调递增函数,所以为了保证事件概率和对应的熵之间的反比例的关系,我们需要对对数加一个负号,让他变成单调递减函数。 -
为什么需要期望函数?
对于一个随机变量X,它的自信息( − log ( p ) -\log(p) −log(p))就是对于某个输出的不确定性的数量。但是当事件发生的概率趋向于0的时候,这种不确定性就会趋向于 + ∞ +\infin +∞.同样的,我们可以将熵解释为观测事件X的平均不确定性。举例子来说,对于一个模型的相互独立的输出 s 1 , ⋯ , s k s_1,\cdots, s_k s1,⋯,sk的对应的概率为 p 1 , ⋯ , p k p_1,\cdots, p_k p1,⋯,pk, 那么这个系统的熵就是输出值的平均自信息:
H ( S ) = ∑ i p i ⋅ I ( s i ) = − ∑ i p i ⋅ log p i H(S) = \sum_ip_i\cdot I(s_i)=-\sum_ip_i\cdot\log p_i H(S)=i∑pi⋅I(si)=−i∑pi⋅logpi
熵的性质(Properties of Entropy)
下面考虑随机事件 X X X, 它对应的概率分布为 P P P
- 对所有离散型随机变量 X X X: H ( X ) ≥ 0 H(X)\ge 0 H(X)≥0(连续性随机变量的熵可能会是负数)
- 假设一个随机事件
X
∼
P
(
p
.
d
.
f
=
p
(
x
)
)
X\sim P\quad(p.d.f=p(x))
X∼P(p.d.f=p(x)),我们想用一个新的概率分布
Q
(
p
.
d
.
f
=
q
(
x
)
)
Q\quad(p.d.f=q(x))
Q(p.d.f=q(x))来估计
P
P
P则有:
H ( X ) = − E x ∼ P [ log p ( x ) ] ≤ − E x ∼ P [ log q ( x ) ] H(X)=-E_{x\sim P}[\log p(x)]\le -E_{x\sim P}[\log q(x)] H(X)=−Ex∼P[logp(x)]≤−Ex∼P[logq(x)]
当 P = Q P=Q P=Q的时候,取得等号。 - 对于一个随机变量
X
∼
P
X\sim P
X∼P,
x
x
x将会传递最多的信息,如果他能将这些信息均匀地分布在所有可能的结果上。具体来说,对于一个概率分布
P
P
P的k种相互独立的输出
{
p
1
,
⋯
,
p
k
}
\{p_1,\cdots, p_k\}
{p1,⋯,pk}:
H ( X ) ≤ log ( k ) , w i t h e q u a l i t y i f a n d o n l y i f p i = 1 k , ∀ i H(X)\le \log(k), with\ equality\ if \ and \ only \ if \ p_i=\frac{1}{k},\forall_i H(X)≤log(k),with equality if and only if pi=k1,∀i
但是如果 P P P是一个连续性随机变量,那么处理过程就会很麻烦了。我们假设P在一个有限的区间内,那么,如果这个随机变量在这个区间上满足均匀分布,那么这个随机变量的熵的值将会是最大的。
互信息(Mutual Information)
在这部分,我们联合变量 ( X , Y ) (X,Y) (X,Y)的熵。在本节中,我们使用的联合变量 ( X , Y ) (X,Y) (X,Y)遵循联合概率分布 P P P,概率密度函数为 P X , Y ( x , y ) P_{X,Y}(x,y) PX,Y(x,y),其中 X ∼ p X ( x ) ; Y ∼ p Y ( y ) X\sim p_X(x);\quad Y\sim p_Y(y) X∼pX(x);Y∼pY(y)
联合熵(Joint Entropy)
联合熵与先前定义的熵的形式一致:
H
(
X
,
Y
)
=
−
E
(
x
,
y
)
∼
P
[
log
p
X
,
Y
(
x
,
y
)
]
(*)
H(X,Y)=-E_{(x,y)\sim P}[\log p_{X,Y}(x,y)]\tag {*}
H(X,Y)=−E(x,y)∼P[logpX,Y(x,y)](*)
具体形式为:
H
(
X
,
Y
)
=
{
−
∑
x
∑
y
p
X
,
Y
(
x
,
y
)
log
p
X
,
Y
(
x
,
y
)
,
离
散
型
−
∫
x
,
y
p
X
,
Y
(
x
,
y
)
log
p
X
,
Y
(
x
,
y
)
d
x
d
y
,
连
续
型
H(X,Y)=\left\{\begin{aligned} &-\sum_x\sum_yp_{X,Y}(x,y)\log p_{X,Y}(x,y),\quad 离散型\\ &-\int_{x,y}p_{X,Y}(x,y)\log p_{X,Y}(x,y)dxdy,\quad 连续型 \end{aligned}\right.
H(X,Y)=⎩⎪⎪⎪⎨⎪⎪⎪⎧−x∑y∑pX,Y(x,y)logpX,Y(x,y),离散型−∫x,ypX,Y(x,y)logpX,Y(x,y)dxdy,连续型
(
∗
)
(*)
(∗)表示一对随机变量的全部的不确定性。当
X
=
Y
X=Y
X=Y的时候,
H
(
X
,
Y
)
=
H
(
X
)
=
H
(
Y
)
H(X,Y)=H(X)=H(Y)
H(X,Y)=H(X)=H(Y),当X与Y相互独立的时候
H
(
X
,
Y
)
=
H
(
X
)
+
H
(
Y
)
H(X,Y)=H(X)+H(Y)
H(X,Y)=H(X)+H(Y),所以有:
H
(
X
)
,
H
(
Y
)
≤
H
(
X
,
Y
)
≤
H
(
X
)
+
H
(
Y
)
H(X),H(Y)\le H(X,Y)\le H(X)+H(Y)
H(X),H(Y)≤H(X,Y)≤H(X)+H(Y)
条件熵(Conditional Entropy)
在机器学习中,我们更多的时候,我们更关注条件上而不是联合熵。例如我们要根据图片判断图片的标签,这就可以理解为在图片像素信息条件下的对标签的信息。条件熵的定义与之前的几种熵的定义相似:
H
(
Y
∣
X
)
=
−
E
(
x
,
y
)
∼
P
[
log
p
(
y
∣
x
)
]
H(Y|X)=-E_{(x,y)\sim P}[\log p(y|x)]
H(Y∣X)=−E(x,y)∼P[logp(y∣x)]
其中:
p
(
y
∣
x
)
=
p
X
,
Y
(
x
,
y
)
p
X
(
x
)
p(y|x)=\frac{p_{X,Y}(x,y)}{p_X(x)}
p(y∣x)=pX(x)pX,Y(x,y).条件熵与熵和联合熵的关系为:
H
(
Y
∣
X
)
=
H
(
X
,
Y
)
−
H
(
X
)
H(Y|X)=H(X,Y)-H(X)
H(Y∣X)=H(X,Y)−H(X)
这样条件熵既可以理解为存在于Y中的而不存在与X中的的信息。
互信息(Mutual Information)
上面我们讨论了联合变量之中独有的信息,现在我们讨论两个变量之间共有的信息。所以根据定义可以得到(互信息:
I
(
X
,
Y
)
I(X,Y)
I(X,Y))
I
(
X
,
Y
)
=
H
(
X
,
Y
)
−
H
(
Y
∣
X
)
−
H
(
X
∣
Y
)
I(X,Y) = H(X,Y)-H(Y|X)-H(X|Y)
I(X,Y)=H(X,Y)−H(Y∣X)−H(X∣Y)
将原先的定义式带入,整理可得:
I
(
X
,
Y
)
=
E
x
E
y
{
p
X
,
Y
(
x
,
y
)
log
p
X
,
Y
(
x
,
y
)
p
X
(
x
)
p
Y
(
y
)
}
I(X,Y)=E_xE_y\left\{ p_{X,Y}(x,y)\log \frac{p_{X,Y}(x,y)}{p_X(x)p_Y(y)} \right\}
I(X,Y)=ExEy{pX,Y(x,y)logpX(x)pY(y)pX,Y(x,y)}
在本节中提到的定义之间的关系如下图:
互信息的性质(Properties of Mutual Information)
- 对称性: I ( X , Y ) = I ( Y , X ) I(X,Y) = I(Y,X) I(X,Y)=I(Y,X)
- 非负性: I ( X , Y ) ≥ 0 I(X,Y)\ge 0 I(X,Y)≥0
- 如果两个随机变量是相互独立的,那么 I ( X , Y ) = 0 I(X,Y)=0 I(X,Y)=0
- 如果X是Y的可逆函数: I ( X , Y ) = H ( Y ) = H ( X ) I(X,Y)=H(Y)=H(X) I(X,Y)=H(Y)=H(X)
点间互信息(Pointwise Mutual Information)
点间互信息:
p
m
i
(
x
,
y
)
pmi(x,y)
pmi(x,y)就是互信息定义中的对数部分:
p
m
i
(
x
,
y
)
=
log
p
X
,
Y
(
x
,
y
)
p
X
(
x
)
p
Y
(
y
)
pmi(x,y) = \log\frac{p_{X,Y}(x,y)}{p_X(x)p_Y(y)}
pmi(x,y)=logpX(x)pY(y)pX,Y(x,y)
他描述的是两个联合事件发生的概率比分别发生的概率的具体的数值关系。
互信息的应用(Applications of Mutual Information)
在自认语言处理中,歧义消除(Ambiguity Resolution)是一件比较难的事情。也就是一些词在文中的含义不是很明确。例如先前出现的新闻“亚马逊起火了”,我们不知道是公司起火了,还是那个雨林起火了。这时候就产生了歧义。我们先找出一组词,这些词与亚马逊公司有较大互信息。同样找到与亚马逊雨林有较大互信息的词,然后分析这些那些在文中有更高的出现频率。利用这个,我们能够了解新闻是关于公司的还是雨林的。
Kullback–Leibler 散度(Kullback–Leibler Divergence)
我们可以利用范数来表示任何维度两点之间的距离。现在我们想知道两个概率分布之间的距离(相似程度)。KL散度就是一种测量两种分布之间相似程度的量。
定义(Definition)
对于一个随机变量
X
X
X遵循概率分布
P
P
P,概率密度分布为
p
(
x
)
p(x)
p(x).我们利用另一个概率分布
Q
Q
Q(
p
.
d
.
f
=
q
(
x
)
p.d.f=q(x)
p.d.f=q(x)),那么
P
P
P和
Q
Q
Q之间的KL散度(相对熵,Relative Entropy)定义为:
D
K
L
(
P
∥
Q
)
=
E
x
∼
P
[
log
p
(
x
)
q
(
x
)
]
D_{KL}(P\|Q)=E_{x\sim P}[\log\frac{p(x)}{q(x)}]
DKL(P∥Q)=Ex∼P[logq(x)p(x)]
可见DL散度就是在描述两个随机变量之间不确定性程度的相对关系。
性质(Properties)
- 非对称性: D K L ( P ∥ Q ) ≠ D K L ( Q ∥ P ) D_{KL}(P\|Q)\ne D_{KL}(Q\|P) DKL(P∥Q)=DKL(Q∥P)
- 非负性: D K L ( P ∥ Q ) ≥ 0 D_{KL}(P\|Q)\ge0 DKL(P∥Q)≥0,当 P = Q P=Q P=Q时取得等号。
- 如果 p ( x ) > 0 , q ( x ) = 0 p(x)>0,\ q(x)=0 p(x)>0, q(x)=0则 D K L ( P ∥ Q ) = ∞ D_{KL}(P\|Q)=\infin DKL(P∥Q)=∞
- 以下三种表达式等价:
D K L ( P ( X , Y ) ∥ P ( X ) P ( Y ) ) D_{KL}(P(X,Y)\| P(X)P(Y)) DKL(P(X,Y)∥P(X)P(Y))
E Y { D K L ( P ( X ∣ Y ) ) ∥ P ( X ) ) } E_Y\{D_{KL}(P(X|Y))\|P(X))\} EY{DKL(P(X∣Y))∥P(X))}
E X { D K L ( P ( Y ∣ X ) ∥ P ( Y ) ) } E_X\{D_{KL}(P(Y|X)\|P(Y))\} EX{DKL(P(Y∣X)∥P(Y))}For the first term, we interpret mutual information as the KL divergence between P(X, Y ) and the product of P(X) and P(Y ), and thus is a measure of how different the joint distribution is from the distribution if they were independent. For the second term, mutual information tells us the average reduction in uncertainty about Y that results from learning the value of the X X Xʼs distribution. Similarly to the third term.
交叉熵(Cross-Entropy)
对于一个二分类问题,预测值为
y
^
i
=
p
θ
(
y
i
∣
x
i
)
\hat y_i = p_\theta(y_i|x_i)
y^i=pθ(yi∣xi).预测结果为1的概率为:
π
i
=
p
θ
(
y
i
=
1
∣
x
i
)
\pi_i=p_\theta(y_i=1|x_i)
πi=pθ(yi=1∣xi)所以log似然方程为:
l
(
θ
)
=
log
L
(
θ
)
=
log
∏
i
=
1
n
π
i
y
i
(
1
−
π
i
)
1
−
y
i
=
∑
i
=
1
n
y
i
log
(
π
i
)
+
(
1
−
y
i
)
log
(
1
−
π
i
)
\begin{aligned} l(\theta)&=\log L(\theta)\\ &=\log \prod^n_{i=1}\pi_i^{y_i}(1-\pi_i)^{1-y_i}\\ &=\sum^n_{i=1}y_i \log(\pi_i)+(1-y_i)\log(1-\pi_i) \end{aligned}
l(θ)=logL(θ)=logi=1∏nπiyi(1−πi)1−yi=i=1∑nyilog(πi)+(1−yi)log(1−πi)
我们的目标就是最大化这个似然函数,这种方法就是极大似然估计。看到式中的自然对数,我们可以联想到之前提到一些信息论的概念。这暗示我们这个函数可以从信息论的角度理解。
正式定义(Formal Definition)
我们假设有两个随机变量:
P
∼
p
(
x
)
;
Q
∼
q
(
x
)
P\sim p(x);\quad Q\sim q(x)
P∼p(x);Q∼q(x)(前者是真实值的分布,后者是预测值的分布).,我们可以通过交叉熵来描述两种分布之间的散度:
C
E
(
P
,
Q
)
=
−
E
x
∼
P
[
log
(
q
(
x
)
)
]
CE(P,Q)=-E_{x\sim P}[\log (q(x))]
CE(P,Q)=−Ex∼P[log(q(x))]
通过之前提到的关系式,可以将上式转化为:
C
E
(
P
,
Q
)
=
H
(
P
)
+
D
K
L
(
P
∥
Q
)
CE(P,Q) = H(P)+D_{KL}(P\|Q)
CE(P,Q)=H(P)+DKL(P∥Q)
性质(Properties)
交叉熵可以用于优化问题的损失函数,以下几种说法是等价的:
- 最大化分布对于分布P的预测概率(最大化 E x ∼ P [ log ( q ( x ) ) ] E_{x\sim P[\log (q(x))]} Ex∼P[log(q(x))])
- 最小化交叉熵 C E ( P , Q ) CE(P,Q) CE(P,Q)
- 最小化KL散度
这些性质可以从交叉熵的定义中得出。注意因为P是真实值的分布,所以 H ( P ) H(P) H(P)是一个常量。
交叉熵作为多元分类问题的目标函数(Cross-Entropy as An Objective Function of Multi-class Classification)
现在考虑一个k分类问题,这个分类问题的标签用独热编码(One-hot encoding)表示
y
i
=
(
y
i
1
,
⋯
,
y
i
k
)
y_i=(y_{i1},\cdots,y_{ik})
yi=(yi1,⋯,yik),预测标签值为:
y
^
i
=
p
θ
(
y
i
∣
x
i
)
=
∑
j
=
1
k
y
i
j
p
θ
(
y
i
j
∣
x
i
)
\hat y_i=p_\theta(y_i|x_i)=\sum^k_{j=1}y_{ij}p_\theta(y_{ij}|x_i)
y^i=pθ(yi∣xi)=j=1∑kyijpθ(yij∣xi)
所以交叉熵可以表示为:
C
E
(
y
,
y
^
)
=
−
∑
i
=
1
n
y
i
log
y
^
i
=
−
∑
i
=
1
n
∑
j
=
1
k
y
i
j
log
(
y
i
j
∣
x
i
)
CE(y,\hat y)=-\sum^n_{i=1}y_i\log\hat y_i=-\sum^n_{i=1}\sum^k_{j=1}y_{ij}\log(y_{ij}|x_i)
CE(y,y^)=−i=1∑nyilogy^i=−i=1∑nj=1∑kyijlog(yij∣xi)
另一方面,我们可以利用极大似然估计来解决这个问题。假设一个随机变量
z
=
(
z
1
,
⋯
,
z
k
)
z=(z_1,\cdots,z_k)
z=(z1,⋯,zk)满足k分类多元伯努利分布,对应的概率为
p
=
(
p
1
,
⋯
,
p
k
)
p=(p_1,\cdots, p_k)
p=(p1,⋯,pk),也就是:
p
(
z
)
=
p
(
z
1
,
⋯
,
z
k
)
=
M
u
l
t
i
(
p
1
,
⋯
,
p
k
)
,
w
h
e
r
e
∑
i
=
1
k
p
i
=
1
p(z)=p(z_1,\cdots,z_k)=Multi(p_1,\cdots,p_k),\ where\ \sum^k_{i=1}p_i=1
p(z)=p(z1,⋯,zk)=Multi(p1,⋯,pk), where i=1∑kpi=1
z的联合概率质量函数为:
p
z
=
∏
j
=
1
k
p
j
z
j
p^z=\prod^k_{j=1}p^{z_j}_j
pz=j=1∏kpjzj
所以对应的log似然方程为:
l
(
θ
)
=
log
L
(
θ
)
=
log
∏
i
=
1
n
p
y
i
=
log
∏
i
=
1
n
∏
j
=
1
k
p
y
i
j
=
∑
i
=
1
n
∑
j
=
1
k
y
i
j
log
p
j
l(\theta)=\log L(\theta)=\log\prod^n_{i=1}p^{y_i}=\log\prod^n_{i=1}\prod_{j=1}^{k}p^{y_{ij}}=\sum^n_{i=1}\sum^k_{j=1}y_{ij}\log p_j
l(θ)=logL(θ)=logi=1∏npyi=logi=1∏nj=1∏kpyij=i=1∑nj=1∑kyijlogpj
所以对于多分类问题最大化log似然函数等价于最小化交叉熵损失
C
E
(
y
,
y
^
)
CE(y,\hat y)
CE(y,y^)