• KL散度、JS散度和交叉熵


    KL散度、JS散度和交叉熵三者都是用来衡量两个概率分布之间的差异性的指标

    1. KL散度

    KL散度又称为相对熵,信息散度,信息增益。KL散度是是两个概率分布 P 和 Q (概率分布P(x)和Q(x))  之间差别的非对称性的度量。 KL散度是用来 度量使用基于 Q 的编码来编码来自 P 的样本平均所需的额外的位元数。 典型情况下,P 表示数据的真实分布,Q 表示数据的理论分布,模型分布,或 P 的近似分布

    定义如下:

    因为对数函数是凸函数,所以KL散度的值为非负数

    当P(x)和Q(x)的相似度越高,KL散度越小

    KL散度主要有两个性质:

    (1)不对称性

    尽管KL散度从直观上是个度量或距离函数,但它并不是一个真正的度量或者距离,因为它不具有对称性,即D(P||Q)!=D(Q||P)

    (2)非负性

    相对熵的值是非负值,即D(P||Q)>0

    2.JS散度(Jensen-Shannon divergence)

    JS散度度量了两个概率分布的相似度,基于KL散度的变体,解决了KL散度非对称的问题。一般地,JS散度是对称的,其取值是 0 到 1 之间。定义如下:

    但是不同于KL主要又两方面:

    (1)值域范围

    JS散度的值域范围是[0,1],相同则是0,相反为1。相较于KL,对相似度的判别更确切了。

    (2)对称性

    即 JS(P||Q)=JS(Q||P),从数学表达式中就可以看出

    KL散度和JS散度度量的时候有一个问题:

    如果两个分配 P,QP,Q 离得很远,完全没有重叠的时候,那么KL散度值是没有意义的,而JS散度值是一个常数。这在学习算法中是比较致命的,这就意味这这一点的梯度为 00。梯度消失了

    3.交叉熵(Cross Entropy)

    在神经网络中,交叉熵可以作为损失函数,因为它可以衡量P和Q的相似性

    交叉熵和相对熵的关系

     以上都是基于离散分布的概率,如果是连续的数据,则需要对数据进行Probability Density Estimate来确定数据的概率分布,就不是求和而是通过求积分的形式进行计算了

     

  • 相关阅读:
    Scala伴生对象
    Python之随机森林实战
    DevOps 发展融合运维可视化
    为什么选用 React 创建混合型移动应用?
    查找并修复Android中的内存泄露—OutOfMemoryError
    精华阅读第 12 期 | 最新 App Store 审核指南与10大被拒理由?
    Python 应用剖析工具介绍
    的确,Java存在缺陷。但是……
    APM终端用户体验监控分析(下)
    ASP.NET MVC 应用提速的十种方法
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/14062640.html
Copyright © 2020-2023  润新知