zoukankan      html  css  js  c++  java
  • 浅谈KL散度

    浅谈KL散度

    一、总结

    一句话总结:

    (a)、相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence),信息增益(information gain)。
    (b)、KL散度是两个概率分布P和Q差别的非对称性的度量。
    (c)、KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的比特个数。 典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。

    1、相对熵的应用?

    1)、相对熵可以衡量两个随机分布之间的距离,当两个随机分布相同时,它们的相对熵为零,当两个随机分布的差别增大时,它们的相对熵也会增大。
    2)、所以相对熵(KL散度)可以用于比较文本的相似度,先统计出词的频率,然后计算KL散度就行了。
    3)、另外,在多指标系统评估中,指标权重分配是一个重点和难点,通过相对熵可以处理。

    二、浅谈KL散度

    转自或参考:浅谈KL散度
    https://www.cnblogs.com/hxsyl/p/4910218.html

    一、第一种理解  

      相对熵(relative entropy)又称为KL散度(Kullback–Leibler divergence,简称KLD),信息散度(information divergence),信息增益(information gain)。 
      KL散度是两个概率分布P和Q差别的非对称性的度量。

          KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的比特个数。 典型情况下,P表示数据的真实分布,Q表示数据的理论分布,模型分布,或P的近似分布。

      根据shannon的信息论,给定一个字符集的概率分布,我们可以设计一种编码,使得表示该字符集组成的字符串平均需要的比特数最少。假设这个字符集是X,对x∈X,其出现概率为P(x),那么其最优编码平均需要的比特数等于这个字符集的熵:

      H(X)=∑x∈XP(x)log[1/P(x)]

      在同样的字符集上,假设存在另一个概率分布Q(X)。如果用概率分布P(X)的最优编码(即字符x的编码长度等于log[1/P(x)]),来为符合分布Q(X)的字符编码,那么表示这些字符就会比理想情况多用一些比特数。KL-divergence就是用来衡量这种情况下平均每个字符多用的比特数,因此可以用来衡量两个分布的距离。即:

      DKL(Q||P)=∑x∈XQ(x)[log(1/P(x))] - ∑x∈XQ(x)[log[1/Q(x)]]=∑x∈XQ(x)log[Q(x)/P(x)]

      由于-log(u)是凸函数,因此有下面的不等式

      DKL(Q||P) = -∑x∈XQ(x)log[P(x)/Q(x)] = E[-logP(x)/Q(x)] ≥ -logE[P(x)/Q(x)] = -  log∑x∈XQ(x)P(x)/Q(x) = 0

      即KL-divergence始终是大于等于0的。当且仅当两分布相同时,KL-divergence等于0。

      ===========================

      举一个实际的例子吧:比如有四个类别,一个方法A得到四个类别的概率分别是0.1,0.2,0.3,0.4。另一种方法B(或者说是事实情况)是得到四个类别的概率分别是0.4,0.3,0.2,0.1,那么这两个分布的KL-Distance(A,B)=0.1*log(0.1/0.4)+0.2*log(0.2/0.3)+0.3*log(0.3/0.2)+0.4*log(0.4/0.1)

      这个里面有正的,有负的,可以证明KL-Distance()>=0.

      从上面可以看出, KL散度是不对称的。即KL-Distance(A,B)!=KL-Distance(B,A)

      KL散度是不对称的,当然,如果希望把它变对称,

      Ds(p1, p2) = [D(p1, p2) + D(p2, p1)] / 2.

    二、第二种理解

      今天开始来讲相对熵,我们知道信息熵反应了一个系统的有序化程度,一个系统越是有序,那么它的信息熵就越低,反之就越高。下面是熵的定义

       如果一个随机变量的可能取值为,对应的概率为,则随机变的熵定义为

                

      有了信息熵的定义,接下来开始学习相对熵。

      1. 相对熵的认识

       相对熵又称互熵,交叉熵,鉴别信息,Kullback熵,Kullback-Leible散度(即KL散度)等。设

       是取值的两个概率概率分布,则的相对熵为          

       在一定程度上,熵可以度量两个随机变量的距离。KL散度是两个概率分布P和Q差别的非对称性的度量。KL散度是

       用来度量使用基于Q的编码来编码来自P的样本平均所需的额外的位元数。 典型情况下,P表示数据的真实分布,Q

       表示数据的理论分布,模型分布,或P的近似分布。

    2. 相对熵的性质

       相对熵(KL散度)有两个主要的性质。如下

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

           

       (2)相对熵的值为非负值,即

           

           在证明之前,需要认识一个重要的不等式,叫做吉布斯不等式。内容如下

      3. 相对熵的应用

       相对熵可以衡量两个随机分布之间的距离,当两个随机分布相同时,它们的相对熵为零,当两个随机分布的差别增

       大时,它们的相对熵也会增大。所以相对熵(KL散度)可以用于比较文本的相似度,先统计出词的频率,然后计算

       KL散度就行了。另外,在多指标系统评估中,指标权重分配是一个重点和难点,通过相对熵可以处理。

    三、用在CF中

      第一,KLD需要概率(脸颊和1),但是用评分。

      第二,后面两项的作用。

     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    bash:express:command not found
    Jquery的window.onload实现
    元素的class和id问题
    安装angular-cli
    [(ngModel)]的实现原理
    bodyparser
    git push不用重复输入用户名和密码(解决方案)
    git提交项目到已存在的远程分支
    angular的$filter服务
    网站上如何添加显示favicon
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13475220.html
Copyright © 2011-2022 走看看