此文章为了解交叉熵的小记,具体详细讲解可移至文末处参考文章
信息熵
信息的本质:信息是用来消除随机不确定性的东西;
信息量的大小与信息发生的概率成反比。
概率越大,信息量越小。
概率越小,信息量越大。
某一事件发生的概率为P(x),其信息量I(x)为:
I
(
x
)
=
−
l
o
g
(
P
(
x
)
)
I(x) = -log(P(x))
I(x)=−log(P(x))
信息熵用来表示所有信息量的期望,其公式表示为
H
(
x
)
=
−
∑
i
=
1
n
P
(
x
i
)
l
o
g
(
P
(
x
i
)
)
)
(
X
=
x
1
,
x
2
,
x
3
.
.
.
,
x
n
)
H(x) = -\sum_{i=1}^nP(x_i)log(P(x_i)))\quad (X = x_1,x_2,x_3...,x_n)
H(x)=−i=1∑nP(xi)log(P(xi)))(X=x1,x2,x3...,xn)
其中X为离散型随机变量。
相对熵
针对一个随机变量拥有两个单独的概率分布P(x)和Q(x),利用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}^np(x_i)log\left (\frac{p(x_i)}{q(x_i)}\right)
DKL(p∣∣q)=i=1∑np(xi)log(q(xi)p(xi))
P(x)为真实分布,Q(x)为模型所预测的分布
KL散度越小,表示P(x)与Q(x)的分布更加接近,通过反复训练Q(x)使得Q(x)的分布逼近P(x)
交叉熵
KL散度的公式可做下列分解
D K L ( p ∣ ∣ q ) = ∑ i = 1 n p ( x i ) l o g ( p ( x i ) q ( x i ) ) = ∑ 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 ) ) ] D_{KL}(p||q) = \sum_{i=1}^np(x_i)log\left(\frac{p(x_i)}{q(x_i)}\right) \=\sum_{i=1}^np(x_i)log(p(x_i))-\sum_{i=1}^np(x_i)log(q(x_i)) \=-H(p(x))+\left[-\sum_{i=1}^np(x_i)log(q(x_i))\right] DKL(p∣∣q)=i=1∑np(xi)log(q(xi)p(xi))=i=1∑np(xi)log(p(xi))−i=1∑np(xi)log(q(xi))=−H(p(x))+[−i=1∑np(xi)log(q(xi))]
中括号中的式子为交叉熵,KL散度 = 交叉熵-信息熵
交叉熵公式为:
H
(
p
,
q
)
=
−
∑
i
=
1
n
p
(
x
i
)
l
o
g
(
q
(
x
i
)
)
H(p,q) = -\sum_{i=1}^np(x_i)log(q(x_i))
H(p,q)=−i=1∑np(xi)log(q(xi))
在机器学习训练网络时,输入数据与标签常常已经确定,那么真实概率分布P ( x )也就确定下来了,所以信息熵在这里就是一个常量。
由于KL散度的值表示真实概率分布P ( x ) 与预测概率分布Q ( x ) 之间的差异,值越小表示预测的结果越好,所以需要最小化KL散度,而交叉熵等于KL散度加上一个常量(信息熵),且公式相比KL散度更加容易计算,所以在机器学习中常常使用交叉熵损失函数来计算loss就行了。
总结:
-
交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。
交叉熵的值越小,模型预测效果就越好。
-
交叉熵在分类问题中常常与softmax是标配,softmax将输出的结果进行处理,使其多个分类的预测值和为1,再通过交叉熵来计算损失。
参考文章
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)