几个解释很好的链接
熵和交叉熵损失函数的详解
信息熵的详解及公式推导
熵
先来了解下什么是熵?
信息论中熵的概念首次被香农提出,目的是寻找一种高效/无损地编码信息的方法:以编码后数据的平均长度来衡量高效性,平均长度越小越高效;同时还需满足“无损”的条件,即编码后不能有原始信息的丢失。这样,香农提出了熵的定义:无损编码事件信息的最小平均编码长度。
信息熵
信息量:信息的度量,也就是用来度量一个信息的多少,其值与具体发生的事件有关。
信息的大小跟随机事件的概率有关。
越小概率的事情发生了产生的信息量越大,如湖南产生的地震了;
越大概率的事情发生了产生的信息量越小,如太阳从东边升起来了。
引出信息熵
信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望——考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。
信息熵的公式
可以把信息熵理解为是求
log
2
p
\log_2{p}
log2p的期望值,即:
H
(
X
)
=
E
x
∽
P
[
−
log
x
]
=
−
∑
i
=
1
n
p
(
x
i
)
log
p
(
x
i
)
H(X) = \mathbb{E}_{x \backsim {P}}[-\log{x}] = -\sum_{i=1}^{n}p(x_i) \log{p(x_i)}
H(X)=Ex∽P[−logx]=−i=1∑np(xi)logp(xi)
上面公式是编码长度计算公式,也是信息熵。
举个例子:
有四种天气,分别对应四种编码,直接计算出熵:
熵 = 1 * 50% + 2 * 25% + 3 * 12.5% + 3 * 12.5% = 1.75
相对熵(KL散度)
KL散度(Kullback-Leibler divergence)也叫做相对熵。
若随机变量X有两个单独的概率分布p(x)和p(x),可以用相对熵来衡量这个个分布的差异,
相对熵定义如下:
D
K
L
(
P
∣
∣
Q
)
=
∑
i
=
1
n
P
(
x
i
)
log
P
(
x
i
)
Q
(
x
i
)
D_{KL}(P||Q) = \sum^n_{i=1}P(x_i)\log{\frac{P(x_i)}{Q(x_i)}}
DKL(P∣∣Q)=i=1∑nP(xi)logQ(xi)P(xi)
1、相对熵是非负的,它的大小可以用来衡量两个分布之间的差异,当且仅当P和Q具有完全相同的分布时,相对熵取值为0。
2、相对熵并不是对称的,对于某些P和Q,
D
K
L
(
P
∣
∣
Q
)
≠
D
K
L
(
Q
∣
∣
P
)
D_{KL}(P||Q)\neq D_{KL}(Q||P)
DKL(P∣∣Q)=DKL(Q∣∣P)
交叉熵
交叉熵使用
H
(
P
,
Q
)
H(P,Q)
H(P,Q)表示,意味使用P计算期望,使用Q计算编码长度
交叉熵计算公式:
H
(
P
,
Q
)
=
E
x
∽
P
[
−
log
Q
(
x
)
]
H(P,Q) = \mathbb{E}_{x\backsim{P}}[-\log{Q(x)}]
H(P,Q)=Ex∽P[−logQ(x)]
交叉熵作为损失函数
举个例子,假设一个动物照片的数据集中有5种动物,且每张照片中只有一只动物,每张照片的标签都是one-hot编码。
第一张照片是狗的概率是100%,其他动物概率为0,其余图片一样。
假设两个机器学习模型对第一张图片做出预测:Q1和Q2,而是一张照片的真是标签为[1,0,0,0,0]。
分别计算下交叉熵:
交叉熵的值越小,预测的越精确,可以看出模型Q2预测的更好。