本篇博客不包含深度学习中所有的数学知识,只是我在学习过程中,对不会或者不熟悉的数学知识的记录,因此部分内容和推导我会省略掉。
自信息
任何事件都会承载着一定的信息量,包括已经发生的事件和未发生的事件,只是它们承载的信息量会有所不同。
如昨天下雨这个已知事件,因为已经发生,既定事实,那么它的信息量就为0。如明天会下雨这个事件,因为未有发生,那么这个事件的信息量就大。
从上面例子可以看出信息量是一个与事件发生概率相关的概念,而且可以得出,事件发生的概率越小,其信息量越大。
定义事件
X
=
x
X=x
X=x 的自信息为
I
(
x
)
=
−
log
2
P
(
x
)
I\left(x\right)=-\log_2 P\left(x\right)
I(x)=−log2P(x)
香农熵(Shannon Entropy)
当一个事件发生的概率为 p ( x ) p\left(x\right) p(x),那么它的信息量是 − log p ( x ) -\log{p\left(x\right)} −logp(x)
如果把这个事件的所有可能性罗列出来,就可以求得该事件信息量的期望
信息量的期望就是熵,所以熵的公式为
H
(
x
)
=
E
x
∼
P
[
I
(
x
)
]
=
−
E
x
∼
P
[
log
P
(
x
)
]
H\left(\mathrm{x}\right)=\mathbb{E}_{\mathrm{x}\sim P}\left[I\left(x\right)\right]=-\mathbb{E}_{\mathrm{x}\sim P}\left[\log{P\left(x\right)}\right]
H(x)=Ex∼P[I(x)]=−Ex∼P[logP(x)]
也可以表述为
H
(
x
)
=
−
∑
i
=
1
n
p
(
x
i
)
log
p
(
x
i
)
H\left(\mathrm{x}\right)=-\sum_{i=1}^{n}p\left(x_i\right)\log{p\left(x_i\right)}
H(x)=−i=1∑np(xi)logp(xi)
对于 0-1 分布问题,熵的计算可以简化为
H
(
x
)
=
−
p
(
x
)
log
(
p
(
x
)
)
−
(
1
−
p
(
x
)
)
log
(
1
−
p
(
x
)
)
H\left(\mathrm{x}\right)=-p\left(x\right)\log{\left(p\left(x\right)\right)}-\left(1-p\left(x\right)\right)\log\left(1-p\left(x\right)\right)
H(x)=−p(x)log(p(x))−(1−p(x))log(1−p(x))
相对熵(KL 散度)(Kullback-Leibler divergence)
对于同一个随机变量
x
\mathbf{x}
x,如果其有两个单独的概率分布
P
(
x
)
P(\mathbf{x})
P(x) 和
Q
(
x
)
Q(\mathbf{x})
Q(x),可以使用 KL 散度来衡量这两个分布的差异。KL 散度越小,真实分布与近似分布之间的匹配就越好。
D
K
L
(
P
∥
Q
)
=
E
x
∼
P
[
log
P
(
x
)
Q
(
x
)
]
=
E
x
∼
P
[
log
P
(
x
)
−
log
Q
(
x
)
]
D_{\mathrm{KL}}(P \| Q)=\mathbb{E}_{\mathrm{x} \sim P}\left[\log \frac{P(x)}{Q(x)}\right]=\mathbb{E}_{\mathrm{x} \sim P}[\log P(x)-\log Q(x)]
DKL(P∥Q)=Ex∼P[logQ(x)P(x)]=Ex∼P[logP(x)−logQ(x)]
在机器学习中,
P
P
P 往往用来表示样本的真实分布,
Q
Q
Q 用来表示模型所预测的分布,那么 KL 散度就可以计算两个分布的差异,也就是 Loss
D
K
L
(
P
∥
Q
)
=
∑
i
=
1
n
P
(
x
i
)
log
P
(
x
i
)
Q
(
x
i
)
D_{KL}(P\|Q)=\sum_{i=1}^n{P(x_i)\log{\frac{P(x_i)}{Q(x_i)}}}
DKL(P∥Q)=i=1∑nP(xi)logQ(xi)P(xi)
因为 KL 散度是非负的并且衡量的是两个分布之间的差异,它经常被用作分布之间的某种距离
然而,它并不是真的距离因为它不是对称的:对于某些 P P P 和 Q Q Q, 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 ) D_{KL}(P\|Q) DKL(P∥Q) 还是 D K L ( Q ∥ P ) D_{KL}(Q\|P) DKL(Q∥P) 影响很大。
对于 KL 散度的直观解释可以看这篇文章:初学机器学习:直观解读KL散度的数学概念
如何证明 KL 散度大于等于 0 0 0 (未解决)
交叉熵(Cross Entropy)
两个分布
P
P
P 和
Q
Q
Q 之间的交叉熵定义为:
H
(
P
,
Q
)
=
−
E
x
∼
P
[
log
Q
(
x
)
]
H\left(P,Q\right)=-\mathbb{E}_{x\sim P}\left[\log{Q\left(x\right)}\right]
H(P,Q)=−Ex∼P[logQ(x)]
将 KL 散度公式变形:
D
K
L
(
P
∥
Q
)
=
E
x
∼
P
[
log
P
(
x
)
−
log
Q
(
x
)
]
D_{\mathrm{KL}}(P \| Q)=\mathbb{E}_{\mathrm{x} \sim P}[\log P(x)-\log Q(x)]
DKL(P∥Q)=Ex∼P[logP(x)−logQ(x)]
D
K
L
(
P
∥
Q
)
=
E
x
∼
P
[
log
P
(
x
)
]
−
E
x
∼
P
[
log
Q
(
x
)
]
D_{\mathrm{KL}}(P \| Q)=\mathbb{E}_{\mathrm{x}\sim{P}}[\log{P(x)}]-\mathbb{E}_{\mathrm{x}\sim{P}}[\log{Q(x)}]
DKL(P∥Q)=Ex∼P[logP(x)]−Ex∼P[logQ(x)]
D
K
L
(
P
∥
Q
)
=
−
H
(
P
)
−
E
x
∼
P
[
log
Q
(
x
)
]
D_{\mathrm{KL}}(P \| Q)=-H(P)-\mathbb{E}_{\mathbf{x}\sim P}[\log Q(x)]
DKL(P∥Q)=−H(P)−Ex∼P[logQ(x)]
D
K
L
(
P
∥
Q
)
=
−
H
(
P
)
+
H
(
P
,
Q
)
D_{\mathrm{KL}}(P \| Q)=-H(P)+H(P,Q)
DKL(P∥Q)=−H(P)+H(P,Q)
所以可得到交叉熵和 KL 散度的关系:
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)
在机器学习中,需要评估 label 和 predicts 之间的差距,使用 KL 散度刚刚好,即
D
K
L
(
y
∥
y
^
)
D_{KL}(\mathbf{y}\|\hat{\mathbf{y}})
DKL(y∥y^)。
由于 KL 散度中的前一部分 − H ( y ) −H(y) −H(y) 不变,故在优化过程中,只需要关注交叉熵就可以了。所以一般在机器学习中直接用交叉熵做 loss,评估模型。
在信息论中, lim x → 0 x log x = 0 \lim_{x\to 0}x\log x=0 limx→0xlogx=0
JS 散度(Jensen-Shannon divergence)
JS 散度度量了两个概率分布的相似度,基于 KL 散度的变体,解决了 KL 散度非对称的问题。
一般地,JS 散度是对称的,其取值是 0 到 1 之间。定义如下:
J
S
(
P
1
∥
P
2
)
=
1
2
K
L
(
P
1
∥
P
1
+
P
2
2
)
+
1
2
K
L
(
P
2
∥
P
1
+
P
2
2
)
JS(P_1\|P_2)=\frac{1}{2}KL(P_1\|\frac{P_1+P_2}{2})+\frac{1}{2}KL(P_2\|\frac{P_1+P_2}{2})
JS(P1∥P2)=21KL(P1∥2P1+P2)+21KL(P2∥2P1+P2)
Wasserstein 距离
KL 散度和 JS 散度的问题
如果两个分布 P , Q P,Q P,Q 离得很远,完全没有重叠的时候,那么 KL 散度值是没有意义的,而 JS 散度值是一个常数。这在学习算法中是比较致命的,这就意味着这一点的梯度为 0 0 0,梯度消失了。
Wasserstein距离 度量两个概率分布之间的距离,定义如下
W
(
P
1
,
P
2
)
=
inf
γ
∼
∏
(
P
1
,
P
2
)
E
(
x
,
y
)
∼
γ
[
∥
x
−
y
∥
]
W(P_1,P_2)=\inf_{\gamma\sim\prod(P_1,P_2)}\mathbb{E}_{(x,y)\sim\gamma}[\left\|x-y\right\|]
W(P1,P2)=γ∼∏(P1,P2)infE(x,y)∼γ[∥x−y∥]