zoukankan      html  css  js  c++  java
  • 交叉熵

    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 } ight)log p left( x _ { i } ight)-sum _ { i = 1 } ^ { N }p left( x _ { i } ight)log q left( x _ { i } ight)
    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 } ight)log q left( x _ { i } ight)
    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 } ight)log q left( x _ { i } ight)
    H(p,q)=−
    i=1

    N

    p(x
    i

    )logq(x
    i

    )

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

    萍水相逢逢萍水,浮萍之水水浮萍!
  • 相关阅读:
    团体程序设计天梯赛-练习集-L1-039. 古风排版
    团体程序设计天梯赛-练习集-L1-038. 新世界
    团体程序设计天梯赛-练习集-L1-037. A除以B
    团体程序设计天梯赛-练习集-L1-036. A乘以B
    团体程序设计天梯赛-练习集-L1-035. 情人节
    团体程序设计天梯赛-练习集-L1-034. 点赞
    团体程序设计天梯赛-练习集-L1-033. 出生年
    团体程序设计天梯赛-练习集-L1-032. Left-pad
    团体程序设计天梯赛-练习集-L1-031. 到底是不是太胖了
    团体程序设计天梯赛-练习集-L1-030. 一帮一
  • 原文地址:https://www.cnblogs.com/AIBigTruth/p/10484222.html
Copyright © 2011-2022 走看看