首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

教程 | 如何理解KL散度的不对称性

机器之心原创 作者:邱陆陆 众所周知,多被用于量化分布间的差异的 KL 散度是不对称的。今天我们来聊一聊,两个分布的一对 KL 散度之间究竟有什么不同。...散度衡量了两个分布之间的差异。...公式 D_P(Q) 里一共涉及了两个分布: 要传达的信息来自哪个分布,答案是 Q 信息传递的方式由哪个分布决定,答案是 P 由 KL 散度的公式可知,分布 Q 里可能性越大的事件,对 D_P(Q) 影响力越大...左图里那种,分布 Q 横亘在分布 P 两个峰值中间,是我们最不希望发生的、KL 散度格外大的情况。相反,只有一个峰值的分布 Q 最终会选择贴合分布 P 两个峰值区域中的任意一个。...以上,就是,KL 散度如何衡量分布间的差异,以及不对称的 KL 散度在衡量差异的时候会有什么不同了。 欢迎提问,以及拍砖。 本文为机器之心原创,转载请联系本公众号获得授权。

1.8K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    比较两个概率分布的方法——Kullback-Leibler散度

    来源|Count Bayesie 在这篇文章中,我们将探讨一种比较两个概率分布的方法,称为Kullback-Leibler散度(通常简称为KL散度)。...利用KL散度,我们可以精确地计算出当我们近似一个分布与另一个分布时损失了多少信息。让我们回到我们的数据,看看结果如何。 比较我们的近似分布 现在我们可以继续计算两个近似分布的KL散度。...如果我们必须选择一个来代表我们的观察结果,那么最好还是坚持使用均匀分布。 KL散度不是距离 将KL散度视为距离度量可能很诱人,但是我们不能使用KL散度来测量两个分布之间的距离。...当我们更改此参数的值时,我们可以通过查看KL散度的变化方式来仔细检查我们的工作。以下是这些值如何一起变化的图表: ? 如你所见,我们对二项式分布的估计(由点标记)是使KL散度最小的最佳估计。...我们如何才能找到我们组合在一起的这个奇怪模型的最佳参数?我们需要做的就是像以前一样最大程度地减少KL差异: ? 我们发现在以下情况下找到的KL散度的最小值是0.338,当p = 0.47。

    5K10

    python衡量数据分布的相似度距离(KLJS散度)

    背景 很多场景需要考虑数据分布的相似度/距离:比如确定一个正态分布是否能够很好的描述一个群体的身高(正态分布生成的样本分布应当与实际的抽样分布接近),或者一个分类算法是否能够很好地区分样本的特征...(在两个分类下的数据分布的差异应当比较大)。...KL/JS散度就是常用的衡量数据概率分布的数值指标,可以看成是数据分布的一种“距离”,关于它们的理论基础可以在网上找到很多参考,这里只简要给出公式和性质,还有代码实现: KL散度 有时也称为相对熵...对于两个概率分布P、Q,二者越相似,KL散度越小。 KL散度满足非负性 KL散度是不对称的,交换P、Q的位置将得到不同结果。 ?...下面我将演示一个身高分布预测比较的例子,用scipy的正态分布函数随机生成了真实的身高分布和两个预测,让我们用散度来评判哪个是更好的预测: 上代码: from scipy.stats import norm

    9.3K20

    学懂GAN的数学原理,让它不再神秘

    03 GAN是如何解决这两个问题的 第一个问题很容易解决,以上面的小猫问题为例,只要做一个神经网络,它的输入是来自某个特定分布的数,为便于说明,我们就假设这个特定分布是一维的,也就是它产生的数就是一个标量...至此,我们看到,V越大,表示D对来自真实分布和来自G的数据评分差异越大,真实的样本越接近1,G产生的样本越接近0。.../2的KL散度。...如果令g = (Pd+Pg)/2,则maxV = -2log2 + KL(Pd||g) + KL(Pg||g) 如果有小伙伴对KL散度不是很理解,推荐看看我的另一篇文章《机器学习面试之各种混乱的熵》,里面有一个很通俗易懂的解释...Jessen-Sannon Divergence,它是一个对称化的KL散度。

    1.4K50

    【数学基础】机器学习中的几个熵

    : 相对熵(KL散度/KL divergence) 相对熵又叫KL散度,也叫做信息增益,如果我们对于同一个随机变量,有两个单独的概率分布和,我们可以用KL散度来衡量这两个分布的差异。...在机器学习中,P分布往往用来表示样本的真实分布,即标签label,Q用来表示模型所预测的分布,那么KL散度就可以计算两个分布的差异,也就是计算损失值Loss。...JS散度 JS散度度量了两个概率分布的相似度,是基于KL散度的变体,解决了KL散度非对称的问题。一般地,JS散度是对称的,其取值是0到1之间。...Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近;**而JS散度在此情况下是常量,KL散度可能无意义。...总结 目前分类损失函数为何多用交叉熵,而不是KL散度? 首先损失函数的功能是通过样本来计算模型分布与目标分布间的差异,在分布差异计算中,KL散度是最合适的。

    1K10

    生成式模型入门:训练似然模型的技巧

    散度最小化:生成模型的一般框架 生成模型(其实都是统计机器学习模型)旨在从一些(可能是条件的)概率分布 p(x) 中取样本数据,并学习对 p(x) 进行近似的模型 pθ(x)。...(x) 接近 p(x),我们首先必须提出两个分布之间距离的概念。...散度(KSD) Bregman 散度 Hyvärinen 得分 Chi-Squared 散度 Alpha 散度 与几何距离不同,两个分布之间的散度不需要是对称的。...通过一些代数运算,负交叉熵可以用 KL 散度(相对熵)和 p 的绝对熵重写: 香农(Shannon)的信源编码定理(1948)告诉我们,熵 H(p) 是你可以构造的任何编码的平均编码长度的下界,以无损地传递来自...KL 散度 KL(p,p_θ) 或相对熵,是对来自 p(x) 的数据编码所需的「额外的 nat」的数量,该过程使用基于 p_θ(x) 的熵编码方案。

    86820

    【干货】一文读懂什么是变分自编码器

    如果空间有不连续性(例如簇之间的间隙)并且从那里采样/产生变化,则解码器将产生不切实际的输出,因为解码器不知道如何处理该潜在空间的区域。 在训练期间,从未看到来自该潜在空间区域的编码矢量。...为了强制做到这一点,我们在损失函数中引入Kullback-Leibler散度(KL散度[2])。 两个概率分布之间的KL散度只是衡量它们相互之间有多大的分歧。...这里最小化KL散度意味着优化概率分布参数(μ和σ),使其与目标分布的概率分布参数非常相似。 对于VAE,KL损失是X中个体X〜N(μ,σ²)与标准正态分布[3]之间所有KL分支的总和。...在这里,可以认为是在潜在空间上简单的矢量运算。 例如,如果您希望在两个样本之间的中间位置生成一个新的样本,只需找出它们的样本向量之间的差异,并将差异的一半加到原始样本上,然后对其进行简单的解码即可。...添加新的样本特征如何生成特定的特征?如在脸上生成眼镜。首先,找到两个样本,一个戴眼镜,一个没有,从编码器获得它们的编码矢量,并保存差异。 将这个新的“眼镜”矢量添加到其他脸部图像,并解码它。 ? ?

    11.3K120

    理解变分自动编码器

    读懂本文需要读者理解KL散度包括正态分布之间的KL散度计算公式、KL散度的非负性(涉及到变分法的基本概念),蒙特卡洛算法等基本知识,自动编码的知识。...VAE在训练时需要找到一个概率分布q(z丨x)来近似p(z丨x),同时需要最大化概率值p(x)。衡量两个概率分布之间的差异可使用KL散度,如果对这一概念不清楚,请查阅相关材料。...后验概率及其近似分布的KL散度为 ? 根据贝叶斯公式 ? 将式5代入式4,由于p(x)与z无关,因此 ? 从而可以得到 ? 对上式进行变形,可以得到 ? 在这里令变分下界函数为 ?...由于KL散度非负,因此是对数似然函数的变分下界。式6是VAE的核心,左侧需要最大化lnp(x)同时最小化 ? 。此KL散度可以看做是误差项。q(z丨x)产生z,根据这个可以复现出。...方程6右侧的第二项 ? 是两个正态分布之间的KL散度,称为KL损失,需要最小化该值。根据两个正态分布的KL散度的计算公式,其值为 ?

    1.7K21

    基于可变自动编码器(VAE)的生成建模,理解可变自动编码器背后的原理

    Kullback Leibler散度(kl -散度) 为了使q(z|x)与p(z|x)相似,我们使用Kullback Leibler散度(kl -散度)最小化并计算两个分布之间的差值。...kl散度是两个分布之间差异的度量。理解kl散度最简单的方法是通过可视化下图。 ? 注:KL(p, q)为右侧红色曲线的积分。 从图中可以看出,在相同分布的交点处,kl -散度为0。...因此,通过最小化kl散度,我们使这两个分布尽可能地相似。 最后,我们可以定义我们的损失函数如下。 ? 第一项是重构损失,即重构输出与输入之间的差值,通常使用均方误差(MSE)。...为什么同时使用重构损失和kl散度? 在讨论了kl散度之后,为什么我们仍然在整体损失函数中使用重构损失呢?为了理解损失函数背后的原理,以及重构损失和KL散度对潜在空间的影响。让我们看看下面的图表。...但是,如果我们只专注于用我们的kl -散度损失项模拟先验分布,我们将会将每个单位描述为单位正态分布,而不能描述原始数据。

    1.6K41

    机器之心GitHub项目:GAN完整理论推导与实现,Perfect!

    理论推导 在原 GAN 论文中,度量生成分布与真实分布之间差异或距离的方法是 JS 散度,而 JS 散度是我们在推导训练过程中使用 KL 散度所构建出来的。...如果我们对于同一个随机变量 x 有两个单独的概率分布 P(x) 和 Q(x),我们可以使用 KL 散度(Kullback-Leibler divergence)来衡量这两个分布的差异: ?...因为 KL 散度是非负的并且衡量的是两个分布之间的差异,它经常 被用作分布之间的某种距离。...假设存在两个分布 P 和 Q,且这两个分布的平均分布 M=(P+Q)/2,那么这两个分布之间的 JS 散度为 P 与 M 之间的 KL 散度加上 Q 与 M 之间的 KL 散度再除以 2。...JS 散度的取值为 0 到 log2。若两个分布完全没有交集,那么 JS 散度取最大值 log2;若两个分布完全一样,那么 JS 散度取最小值 0。

    1.2K90

    损失函数,基于概率分布度量的损失函数,信息量,信息熵的作用

    KL散度函数(相对熵) 公式中代表真实值,代表预测值。 KL散度( Kullback-Leibler divergence)也被称为相对熵,是一种非对称度量方法,常用于度量两个概率分布之间的距离。...KL散度也可以衡量两个随机分布之间的距离,两个随机分布的相似度越高的,它们的KL散度越小,当两个随机分布的差别增大时,它们的KL散度也会增大,因此KL散度可以用于比较文本标签或图像的相似性。...基于KL散度的演化损失函数有JS散度函数。JS散度也称JS距离,用于衡量两个概率分布之间的相似度,它是基于KL散度的一种变形,消除了KL散度非对称的问题,与KL散度相比,它使得相似度判别更加准确。...实际案例 假设有一组数据如图所示,我们想找到一条拟合的直线。 平面上的样本数据 下图前三张显示了一个逐渐找到最佳拟合直线的过程。...熵 相对熵(KL散度) 交叉熵 交叉熵能够衡量同一个随机变量中的两个不同概率分布的差异程度,在机器学习中就表示为真实概率分布与预测概率分布之间的差异。

    8210

    模型量化-学习笔记

    , 关键是如何找到最优的阈值?...图片TensorRT 为了找到一个最优的阈值, 引入了KL散度(也称相对熵)来衡量不同的INT8分布与原来的FP32分布之间的差异程度, 不了解这个熵理论的可以看这里信息熵理论, 它的公式如下: KL...把校准集输入到模型进行前向推理, 并收集模型中各个Layer的激活值分布直方图, 如左上图所示.然后生成不同的阈值和量化分布, 并计算不同阈值下真实分布P和量化分布的Q的KL散度, 直到找到KL散度最小的一个阈值..., 将Q样本长度拓展到 i ,使得和原样本P具有相同长度;求得Q的概率分布 并计算P、Q的KL散度值step4: 不断循环step2, step3, 就能不断地构造P和Q并计算相对熵,然后找到最小(截断长度为...KL散度的实例1KL分布是用来衡量2个数据分布的距离的, 当两个分布越相近, KL值越小, 分布一样的话, KL=0, 其公式为:H(f|g) = D_{KL}(f, g) = \sum_{x\in X

    3.8K30

    从香农熵到手推KL散度:一文带你纵览机器学习中的信息论

    KL 散度 与交叉熵紧密相关,KL 散度是另一个在机器学习中用来衡量相似度的量:从 q 到 p 的 KL 散度如下:D_KL(p||q)。...因为 KL 散度是非负的并且衡量的是两个分布之间的差异,它经常 被用作分布之间的某种距离。...若给定一个样本数据的分布 P_data(x) 和生成的数据分布 P_G(x;θ),那么 GAN 希望能找到一组参数θ使分布 P_g(x;θ) 和 P_data(x) 之间的距离最短,也就是找到一组生成器参数而使得生成器能生成十分逼真的图片...添加该积分后,我们可以合并这两个积分并构建类似 KL 散度的形式。该过程如下: ?...这一个积分就是 KL 散度的积分形式,因此,如果我们需要求令生成分布 P_G(x;θ) 尽可能靠近真实分布 P_data(x) 的参数θ,那么我们只需要求令 KL 散度最小的参数θ。

    84280

    通俗|令人拍案叫绝的Wasserstein GAN 及代码(WGAN两篇论文的中文详细介绍)

    对于一个具体的样本,它可能来自真实分布也可能来自生成分布,它对公式1损失函数的贡献是 ? 令其关于D(x)的导数为0,得 ? 化简得最优判别器为: ?...所以接下来介绍这两个重要的配角——KL散度和JS散度: ? 于是公式5就可以继续写成 ?...这个等价最小化目标存在两个严重的问题。第一是它同时要最小化生成分布与真实分布的KL散度,却又要最大化两者的JS散度,一个要拉近,一个却要推远!...Wasserstein距离相比KL散度、JS散度的优越性在于,即便两个分布没有重叠,Wasserstein距离仍然能够反映它们的远近。WGAN本作通过简单的例子展示了这一点。...JS散度的突变特性,使得生成器面临梯度消失的问题;第二种形式在最优判别器下等价于既要最小化生成分布与真实分布直接的KL散度,又要最大化其JS散度,相互矛盾,导致梯度不稳定,而且KL散度的不对称性使得生成器宁可丧失多样性也不愿丧失准确性

    2.5K51

    从香农熵到手推KL散度:一文带你纵览机器学习中的信息论

    KL 散度 与交叉熵紧密相关,KL 散度是另一个在机器学习中用来衡量相似度的量:从 q 到 p 的 KL 散度如下:D_KL(p||q)。...因为 KL 散度是非负的并且衡量的是两个分布之间的差异,它经常 被用作分布之间的某种距离。...若给定一个样本数据的分布 P_data(x) 和生成的数据分布 P_G(x;θ),那么 GAN 希望能找到一组参数θ使分布 P_g(x;θ) 和 P_data(x) 之间的距离最短,也就是找到一组生成器参数而使得生成器能生成十分逼真的图片...添加该积分后,我们可以合并这两个积分并构建类似 KL 散度的形式。该过程如下: ?...这一个积分就是 KL 散度的积分形式,因此,如果我们需要求令生成分布 P_G(x;θ) 尽可能靠近真实分布 P_data(x) 的参数θ,那么我们只需要求令 KL 散度最小的参数θ。

    1.2K100

    带你漫游 Wasserstein GAN 的世界!

    那么什么叫 JS 散度呢,为此我们先引出 KL 散度。 KL 散度又称 KL 距离,亦叫相对熵。这里先给出 KL 散度的公式: 其中 p,g 为 x 的概率分布。...在一定程度上,熵这个概念可以度量两个随机变量的距离,因此 KL 散度可衡量两概率分布的差异,特别注意一点是该距离并非对称距离,即: 得知 KL 散度后,那么 JS 散度就很好理解了,JS 散度的表达式是...,无论 p 和 q 的取值如何,其 JS 散度都是常数值 log2,既然是常数,优化就无从谈起。...而从另一个更加通俗的角度来说,在优化中,KL 散度和 JS 散度是突变的,这就导致了,如果 D 训练得太好了,那么 G 就会被按在地上摩擦,进而训练 G 的时候梯度将会梯度不稳定,但如过 D 太差了,G...对于每一个可能的联合分布γ而言,可以从中采样 得到一个真实样本x和一个生成样本y,并算出这对样本的距离 ,所以可以计算该联合分布γ下样本对距离的期望值 。

    1.2K40

    利用误分类样本来防御对抗样本

    首先作者改变了扰动的方法,将PGD切换成FGSM,分别单独作用于两个样本集合中,从最终的结果上看,仍然是对误分类样本扰动对鲁棒性的提升比较明显,如下图所示: ?...KL散度对鲁棒性的影响 并且,KL散度这一项不论是加在 ? 还是 ? ,都有提升效果。(反之,如果模型对于对抗样本和正常样本的输出分布类似,鲁棒性越高?)...Training的论文中首次提出 那么,直觉地,作者应该会给出一项新的loss,由基本的精度误差项,加上KL散度的一项,且KL散度这一项应该主要针对误分类样本。...然后我们看蓝色虚线(BCE[以扰动样本作为输入]+KL散度)和绿色线(BCE[以普通样本作为输入]+KL散度),说明基础的精度那一项的输入还是扰动样本要优。 KL项的系数 ?...讨论 这篇文章其实是基于一个小的观察(单独加扰动在误分类样本和正确分类样本上会对鲁棒性产生不同的影响),结合KL散度的一个创新(即动态权重的KL散度项)以及BCE项的提出,给出一个新的loss。

    64210

    【GAN的优化】从KL和JS散度到fGAN

    GAN的生成器隐式地定义了一个概率分布,并依此概率分布来生成样本,而训练样本集也是在某一个概率分布上连续独立采样获得的,故GAN的核心目标就是:驱使生成器定义的隐式的概率分布接近训练样本集的本质概率分布...另外,对于LSGAN,可以证明其使用的是卡方距离,而EBGAN使用总变差距离。 5 两个小问题 KL散度和逆KL散度在严格意义上并不是一种度量,因为不符合对称性,即 ?...非对称性意味着使用KL散度或者逆KL散度作为优化目标,其得到结果将具有显著差异。例如,用分布Q去拟合分布P,选择KL散度,Q会将诸多高概率的峰模糊化: ?...即对于任意x,在绝大部分情况下,两个概率分布至少有一个为0。 ? 显然,这样计算得来的JS散度为常数。...总结 今天向大家介绍了概率密度函数的距离、由f散度定义的一系列距离、共轭函数,之后推导了如何使用fGAN生成原始的GAN,最后阐述了KL散度和JS散度的一些问题。 下期预告:对偶与WGAN

    2.9K10

    天天用AI还不知道AI是怎么反馈的?一文了解生成模型常见损失函数Python代码实现+计算原理解析

    ,KLD)KL散度(Kullback-Leibler Divergence,KLD),也称为相对熵,是信息论中用于衡量两个概率分布之间的差异的一种指标。...KL散度定义如下:重要要点:KL 散度是非对称的:D_{KL}(P||Q)!=D_{KL}(Q||P) 这意味着用 Q 来估计 P 的KL散度与用 P 估计 Q 的KL散度是不同的。...KL 散度非负:D_{KL}(P||Q)≥0 ,当且仅当 P 和 Q 完全相等时,KL散度等于零。KL 散度的值越大,表示两个分布之间的差异越大。...KL散度的计算通常需要确保分母Q(x)不为零,以避免数值不稳定的情况。KL散度在许多领域都有重要的应用,包括:信息理论: 用于衡量在一个概率分布下用另一个分布来表示所需的额外信息量。...在生成模型中,特别是在变分自编码器(Variational Autoencoder,VAE)等模型中,KL散度(Kullback-Leibler Divergence,KLD)通常用于衡量两个概率分布之间的差异

    92864
    领券