前言
最近在多处看到熵的概念,之前零散的了解了一下,最近总结下,加深一下理解。
熵
熵是信息论中的一个概念,用于衡量一个随机变量的不确定性,公式很简单: l o g ( 1 / p ( x ) ) log(1/p(x)) log(1/p(x)),其中 p ( x ) p(x) p(x)为x的概率分布(离散)或者概率密度(连续)函数,公式很直观,概率越小熵越大,即信息量越大。
信息熵
信息熵为熵的期望,用于衡量一个分布的不确定性,以下为离散变量概率分布下的计算公式:
H
(
p
)
=
∑
i
p
(
i
)
l
o
g
(
1
/
p
(
i
)
)
=
−
∑
i
p
(
i
)
l
o
g
p
(
i
)
H(p)=\sum_i p(i)log(1/p(i))=-\sum_i p(i)logp(i)
H(p)=i∑p(i)log(1/p(i))=−i∑p(i)logp(i)
基本可以看出,当一个随机变量分布越散,信息熵越大,而分布越集中,信息熵越小,离散分布和连续分布类似,这里不多做讨论。
交叉熵
假设我们知道某个分布的真实概率分布
p
(
x
)
p(x)
p(x)(机器学习中的标签)和一个预测概率分布
q
(
x
)
q(x)
q(x)(模型预测概率),交叉熵公式为:
H
(
p
,
q
)
=
∑
i
p
(
i
)
l
o
g
(
1
/
q
(
i
)
)
=
−
∑
i
p
(
i
)
l
o
g
q
(
i
)
H(p,q)=\sum_i p(i)log(1/q(i))=-\sum_i p(i)logq(i)
H(p,q)=i∑p(i)log(1/q(i))=−i∑p(i)logq(i)
前面讲到信息熵用于衡量一个分布的不确定性,个人理解交叉熵是以预测概率分布来衡量该真实分布的不确定性,因此交叉熵与信息熵是存在误差的,且预测概率分布与真实分布差距越大,这种误差就越大,因此引入相对熵来衡量这种误差。
相对熵(KL散度)
先上公式:
D
(
p
∣
∣
q
)
=
H
(
p
,
q
)
−
H
(
p
)
=
∑
i
p
(
i
)
l
o
g
p
(
i
)
q
(
i
)
D(p||q)=H(p,q)-H(p)=\sum_i p(i)log\frac {p(i)}{q(i)} \\
D(p∣∣q)=H(p,q)−H(p)=i∑p(i)logq(i)p(i)
顺带提一句,深度学习中经常使用交叉熵作为损失函数,实际上使用的是相对熵,只有相对熵才能衡量两个分布的差异,而在深度学习中,使用的训练集标签往往是完全确定的,例如分类车,当给定一张车的图片,可以将其认定为一个0-1分布:
P
(
y
)
=
{
1
,
y
=
1
,
0
,
y
=
0.
P(y)=\left\{ \begin{aligned} 1, y=1, \\ 0, y=0. \\ \end{aligned} \right.
P(y)={1,y=1,0,y=0.
车的标签是车,因此
y
=
1
y=1
y=1概率为1,因此其信息熵为
1
∗
l
o
g
1
=
0
1*log1=0
1∗log1=0,此时相对熵等于交叉熵。
参考信息熵,交叉熵和相对熵。