任何事件都会承载一定的信息,事件发生的概率越大,其含有的信息量越少,事件发生的概率越小,其含有的信息量越多。比如昨天下雨了,是一个既定的事实,所以其信息量为0,天气预报说明天会下雨,是一个概率事件,其信息量相对较大。
假设
X
X
X是一个离散型随机变量,
p
(
X
=
x
0
)
p(X=x_0)
p(X=x0)表示随机变量取值为
x
0
x_0
x0的概率,那么
X
=
x
0
X=x_0
X=x0的信息量的计算公式:
I
(
x
0
)
=
−
log
(
p
(
x
0
)
)
I(x_0) = -\log(p(x_0))
I(x0)=−log(p(x0))
熵描述的是随机变量不确定性的程度。
如果某些事件出现的概率非常高,说明有较高的信心说明这些事情会发生,但如果每个事件发生的概率都比较平均,说明对每个事件的发生与否没有信心。比如四个事件的发生概率为 ( 0.97 , 0.1 , 0.1 , 0.1 ) (0.97, 0.1, 0.1, 0.1) (0.97,0.1,0.1,0.1),此时熵较低,因为第一个事件发生的概率非常高,而如果四个事件发生的概率为 ( 0.24 , 0.26 , 0.25 , 0.25 ) (0.24, 0.26, 0.25, 0.25) (0.24,0.26,0.25,0.25),这四个事件发生的概率都差不多,此时熵较高,不能够有很高的自信说明哪个事件会发生。
假设随机变量
X
X
X有
n
n
n个取值,
X
X
X取值为
x
i
x_i
xi时的概率为
p
(
x
i
)
p(x_i)
p(xi),计算公式为:
H
(
X
)
=
−
∑
i
=
0
n
p
(
x
i
)
log
(
p
(
x
i
)
)
H(X) = -\sum_{i=0}^{n}p(x_i)\log(p(x_i))
H(X)=−i=0∑np(xi)log(p(xi))
相对熵用于描述同一个变量在两个独立的概率分布之间的差异。
假设 P P P表示真实分布, Q Q Q表示模型通过学习得到的预测分布,也称拟合分布。那么用 K L KL KL散度定义两个分布之间的差异:
P
P
P相对于
Q
Q
Q称为前向散度(常用于机器学习领域):
D
K
L
(
p
∣
∣
q
)
=
E
p
(
log
(
p
q
)
)
=
∑
i
=
0
n
p
(
x
i
)
log
(
p
(
x
i
)
q
(
x
i
)
)
D_{KL}(p||q) = E_p(\log(\frac{p}{q})) =\sum_{i=0}^n p(x_i) \log(\frac{p(x_i)}{q(x_i)})
DKL(p∣∣q)=Ep(log(qp))=i=0∑np(xi)log(q(xi)p(xi))
Q
Q
Q相对于
P
P
P称为反向散度(常用于强化学习邻域):
D
K
L
(
q
∣
∣
p
)
=
E
q
(
log
(
q
p
)
)
=
∑
i
=
0
n
q
(
x
i
)
log
(
q
(
x
i
)
p
(
x
i
)
)
D_{KL}(q||p) = E_q(\log(\frac{q}{p})) =\sum_{i=0}^n q(x_i) \log(\frac{q(x_i)}{p(x_i)})
DKL(q∣∣p)=Eq(log(pq))=i=0∑nq(xi)log(p(xi)q(xi))
注意:上述公式,分子是哪个分布,计算KL散度参考的就是哪个分布,比如前向散度中, P P P就是参考分布,也称真实分布,而 Q Q Q就是近似分布,也称理论分布。在计算KL散度时,使用的是基于参考分布中的随机变量,也就是在计算时,我们使用的是参考分布中每个随机变量的概率值,以及近似分布中相应变量的概率值,
当分布 Q Q Q和分布 P P P越接近,说明这两个分布越相似,那么 K L KL KL散度值越小。
由于通常情况下, 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散度不满足对称性。同时也不满足三角不等式。
对
K
L
KL
KL散度公式变形:
D
K
L
(
p
∣
∣
q
)
=
∑
i
=
0
n
p
(
x
i
)
log
(
p
(
x
i
)
)
−
∑
i
=
0
n
p
(
x
i
)
log
(
q
(
x
i
)
)
D_{KL}(p||q) = \sum_{i=0}^np(x_i)\log(p(x_i)) - \sum_{i=0}^np(x_i)\log(q(x_i))
DKL(p∣∣q)=i=0∑np(xi)log(p(xi))−i=0∑np(xi)log(q(xi))
上面等式中的 − ∑ i = 0 n p ( x i ) log ( q ( x i ) ) - \sum_{i=0}^np(x_i)\log(q(x_i)) −∑i=0np(xi)log(q(xi))就是交叉熵 H ( p , q ) H(p,q) H(p,q)
而
P
P
P的熵为:
H
(
p
)
=
−
∑
i
=
0
n
p
(
x
i
)
log
(
p
(
x
i
)
)
H(p) = -\sum_{i=0}^np(x_i)\log(p(x_i))
H(p)=−i=0∑np(xi)log(p(xi))
如果真实分布
P
P
P不变,那么
H
(
p
)
H(p)
H(p)就是一个常数,所以在训练模型时,我们只需要关注交叉熵,最小化交叉熵的值。
H
(
p
,
q
)
=
−
∑
i
=
0
n
p
(
x
i
)
log
(
q
(
x
i
)
)
H(p,q) =- \sum_{i=0}^np(x_i)\log(q(x_i))
H(p,q)=−i=0∑np(xi)log(q(xi))
JS散度描述的是两个分布的相似程度。
对于概率分布
P
P
P和
Q
Q
Q,js散度的计算公式如下:
J
S
(
P
∣
∣
Q
)
=
1
2
D
K
L
(
P
∣
∣
M
)
+
1
2
D
K
L
(
Q
∣
∣
M
)
JS(P||Q) = \frac{1}{2}D_{KL}(P||M) + \frac{1}{2}D_{KL}(Q||M)
JS(P∣∣Q)=21DKL(P∣∣M)+21DKL(Q∣∣M)
其中 M M M是 P P P和 Q Q Q的平均分布。平均分布的计算过程如下:
对于同一个事件
i
i
i,假设事件
i
i
i在
P
P
P中发生的概率为
P
(
i
)
P(i)
P(i),在
Q
Q
Q中发生的概率为
Q
(
i
)
Q(i)
Q(i),那么事件
i
i
i在
M
M
M中发生的概率为:
M
(
i
)
=
P
(
i
)
+
Q
(
i
)
2
M(i) = \frac{P(i) + Q(i)}{2}
M(i)=2P(i)+Q(i)
注意:当两个分布不存在重叠部分时,计算它们的平均分布没有意义,因为事件 i i i在 P P P中发生,在 Q Q Q中却不发生。这里说的重叠是指 P P P和 Q Q Q的支撑集不相交,简单来说,就是 P P P和 Q Q Q的随机变量的取值集合没有交集。
如果 P P P和 Q Q Q的分布不重叠,那么计算得到的JS散度是一个常数。(个人解释如下,不完全正确,仅供参考)
当两个分布不重叠时,计算 K L KL KL散度是无意义的,因为在 P P P中出现的事件 i i i,在 Q Q Q中不会出现,即 q ( x i ) = 0 q(x_i) = 0 q(xi)=0,而在计算 K L KL KL散度的公式中, D K L ( p ∣ ∣ q ) = ∑ i = 0 n p ( x i ) log ( p ( x i ) q ( x i ) ) D_{KL}(p||q) =\sum_{i=0}^n p(x_i) \log(\frac{p(x_i)}{q(x_i)}) DKL(p∣∣q)=∑i=0np(xi)log(q(xi)p(xi)), q ( x i ) q(x_i) q(xi)是分母,所以此时 K L KL KL散度无意义。
Wasserstein距离用于描述两个分布之间的距离。
分布
P
P
P和
Q
Q
Q的Wasserstein距离定义如下:
W
(
P
,
Q
)
=
i
n
f
γ
∼
Γ
(
P
,
Q
)
E
(
X
,
Y
)
∼
γ
(
∣
∣
X
−
Y
∣
∣
)
W(P, Q) = inf_{\gamma \sim \Gamma(P, Q) } E_{(X, Y) \sim \gamma}(||X-Y||)
W(P,Q)=infγ∼Γ(P,Q)E(X,Y)∼γ(∣∣X−Y∣∣)
Reference:https://zhuanlan.zhihu.com/p/74075915