熵(Entropy)
维基百科Entropy(information theory).
定义:Information entropy is the average rate at which information is produced by a stochastic source of data.
在信息论中,熵(entropy)是接收的每条消息中包含的信息的平均量,又被称为信息熵等。这里,“消息”代表来自分布或数据流中的事件、样本或特征。(熵最好理解为不确定性的量度而不是确定性的量度,因为越随机的信源的熵越大。)来自信源的另一个特征是样本的概率分布。这里的想法是,比较不可能发生的事情,当它发生了,会提供更多的信息。
事件的概率分布和每个事件的信息量构成了一个随机变量,这个随机变量的均值(即期望),就是这个分布产生的信息量的平均值(即熵)。有点绕,先从最基础的信息量来看。
信息量
- 事件 P,“我刚吃完晚饭”,太平淡无奇,听的人只想回一句赶紧洗洗睡
- 事件 Q,“我刚中了一等奖”,这个信息量就有点大了,听的人会好奇是大乐透还是双色球
越可能发生的事件 P,包含的信息量越小,越不可能发生的事件 Q,但是发生了,信息量越大。
假设
X
X
X 是一个离散型随机变量,其取值集合为
χ
\chi
χ ,概率分布函数
p
(
x
)
=
P
r
(
X
=
x
)
,
x
∈
χ
p(x)=Pr(X=x),x\in\chi
p(x)=Pr(X=x),x∈χ ,则定义事件
X
=
x
i
X=x_i
X=xi 的信息量为:
I
(
x
i
)
=
−
l
o
g
(
p
(
x
i
)
)
I(x_i)=-log(p(x_i))
I(xi)=−log(p(xi))
由于是概率所以 p(x_i) 的取值范围是[0,1],而且 p(x_i) 的概率越大,表示越可能发生 X=x_i 这个事件,信息量小。
熵的数学定义
信息论中,而熵用来表示所有信息量的期望,即:
H
(
x
)
=
−
∑
i
P
(
x
i
)
l
o
g
b
P
(
x
i
)
=
E
(
P
)
H(x)=-\sum_{i}P(x_{i})log_{b}P(x_{i})=E(P)
H(x)=−i∑P(xi)logbP(xi)=E(P)
如何衡量两个事件、分布的不同:KL散度
相对熵(relative entropy)又称为KL散度,是两个概率分布 P 和 Q 差别的非对称性的度量。典型情况下,P表示数据的真实分布,Q 表示数据的理论分布,或者模型分布。例如机器学习中的模型,P 表示训练集数据分布,Q 则表示训练好的模型预测的数据分布。
对于离散的随机变量,其概率分布 P 和 Q 的 KL 散度可定义为:
D
K
L
(
P
∣
∣
Q
)
=
∑
i
P
(
i
)
l
n
(
P
(
i
)
Q
(
i
)
)
=
∑
i
P
(
i
)
l
n
(
P
(
i
)
)
−
P
(
i
)
l
n
(
Q
(
i
)
)
=
H
(
P
,
Q
)
−
H
(
P
)
D_{KL}(P||Q) = \sum_{i}P(i) ln\bigg(\frac{P(i)}{Q(i)} \bigg) = \sum_{i}P(i)ln(P(i))- P(i)ln(Q(i))=H(P,Q)-H(P)
DKL(P∣∣Q)=i∑P(i)ln(Q(i)P(i))=i∑P(i)ln(P(i))−P(i)ln(Q(i))=H(P,Q)−H(P)
对于连续的随机变量,其概率分布 P 和 Q 的 KL 散度可定义为,p,q 表示概率密度:
D
K
L
(
P
∣
∣
Q
)
=
∫
p
(
x
)
l
n
(
p
(
x
)
q
(
x
)
)
=
∫
[
p
(
x
)
l
n
p
(
x
)
−
p
(
x
)
l
n
q
(
x
)
]
D_{KL}(P||Q) = \int p(x) ln\bigg(\frac{p(x)}{q(x)} \bigg)=\int [p(x)lnp(x)-p(x)lnq(x)]
DKL(P∣∣Q)=∫p(x)ln(q(x)p(x))=∫[p(x)lnp(x)−p(x)lnq(x)]
以离散的为例,
−
∑
i
P
(
i
)
l
n
P
(
i
)
,
实
际
表
示
P
的
熵
H
(
P
)
-\sum_{i}P(i)lnP(i),实际表示 P 的熵H(P)
−i∑P(i)lnP(i),实际表示P的熵H(P)
− ∑ i P ( i ) l n Q ( i ) , 实 际 表 示 P , Q 的 交 叉 熵 H ( P , Q ) -\sum_{i}P(i)lnQ(i),实际表示 P,Q的交叉熵H(P,Q) −i∑P(i)lnQ(i),实际表示P,Q的交叉熵H(P,Q)
那么实际有,KL 散度 = 交叉熵 - 熵。
为何交叉熵可用于代价函数
机器学习的过程的最终目的是,模型学习到的分布Q,尽可能的接近真实数据的分布 R,我们无法收集所有的真实数据,训练集的数据分布 P 在一定意义程度上近似真实数据分布 R,因此,我们希望模型学习到的分布 Q 尽可能的接近训练集数据分布 P.
上文中已经描述了用 KL 散度衡量两个分布的不同,那么要使得模型学习到的分布 Q 尽可能接近训练集数据分布 P,那么就是要最小化二者的 KL 散度,而交叉熵可以表示为
H
(
P
,
Q
)
=
D
K
L
(
P
∣
∣
Q
)
+
H
(
P
)
H(P,Q)=D_{KL}(P||Q)+H(P)
H(P,Q)=DKL(P∣∣Q)+H(P)
其中 H§ 表示训练集的熵,因此是已知的常数,因此 交叉熵 = KL散度 + 常数,最小化 KL 散度可等效于最小化交叉熵。
参考:
微调. 为什么交叉熵(cross-entropy)可以用于计算代价?https://www.zhihu.com/question/65288314/answer/244557337>.