正向KL散度与反向KL散度
KL散度的公式是
KL[p(x)∣∣q(x)]=∫xp(x)logp(x)q(x)dxKL[p(x)||q(x)] = \int_{x}p(x)log{p(x) \over q(x)}dx KL[p(x)∣∣q(x)]=∫xp(x)logq(x)p(x)dx
假设真实分布为p(x)p(x)p(x),我们想用分布q(x)q(x)q(x)去近似p(x)p(x)p(x),我们很容易想到用最小化KL散度来求,但由于KL散度是不对称的,所以并不是真正意义上的距离,那么我们是应该用KL[p∣∣q]KL[p||q]KL[p∣∣q]还是用KL[q∣∣p]KL[q||p]KL[q∣∣p]?
下面就来分析这两种情况:
正向KL散度: KL[p∣∣q]KL[p||q]KL[p∣∣q]
KL[p∣∣q]KL[p||q]KL[p∣∣q]被称为正向KL散度,其形式为:
q^=argminq∫xp(x)logp(x)q(x)dx(1)\tag{1} \hat{q} = argmin_{q} \int_{x}p(x)log{p(x) \over q(x)}dx q^=argminq∫xp(x)logq(x)p(x)dx(1)
仔细观察(1)式,p(x)p(x)p(x)是已知的真实分布,要求使上式最小的q(x)q(x)q(x)。
考虑当p(x)=0p(x)=0p(x)=0时,这时q(x)q(x)q(x)取任何值都可以,因为logp(x)q(x)log{p(x) \over q(x)}logq(x)p(x)这一项对整体的KL散度没有影响。当p(x)>0p(x)>0p(x)>0时,logp(x)q(x)log{p(x) \over q(x)}logq(x)p(x)这一项对整体的KL散度就会产生影响,为了使(1)式最小,q(x)q(x)q(x)又处于logp(x)q(x)log{p(x) \over q(x)}logq(x)p(x)中分母的位置,所以q(x)q(x)q(x)尽量大一些才好。
总体而言,对于正向 KL 散度,在p(x)p(x)p(x)大的地方,想让 KL 散度小,就需要 q(x)q(x)q(x) 的值也尽量大;在p(x)p(x)p(x)小的地方,q(x)q(x)q(x)对整体 KL 影响并不大(因为 log 项本身分子很小,又乘了一个非常小的 p(x))。换一种说法,要想使正向 KL 散度最小,则要求在 ppp 不为 0 的地方,qqq 也尽量不为 0,所以正向 KL 散度被称为是 zero avoiding。此时得到的分布 qqq 是一个比较 “宽” 的分布。
反向KL散度:KL[q∣∣p]KL[q||p]KL[q∣∣p]
KL[q∣∣p]KL[q||p]KL[q∣∣p]被称为反向KL散度,其形式为:
q^=argminq∫xq(x)logq(x)p(x)dx(2)\tag{2} \hat{q} = argmin_{q} \int_{x}q(x)log{q(x) \over p(x)}dx q^=argminq∫xq(x)logp(x)q(x)dx(2)
仔细观察(2)式,p(x)p(x)p(x)是已知的真实分布,要求使上式最小的q(x)q(x)q(x)。
考虑当p(x)=0p(x)=0p(x)=0时,这时为了使(2)式变小,q(x)q(x)q(x)取0值才可以,否则(2)式就会变成无穷大。当p(x)>0p(x)>0p(x)>0时,为了使(2)式变小,必须在p(x)p(x)p(x)小的地方,q(x)q(x)q(x)也小。在p(x)p(x)p(x)大的地方可以适当忽略。换一种说法,要想使反向 KL 散度最小,则要求在 ppp 为 0 的地方,qqq 也尽量为 0,所以反向 KL 散度被称为是 zero forcing。此时得到分布 qqq 是一个比较 “窄” 的分布。
一个例子
假如p(x)p(x)p(x)是两个高斯分布的混合,q(x)q(x)q(x)是单个高斯,用q(x)q(x)q(x)去近似p(x)p(x)p(x),两种KL散度该如何选择?
对于正向KL散度来说,q(x)q(x)q(x)的分布图像更符合第二行,正向KL散度更在意p(x)p(x)p(x)中的常见事件,也就是首先要保证p(x)p(x)p(x)峰值附近的xxx,在q(x)q(x)q(x)中的概率密度值不能为0。当 ppp 具有多个峰时,qqq 选择将这些峰模糊到一起,以便将高概率质量放到所有峰上。
对于反向KL散度来说,q(x)q(x)q(x)的分布图像更符合第二行。反向KL散度更在意p(x)p(x)p(x)中的罕见事件,也就是首先要保证p(x)p(x)p(x)低谷附件的xxx,在q(x)q(x)q(x)中的概率密度值也较小。当 ppp 具有多个峰并且这些峰间隔很宽时,如该图所示,最小化 KL 散度会选择单个峰,以避免将概率密度放置在ppp的多个峰之间的低概率区域中。
在机器学习的变分推理中使用的是反向KLKLKL。
参考:https://lumingdong.cn/various-entropies-in-machine-learning.html
正向KL散度与反向KL散度相关推荐
- kl散度定义_Kullback-Leibler(KL)散度介绍
在这篇文章中,我们将探讨一种比较两个概率分布的方法,称为Kullback-Leibler散度(通常简称为KL散度).通常在概率和统计中,我们会用更简单的近似分布来代替观察到的数据或复杂的分布.KL散度 ...
- 交叉熵、相对熵(KL散度)、JS散度和Wasserstein距离(推土机距离)
目录: 信息量 熵 相对熵(KL散度) 交叉熵 JS散度 推土机理论 Wasserstein距离 WGAN中对JS散度,KL散度和推土机距离的描述 信息量: 任何事件都会承载着一定的信息量,包括已经发 ...
- 神经网络正向传播步骤和反向传播
神经网络的训练的过程中通常有个正向过程(forward pass)或者叫做正向传播步骤(forward propagation step)接着会有个反向步骤(backward pass)也叫反向传播步 ...
- matlab kl变换函数,《数字图像KL变换》PPT课件.ppt
<<数字图像KL变换>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<数字图像KL变换>PPT课件.ppt(18页珍藏版)>请在人人文库网上搜索 ...
- 正向代理和Nginx反向代理配置介绍
正向代理和Nginx反向代理配置介绍 * Author QiuRiMangCao 秋日芒草* 正向代理(代理对象是pc) 是一个位于客户端(pc)和原始服务器(google.com)之间的服务器 场景 ...
- pytorch中的kl散度,为什么kl散度是负数?
F.kl_div()或者nn.KLDivLoss()是pytroch中计算kl散度的函数,它的用法有很多需要注意的细节. 输入 第一个参数传入的是一个对数概率矩阵,第二个参数传入的是概率矩阵.并且因为 ...
- 数学小课堂:库尔贝勒交叉熵(K-L divergence,也叫KL散度)【量化度量错误预测所要付出的成本,避免制订出与事实相反的计划】
文章目录 引言 I 预备知识:置信度(Confidence Level) 1.1 置信度的定义 1.1 提高置信度 II 误判的代价函数 2.1 信息偏差带来的损失 2.2 库尔贝勒交叉熵的应用 2. ...
- CSP认证201709-4 通信网络[C++题解]:dfs、建立两张图:正向建图和反向见图、统计联通点的个数
文章目录 题目解答 题目链接 题目解答 来源:acwing 分析: 这题就是判断每个点的连通性,如果能够到达所有的n个点,就表示该点满足题意. 这里的连通性指的是自己沿着正向边能够到达哪些点,还有就是 ...
- 向量场的散度和旋度_散度和旋度的物理意义是什么?
我在数学书中看到散度和旋度的时候,如果不结合物理来理解这两个数学公式的话,不过是平平无奇的曲线积分.曲面积分的一个应用而已.数学书上提到这两个公式的目的应该也是为了加深对曲线积分.曲面积分的理解. 有 ...
最新文章
- KMeans中的K怎么选择?Elbow method怎么实施?
- 为何大多数人做出来的图表只是一坨屎?
- 商业研究(7):旅游市场概览
- Windbg内核调试之一: Vista Boot Config设置
- 采用web技术开发PC应用
- 踏平RecyclerView使用的各种坑,跟ListView和GridView说拜拜
- MySQL语言解析----1
- 网络定位-能定位到国家省份市区县街道
- oracle去掉默认值sql,如何在T-SQL中删除默认值或类似约束?
- Chrome Firefox for Linux 直达下载链接
- 电源大师课笔记 3.3
- 微信小程序防止恶意点击、多次点击
- opengl——贴图
- 【知识点和练习题】心田花开:二年级语文汉语拼音补习
- 吉大17秋计算机应用二,吉大17秋《计算机应用基础》在线作业二.doc
- vue金额数字转大写的方法
- 内网渗透- *** PTH(传递哈希)***PTT(传递票据)***PTK(传递密钥)
- JavaScript 使用js修改页面元素
- 《广播电视节目制作经营许可证》申请流程
- 刘鹏教授受邀参加秦淮知识产权日主题宣传 · 圆桌论坛