机器学习里面,经常会看到各种熵,特意在此简单总结下。
前言
信息熵是由香农1948年提出的用来定量描述信息量大小的概念。在机器学习中用来表示随机变量分布的混乱程度,分布越混乱,熵越大。
1.自信息
自信息表示某单一事件发生时所包含的信息量多少,大小和事件发生的概率有关,概率越大,自信息越小,计算公式如下:
I
(
p
i
)
=
−
l
o
g
(
p
i
)
I(p_i) =-log(p_i)
I(pi)=−log(pi)
p
i
p_i
pi表示事件发生的概率。
2.信息熵
自信息表示的是单一事件发生时包含的信息量,而信息熵表示的是整个随机分布平均信息量。由香农提出,所以也叫香农熵,计算公式如下:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲H(x)&=E_{x\sim …
这个公式实际计算的就是随机分布中每个自信息的加权和,表示的是随机分布的混乱程度,信息熵越大,分布越混乱。机器学习里面很多Loss的基于熵提出的。
3.条件熵
条件熵的定义是:在X给定条件下,Y的条件概率分布的熵对X的数学期望。计算公式如下:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲H(Y|X)&=E_{x\si…
条件熵可以这样理解:Y在条件
X
=
x
X=x
X=x下概率分布的熵
H
(
Y
∣
X
=
x
)
=
∑
j
=
1
m
p
(
y
∣
x
)
l
o
g
p
(
y
∣
x
)
H(Y|X=x)=\sum_{j=1}^mp(y|x)log~p(y|x)
H(Y∣X=x)=j=1∑mp(y∣x)log p(y∣x)
然后对X求数学期望
E
x
∼
p
[
H
∣
X
=
x
]
=
∑
i
=
1
n
p
(
x
)
H
(
Y
∣
X
=
x
)
E_{x\sim p}[H|X=x]=\sum_{i=1}^np(x)H(Y|X=x)
Ex∼p[H∣X=x]=i=1∑np(x)H(Y∣X=x)
如果对上面的条件熵公式进一步推导,可以得到:
H
(
X
∣
Y
)
=
H
(
X
,
Y
)
−
H
(
X
)
H(X|Y)=H(X,Y)-H(X)
H(X∣Y)=H(X,Y)−H(X)
即Y对X的条件熵等于X,Y的联合信息熵减去X的熵。
4.交叉熵
交叉熵的定义是:假如有随机分布p,q,p对q的交叉熵表示q分布的自信息对p分布的期望,计算公式如下:
H
(
p
,
q
)
=
E
x
∼
p
[
−
l
o
g
q
(
x
)
]
=
−
∑
i
=
1
n
p
(
x
)
l
o
g
q
(
x
)
H(p,q)=E_{x\sim p}[-log~q(x)]=-\sum_{i=1}^np(x)log~q(x)
H(p,q)=Ex∼p[−log q(x)]=−i=1∑np(x)log q(x)
其中,p表示真实分布,q表示预测分布,交叉熵在逻辑回归中有广泛的应用,下面给出二分类Sigmoid的损失函数:
J
(
θ
)
=
−
1
m
∑
i
=
1
m
(
y
i
l
o
g
h
θ
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
h
θ
(
x
i
)
)
)
J(\theta)=-\frac1m\sum_{i=1}^m(y_ilog~h_\theta(x_i)+(1-y_i)log~(1-h_\theta(x_i)))
J(θ)=−m1i=1∑m(yilog hθ(xi)+(1−yi)log (1−hθ(xi)))
另外,如果观察多分类Softmax逻辑回归的损失函数,会发现,Softmax就是Sigmoid在多分类上的推广。
5.相对熵
相对熵又称KL散度,用来表示两个概率分布的差异性,差异性越大,相对熵越大,当两者相等时熵为0,计算公式如下:KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲D_{KL}(p||q)&=E…
需要注意的是KL散度是非对称的,即
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)。对比相对熵和交叉熵会发现两者仅差一个
H
(
p
)
H(p)
H(p),所以当p是固定分布,
H
(
P
)
H(P)
H(P)为确定值的时候,KL散度和交叉熵并没有什么区别。
6.JS散度
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)
KL散度和JS散度有一个共同的问题:当两个分布p,q相距很远时,KL散度是没有意义的,而JS散度是一个常数,这时梯度为0,这在机器学习算法中是一个很致命的缺点。
7.互信息
互信息用来度量两个分布之间的距离,定义是:一个随机变量由于已知另一随机变量而减少的不确定性。计算公式如下:
KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲I(X,Y)&=\sum_{i…
这里只是列出一些常见的熵,在机器学习中还会经常看到为了满足特殊的要求,经常会提出一些奇奇怪怪的熵。