博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KL散度
阅读量:4342 次
发布时间:2019-06-07

本文共 1558 字,大约阅读时间需要 5 分钟。

from http://blog.csdn.net/ericcchen/article/details/72357411

KL散度( KL divergence)

全称:Kullback-Leibler Divergence

用途:比较两个概率分布的接近程度
在统计应用中,我们经常需要用一个简单的,近似的概率分布 ff∗ 来描述
观察数据 DD 或者另一个复杂的概率分布 ff 。这个时候,我们需要一个量来衡量我们选择的近似分布 ff∗ 相比原分布 ff 究竟损失了多少信息量,这就是KL散度起作用的地方。

熵(entropy

想要考察 信息量 的损失,就要先确定一个描述信息量的量纲。

在信息论这门学科中,一个很重要的目标就是量化描述数据中含有多少信息。
为此,提出了 的概念,记作 HH
一个概率分布所对应的 熵 表达如下:

 
H=i=1Np(xi)logp(xi)H=−∑i=1Np(xi)⋅log⁡p(xi)

如果我们使用 log2log⁡2 作为底,熵可以被理解为:我们编码所有信息所需要的最小位数(minimum numbers of bits)
需要注意的是:通过计算熵,我们可以知道信息编码需要的最小位数,却不能确定最佳的数据压缩策略。怎样选择最优数据压缩策略,使得数据存储位数与熵计算的位数相同,达到最优压缩,是另一个庞大的课题。

 

KL散度的计算

现在,我们能够量化数据中的信息量了,就可以来衡量近似分布带来的信息损失了。

KL散度的计算公式其实是熵计算公式的简单变形,在原有概率分布 pp 上,加入我们的近似概率分布 qq ,计算他们的每个取值对应对数的差:

 
DKL(p||q)=i=1Np(xi)(logp(xi)logq(xi))DKL(p||q)=∑i=1Np(xi)⋅(log⁡p(xi)−log⁡q(xi))

换句话说,KL散度计算的就是数据的原分布与近似分布的概率的对数差的期望值。
在对数以2为底时,log2log⁡2 ,可以理解为“我们损失了多少位的信息”
写成期望形式

 
DKL(p||q)=E[logp(x)log(q(x)]DKL(p||q)=E[log⁡p(x)−log⁡(q(x)]

更常见的是以下形式:

 
DKL(p||q)=i=1Np(xi)logp(xiq(xi)DKL(p||q)=∑i=1Np(xi)⋅log⁡p(xi)q(xi)

现在,我们就可以使用KL散度衡量我们选择的近似分布与数据原分布有多大差异了。

 

散度不是距离

 

 
DKL(p||q)DKL(q||p)DKL(p||q)≠DKL(q||p)

因为KL散度不具有交换性,所以不能理解为“距离”的概念,衡量的并不是两个分布在空间中的远近,更准确的理解还是衡量一个分布相比另一个分布的信息损失(infomation lost)

 

使用KL散度进行优化

通过不断改变预估分布的参数,我们可以得到不同的KL散度的值。

在某个变化范围内,KL散度取到最小值的时候,对应的参数是我们想要的最优参数。
这就是使用KL散度优化的过程。

VAE(变分自动编码)

神经网络进行的工作很大程度上就是“函数的近似”(function approximators)

所以我们可以使用神经网络学习很多复杂函数,学习过程的关键就是设定一个目标函数来衡量学习效果。
也就是通过最小化目标函数的损失来训练网络(minimizing the loss of the objective function)
使用KL散度来最小化我们近似分布时的信息损失,让我们的网络可以学习很多复杂分布。
一个典型应用是VAE

转载于:https://www.cnblogs.com/mdumpling/p/8607495.html

你可能感兴趣的文章
读《人月神话》随笔之三
查看>>
第四次作业
查看>>
java基础之JDBC三:简单工具类的提取及应用
查看>>
url和uri的区别
查看>>
JS 变量、作用域和内存问题
查看>>
安装包设计-------卸载(MFC)---------知识总结
查看>>
ME525+刷机2.3.6版本过程分享
查看>>
checkbox的readonly不起作用的解决方案
查看>>
[MySQL优化] -- 如何定位效率较低的SQL
查看>>
将.mat文件保存到.txt不带有科学计数法e-0
查看>>
hdu 2065
查看>>
android Log.isLoggable步骤的使用
查看>>
java.lang.String中subString和indexOf的方法使用
查看>>
设计师用的几个网站
查看>>
狗书(flask基础)
查看>>
【winfrom】委托Lambda
查看>>
134. Gas Station java solutions
查看>>
Ant之build.xml详解
查看>>
Linux课程笔记 NFS
查看>>
【软件】【diamond】-管脚分配
查看>>