zoukankan      html  css  js  c++  java
  • KL散度=交叉熵-熵

    • 熵:可以表示一个事件A的自信息量,也就是A包含多少信息。
    • KL散度:可以用来表示从事件A的角度来看,事件B有多大不同。
    • 交叉熵:可以用来表示从事件A的角度来看,如何描述事件B。

    一种信息论的解释是:

    • 熵的意义是对A事件中的随机变量进行编码所需的最小字节数
    • KL散度的意义是“额外所需的编码长度”如果我们用B的编码来表示A
    • 交叉熵指的是当你用B作为密码本来表示A时所需要的“平均的编码长度”

    一、熵

    1.定义

    衡量一个事件所包含的信息量

    $$S(A)=-sum_i P_A(x_i)logP_A(x_i)$$

    二、交叉熵

    1.定义

    $$H(A,B)=-sum_iP_A(x_i)log(P_B(x_i))$$

    2.性质

    • 不对称性
    • cross主要是用于描述两个事件之间的相互关系,对自己求交叉熵等于熵。即$H(A,A)=S(A)$,注意只是非负而不一定等于0.

    三、KL散度

    1.定义

    又名“相对熵”,衡量两个事件/分布之间的不同

      KL散度由A自己的熵与B在A上的期望共同决定。当使用KL散度来衡量两个事件(连续或离散),上面的公式意义就是求 A与B之间的对数差 在 A上的期望值。

    2.性质

    • 如果$P_A=P_B$,即两个事件分布完全相同,那么KL散度等于0.
    • KL散度是不对称的
    • $D_{KL}(A||B)=-S(A)+H(A,B)$,如果$S(A)$是一个常量,那么$D_{KL}(A||B)=H(A,B)$,也就是说KL散度和交叉熵在特定条件下等级。

    3.KL散度 VS 交叉熵

    训练数据的分布A是给定的。那么根据我们在第四部分说的,因为A固定不变,那么求$D_{KL}(A||B)$  等价于求$H(A,B)$ ,也就是A与B的交叉熵。得证,交叉熵可以用于计算“学习模型的分布”与“训练数据分布”之间的不同。当交叉熵最低时(等于训练数据分布的熵),我们学到了“最好的模型”。

    参考文献:

    【1】KL散度 - 搜索结果 - 知乎

  • 相关阅读:
    Eclipse显示行号
    Eclipse中让Scala缩进变为4
    阿里云Maven仓库
    Eclipse格式化整个项目
    Spring拦截器
    Spring配置redis及使用
    Java加密数据库
    Eclipce远程调试
    服务器部署Java Web及微信开发调试
    基本MVC2模式创建新闻网站
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/11694985.html
Copyright © 2011-2022 走看看