1. 一些信息论中的概念
1. 自信息
自信息(self-information),由香农提出,是与离散随机变量的值相关的信息量的量度,常用 bit 作为单位。通俗点来说就是一个随机事件以某个概率发生时携带的信息量有多大。可按照如下方式计算:
I
(
x
)
=
−
log
2
(
p
(
x
)
)
I(x)=-\log_2(p(x))
I(x)=−log2(p(x))
思考一下为什么是上面这个形式进行计算?首先可以考虑一个事件发生的概率越大意味着它越有可能发生,极端一点一个概率为 1 的事件,那么它一定会发生,所以这类事件是一个确定性事件没什么新鲜的,也就是说它没什么信息量。再考虑一个反向极端例子,一个概率为 0.000001 的事而发生了,这在人们心中往往是一个不可能发生的事,现在却发生了,为什么会这样?怎么发生的?人们心中一定会有各种疑问,当需要搞清楚这个小概率事件发生的原委时,人们也就从中获取了巨大的信息量。所以信息量是随着随机事件发生概率单调递减的,且非负。此时符合这个规律的候选函数还很多,比如 log(x),1/x
再考虑两个不相关的随机事件 X 和 Y,如果它们同时发生,那我们获得的信息量有多少?
不相关意味着任何一方出现都不会让对方更容易发生,也就是说不会影响对方的发生概率,所以信息量之和为:
I
X
=
x
,
Y
=
y
=
I
(
P
(
X
=
x
)
)
+
I
(
P
(
Y
=
y
)
)
I_{X=x,Y=y}=I(P(X=x))+I(P(Y=y))
IX=x,Y=y=I(P(X=x))+I(P(Y=y))
两个不相关事件同时发生的概率为:
P
(
X
=
x
,
Y
=
y
)
=
P
(
X
=
x
)
∗
P
(
Y
=
y
)
P(X=x,Y=y)=P(X=x)*P(Y=y)
P(X=x,Y=y)=P(X=x)∗P(Y=y)
也就是说
I
(
P
(
X
=
x
)
)
+
I
(
P
(
Y
=
y
)
)
=
I
(
P
(
X
=
x
)
∗
P
(
Y
=
y
)
)
I(P(X=x))+I(P(Y=y))=I(P(X=x)*P(Y=y))
I(P(X=x))+I(P(Y=y))=I(P(X=x)∗P(Y=y))
也就是说
I
(
x
)
I(x)
I(x) 的函数具有性质:
I
(
x
y
)
=
I
(
x
)
+
I
(
y
)
I(xy)=I(x)+I(y)
I(xy)=I(x)+I(y)
此时不难想到对数函数就有这个性质吧,所以得出了前面定义中的自信息的计算式,以 2 为底是因为以 bit 作为单位,也可以以 e 和 10 为底,不过单位就不是 bit 了
2. 熵
熵(entropy),表示接收到的每条消息中包含信息的平均量,又称为平均自信息量。所以可以按照下式计算:
H
(
X
)
=
−
∑
x
∈
X
P
(
X
=
x
)
log
(
P
(
X
=
x
)
)
H(X)=-\sum_{x\in X}P(X=x)\log(P(X=x))
H(X)=−x∈X∑P(X=x)log(P(X=x))
3. 交叉熵
交叉熵(cross entropy),主要用于度量两个概率分布间的差异性。具体的,有真实概率分布
p
p
p,用于拟合
p
p
p 的概率分布
q
q
q,用
q
q
q 来表示
p
p
p 中事件发生所需要的平均比特数,越大表示这两个分布之间差异性越大
H
(
p
,
q
)
=
−
∑
x
∈
X
P
(
X
=
x
)
log
(
Q
(
X
=
x
)
)
H(p,q)=-\sum_{x\in X}P(X=x)\log(Q(X=x))
H(p,q)=−x∈X∑P(X=x)log(Q(X=x))
4. KL 散度
KL 散度(kullback-leibler divergence),用于度量使用基于概率分布
q
q
q 来编码服从概率分布
p
p
p 的样本所需要的额外的平均比特数,也就等于交叉熵减去熵
D
K
L
(
P
∣
∣
Q
)
=
H
(
p
,
q
)
−
I
(
p
)
=
−
∑
x
∈
X
P
(
X
=
x
)
log
(
Q
(
X
=
x
)
)
−
(
−
∑
x
∈
X
P
(
X
=
x
)
log
(
P
(
X
=
x
)
)
)
=
∑
x
∈
X
P
(
X
=
x
)
log
(
P
(
X
=
x
)
Q
(
X
=
x
)
)
\begin{aligned} D_{KL}(P||Q)&=H(p,q)-I(p) \\ &=-\sum_{x\in X}P(X=x)\log(Q(X=x))-(-\sum_{x\in X}P(X=x)\log(P(X=x))) \\ &=\sum_{x \in X}P(X=x)\log(\frac{P(X=x)}{Q(X=x)}) \end{aligned}
DKL(P∣∣Q)=H(p,q)−I(p)=−x∈X∑P(X=x)log(Q(X=x))−(−x∈X∑P(X=x)log(P(X=x)))=x∈X∑P(X=x)log(Q(X=x)P(X=x))
所以,KL 散度和交叉熵之间数值上只差了真实分布的熵,对于深度学习的损失来说,二者其实没有差别都可以用作损失函数,因为真实分布是未知的、确定的,一个常量不影响优化过程
5. 条件熵
条件熵(conditional entropy),表示已知随机变量 X 的条件下随机变量 Y 的不确定性
H
(
Y
∣
X
)
=
∑
x
∈
X
p
(
x
)
H
(
Y
∣
X
=
x
)
=
−
∑
x
∈
X
p
(
x
)
∑
y
∈
Y
p
(
y
∣
x
)
log
(
p
(
y
∣
x
)
)
=
−
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
log
(
p
(
x
,
y
)
p
(
x
)
)
\begin{aligned} H(Y|X)&=\sum_{x\in X}p(x)H(Y|X=x) \\ &=-\sum_{x\in X}p(x)\sum_{y\in Y}p(y|x)\log(p(y|x)) \\ &=-\sum_{x\in X}\sum_{y\in Y}p(x,y)\log(\frac{p(x,y)}{p(x)}) \end{aligned}
H(Y∣X)=x∈X∑p(x)H(Y∣X=x)=−x∈X∑p(x)y∈Y∑p(y∣x)log(p(y∣x))=−x∈X∑y∈Y∑p(x,y)log(p(x)p(x,y))
和熵之间的关系为:
H
(
Y
∣
X
)
=
H
(
X
,
Y
)
−
H
(
X
)
=
−
∑
x
∈
X
,
y
∈
Y
p
(
x
,
y
)
log
(
p
(
x
,
y
)
)
+
∑
x
∈
X
p
(
x
)
log
(
p
(
x
)
)
=
−
∑
x
∈
X
,
y
∈
Y
p
(
x
,
y
)
log
(
p
(
x
,
y
)
)
+
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
log
(
p
(
x
)
)
=
−
∑
x
∈
X
∑
y
∈
Y
p
(
x
,
y
)
log
(
p
(
x
,
y
)
p
(
x
)
)
\begin{aligned} H(Y|X)&=H(X,Y)-H(X) \\ &=-\sum_{x\in X,y\in Y}p(x,y)\log(p(x,y))+\sum_{x\in X}p(x)\log(p(x)) \\ &=-\sum_{x\in X,y\in Y}p(x,y)\log(p(x,y))+\sum_{x\in X}\sum_{y\in Y}p(x,y)\log(p(x)) \\ &=-\sum_{x\in X}\sum_{y\in Y}p(x,y)\log(\frac{p(x,y)}{p(x)}) \end{aligned}
H(Y∣X)=H(X,Y)−H(X)=−x∈X,y∈Y∑p(x,y)log(p(x,y))+x∈X∑p(x)log(p(x))=−x∈X,y∈Y∑p(x,y)log(p(x,y))+x∈X∑y∈Y∑p(x,y)log(p(x))=−x∈X∑y∈Y∑p(x,y)log(p(x)p(x,y))
6.互信息
互信息(mutual information),度量了两个变量之间相互依赖的程度。简单来说就是现有两个变量 X 和 Y,在 Y 的条件下,X 的不确定性较少了多少
I
(
X
;
Y
)
=
H
(
X
)
−
H
(
X
∣
Y
)
=
−
∑
i
p
(
x
i
)
log
(
p
(
x
i
)
)
+
∑
i
∑
j
p
(
x
i
,
y
i
)
log
(
p
(
x
i
,
y
j
)
p
(
y
j
)
)
=
−
∑
i
∑
j
p
(
x
i
,
y
j
)
log
(
p
(
x
i
)
)
+
∑
i
∑
j
p
(
x
i
,
y
j
)
log
(
p
(
x
i
,
y
j
)
p
(
y
j
)
)
=
∑
i
∑
j
p
(
x
i
,
y
j
)
log
(
p
(
x
i
,
y
j
)
p
(
x
i
)
p
(
y
j
)
)
\begin{aligned} I(X;Y)&=H(X)-H(X|Y) \\ &=-\sum_ip(x_i)\log(p(x_i))+\sum_i\sum_jp(x_i,y_i)\log(\frac{p(x_i,y_j)}{p(y_j)}) \\ &=-\sum_i\sum_jp(x_i,y_j)\log(p(x_i))+\sum_i\sum_jp(x_i,y_j)\log(\frac{p(x_i,y_j)}{p(y_j)}) \\ &=\sum_i\sum_jp(x_i,y_j)\log(\frac{p(x_i,y_j)}{p(x_i)p(y_j)}) \end{aligned}
I(X;Y)=H(X)−H(X∣Y)=−i∑p(xi)log(p(xi))+i∑j∑p(xi,yi)log(p(yj)p(xi,yj))=−i∑j∑p(xi,yj)log(p(xi))+i∑j∑p(xi,yj)log(p(yj)p(xi,yj))=i∑j∑p(xi,yj)log(p(xi)p(yj)p(xi,yj))
以上就是机器学习中一些常用的信息论概念及其之间的联系
2. 极大似然估计与交叉熵
1. 极大似然估计
假设现在我们有一组通过某个未知分布采样得到的样本,现在我们要寻找这个分布的参数,那怎么的参数算是对原分布较好的拟合的参数呢?应该是能够使得当前这组样本出现概率最高的参数
举个例子,现有一枚硬币,连续抛一百次,共出现40次正面,60次反面,现在要我们估计这枚硬币抛出正面的概率 p p p。
假设 p = 0.8 p=0.8 p=0.8,那么得到以上100次的结果的概率为 0. 8 40 ∗ 0. 2 60 = 1.533 e − 46 0.8^{40}*0.2^{60}=1.533e^{-46} 0.840∗0.260=1.533e−46,
假设 p = 0.6 p=0.6 p=0.6,那么得到以上100次的结果的概率为 0. 6 40 ∗ 0. 4 60 = 1.7768 e − 33 0.6^{40}*0.4^{60}=1.7768e^{-33} 0.640∗0.460=1.7768e−33,
假设 p = 0.4 p=0.4 p=0.4,那么得到以上100次的结果的概率为 0. 4 40 ∗ 0. 6 60 = 5.908 e − 30 0.4^{40}*0.6^{60}=5.908e^{-30} 0.440∗0.660=5.908e−30
所以在以上 3 个选择中,很合理地我们会认为 p = 0.4 p=0.4 p=0.4
下面进行数学化描述:
假设有一组独立同分布的样本
x
=
(
x
1
,
.
.
.
,
x
N
)
x=(x_1,...,x_N)
x=(x1,...,xN) 来自参数总体
p
θ
p_{\theta}
pθ,密度函数为
f
(
x
i
∣
θ
)
f(x_i|\theta)
f(xi∣θ),那么这组样本出现的概率为:
f
(
x
∣
θ
)
=
∏
i
=
1
N
f
(
x
i
∣
θ
)
f(x|\theta)=\prod_{i=1}^Nf(x_i|\theta)
f(x∣θ)=i=1∏Nf(xi∣θ)
然后我们要最大化这个函数,其中
θ
\theta
θ 视为变量,
x
i
x_i
xi 为给定的样本(参数),优化中通常对累乘取对数:
L
(
θ
∣
x
)
=
log
2
(
f
(
x
∣
θ
)
)
=
∑
i
N
log
2
(
f
(
x
i
∣
θ
)
)
L(\theta|x)=\log_2(f(x|\theta))=\sum_i^N\log_2(f(x_i|\theta))
L(θ∣x)=log2(f(x∣θ))=i∑Nlog2(f(xi∣θ))
得到优化目标后,我们就可以使用例如梯度下降法进行优化求解,得到一个
θ
^
\hat{\theta}
θ^ 使得对数似然函数最大化:
θ
^
=
arg
max
θ
L
(
θ
∣
x
)
\hat{\theta}=\arg \max _{\theta}L(\theta|x)
θ^=argθmaxL(θ∣x)
2. 交叉熵
交叉熵衡量的是两个分布之间的差异,在这里,我们有不知道
p
p
p 真实值的原始分布,现在我们希望尽可能合理地估计
p
p
p 的值,也就是估计分布
f
(
x
i
∣
θ
)
f(x_i|\theta)
f(xi∣θ),另外设
y
i
y_i
yi 为每次实验出现的是正面还是反面,正面是 1,反面是 0,
f
(
x
i
∣
θ
)
f(x_i|\theta)
f(xi∣θ) 表示每次实验出现正面的概率, 我们的目标是希望估计分布和原始分布的差异尽可能小,那么根据交叉熵的计算表达式有:
L
(
θ
∣
x
)
=
−
∑
i
N
(
y
i
log
2
(
f
(
x
i
∣
θ
)
)
+
(
1
−
y
i
)
log
2
(
1
−
f
(
x
i
∣
θ
)
)
)
L(\theta|x)=-\sum_i^N(y_i\log_2(f(x_i|\theta))+(1-y_i)\log_2(1-f(x_i|\theta)))
L(θ∣x)=−i∑N(yilog2(f(xi∣θ))+(1−yi)log2(1−f(xi∣θ)))
以上,当
f
(
x
i
∣
θ
)
f(x_i|\theta)
f(xi∣θ) 表示当前实验结果对应的估计概率,
y
i
y_i
yi 表示当前的实验结果,取 1,所以上式可化为:
L
(
θ
∣
x
)
=
−
∑
i
N
log
2
(
f
(
x
i
∣
θ
)
)
L(\theta|x)=-\sum_i^N\log_2(f(x_i|\theta))
L(θ∣x)=−i∑Nlog2(f(xi∣θ))
然后,最小化交叉熵就可以得到我们想要的参数。可以看到和极大似然估计的目标函数就相差了一个符号,当极大似然估计加上一个符号,也就变成了最小化负对数极大似然估计,和交叉熵也就一致了
3. 小结
极大似然估计和交叉熵的结果是一样的,只是它们解决问题的角度不一样,交叉熵从信息论的角度出发,极大似然估计从概率论的角度出发
参考
- https://zh.wikipedia.org/wiki/%E7%86%B5_(%E4%BF%A1%E6%81%AF%E8%AE%BA)
- https://www.zhihu.com/question/30828247
- https://zh.wikipedia.org/wiki/%E7%9B%B8%E5%AF%B9%E7%86%B5
- https://www.zhihu.com/question/24124998