交叉熵

https://blog.csdn.net/weixinhum/article/details/85065350

 

假设q(x)是用来拟合p(x)的概率分布,x属于p的样本空间,交叉熵用于衡量q在拟合p的过程中,用于消除不确定性而充分使用的信息量大小(理解为衡量q为了拟合p所付出的努力,另外注意交叉熵定义里的“充分使用”和信息熵定义里的“所需”的区别,“充分使用”不一定能达到全部,“所需”是指全部)。

由于在每一个点X=x处q的香农信息量为-logq(x),也就是在点X=x处,q消除不确定性而充分使用的信息量为-logq(x)(理解为衡量q在X=x处为了拟合p所作的努力),那么就可以计算出在整个样本空间上q消除不确定性而充分使用的总体信息量,即-logq(x)的数学期望,由于每个x的权重为p(x),因此交叉熵H(p,q)为:
---------------------

相对熵的公式如下:
DKL(p∥q)=∑Ni=1p(xi)logp(xi)−∑Ni=1p(xi)logq(xi) D _ { K L } ( p \| q ) = \sum _ { i = 1 } ^ { N }p \left( x _ { i } \right)\log p \left( x _ { i } \right)-\sum _ { i = 1 } ^ { N }p \left( x _ { i } \right)\log q \left( x _ { i } \right)
D
KL

(p∥q)=
i=1

N

p(x
i

)logp(x
i

)−
i=1

N

p(x
i

)logq(x
i

)

可以看到前面一项是真实事件的信息熵取反,我们可以直接写成
DKL(p∥q)=−H(p)−∑Ni=1p(xi)logq(xi) D _ { K L } ( p \| q ) = -H(p)-\sum _ { i = 1 } ^ { N }p \left( x _ { i } \right)\log q \left( x _ { i } \right)
D
KL

(p∥q)=−H(p)−
i=1

N

p(x
i

)logq(x
i

)

在神经网络训练中,我们要训练的是q(xi) q ( x _ { i })q(x
i

)使得其与真实事件的分布越接近越好,也就是说在神经网络的训练中,相对熵会变的部分只有后面的部分,我们希望它越小越好,而前面的那部分是不变的。因此我们可以把后面的部分单独取出来,那部分就是交叉熵,写作:
H(p,q)=−∑Ni=1p(xi)logq(xi) H(p,q) = -\sum _ { i = 1 } ^ { N }p \left( x _ { i } \right)\log q \left( x _ { i } \right)
H(p,q)=−
i=1

N

p(x
i

)logq(x
i

)

这就是我们经常在神经网络训练中看到的交叉熵损失函数。如果要了解它的内涵,要回头去看相对熵。
---------------------

 

posted on 2019-03-06 16:43  AI大道理  阅读(313)  评论(0编辑  收藏  举报

导航