目录
1. 信息熵
熵是一个信息论中的概念,表示随机变量不确定的度量,是对所有可能发生的事件产生的信息量的期望。信息熵公式如下:
H
(
p
)
=
−
∑
i
=
1
n
p
(
x
i
)
l
o
g
p
(
x
i
)
H(p)=-\sum_{i=1}^{n}{p(x_i)logp(x_i)}
H(p)=−i=1∑np(xi)logp(xi)
关于熵的详细解释可参考最大熵阈值分割法
2. 相对熵
相对熵又称KL散度,用于衡量对于同一个随机变量x的两个分布
p
(
x
)
p(x)
p(x)和
q
(
x
)
q(x)
q(x)之间的差异。
p
(
x
)
p(x)
p(x)表示样本真实分布,
q
(
x
)
q(x)
q(x)表示模型预测分布,模型训练就是不断让
q
(
x
)
q(x)
q(x)分布拟合分布
p
(
x
)
p(x)
p(x)。KL散度的值越小表示两个分布越接近。KL散度公式如下:
D
K
L
(
p
∣
∣
q
)
=
∑
i
=
1
n
p
(
x
i
)
l
o
g
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)
3. 交叉熵
将KL散度变形得到如下表达式:
D
K
L
(
p
∣
∣
q
)
=
∑
i
=
1
n
p
(
x
i
)
l
o
g
p
(
x
i
)
−
∑
i
=
1
n
p
(
x
i
)
l
o
g
q
(
x
i
)
=
−
H
(
p
(
x
)
)
+
[
−
∑
i
=
1
n
p
(
x
i
)
l
o
g
q
(
x
i
)
]
\begin{aligned} D_{KL}(p||q)&=\sum_{i=1}^{n}{p(x_i)logp(x_i)}-\sum_{i=1}^{n}{p(x_i)logq(x_i)} \\ &=-H(p(x))+[-\sum_{i=1}^{n}{p(x_i)logq(x_i)}] \end{aligned}
DKL(p∣∣q)=i=1∑np(xi)logp(xi)−i=1∑np(xi)logq(xi)=−H(p(x))+[−i=1∑np(xi)logq(xi)]
第一项就是
p
(
x
)
p(x)
p(x)的信息熵,第二项就是交叉熵cross entropy。我们常用KL散度来评估真实标签和预测标签的差别,由于KL散度第一项是个常量,所以直接将第二项的交叉熵作为损失函数也是一样的。
4. 交叉熵与softmax
分类问题中常用交叉熵作为模型的损失函数。样本标签 y 的值为1或者0可以看做是概率,而模型的输出是一个实数值,如何将这个实数值转换成概率呢?这就要用到 softmax 函数了(所以面试官会经常问为什么交叉熵要和 softmax 一起用)。假设模型输出为
y
1
,
y
2
,
.
.
.
,
y
n
y_1,y_2,...,y_n
y1,y2,...,yn,经过 softmax 后的输出为:
s
o
f
t
m
a
x
(
y
i
)
=
e
y
i
∑
j
=
1
n
e
y
i
softmax(y_i)=\frac{e^{y_i}}{\sum_{j=1}^{n}{e^{y_i}}}
softmax(yi)=∑j=1neyieyi
这样就把模型的输出也变成了一个概率分布,从而可以用交叉熵来计算预测值和真实值之间的距离了。