两个多维高斯分布之间的KL散度推导

摘要:
在深度学习中,我们通常对模型进行采样,并用实际样本计算损失,以估计模型分布和实际分布之间的差异。损失可以简单地定义,例如两个规范。但对于已知参数的两个确定分布之间的差异,我们必须通过推导来计算。下面导出了已知均值和协方差矩阵的两个多维高斯分布之间的KL散度。当然,由于很容易近似分布,瓦瑟斯坦指数可能是衡量两个分布之间差异的更好方法,但是

  在深度学习中,我们通常对模型进行抽样并计算与真实样本之间的损失,来估计模型分布与真实分布之间的差异。并且损失可以定义得很简单,比如二范数即可。但是对于已知参数的两个确定分布之间的差异,我们就要通过推导的方式来计算了。

  下面对已知均值与协方差矩阵的两个多维高斯分布之间的KL散度进行推导。当然,因为便于分布之间的逼近,Wasserstein distance可能是衡量两个分布之间差异的更好方式,但这个有点难,以后再记录。

  首先定义两个$n$维高斯分布如下:

$egin{aligned} &p(x) = frac{1}{(2pi)^{0.5n}|Sigma|^{0.5}}expleft(-frac{1}{2}(x-mu)^TSigma^{-1}(x-mu) ight)\ &q(x) = frac{1}{(2pi)^{0.5n}|L|^{0.5}}expleft(-frac{1}{2}(x-m)^T L^{-1}(x-m) ight)\ end{aligned}$

  需要计算的是:

$egin{aligned} ext{KL}(p||q) = ext{E}_pleft(logfrac{p(x)}{q(x)} ight) end{aligned}$

  为了方便说明,下面分步进行推导。首先:

$egin{aligned} frac{p(x)}{q(x)} &= frac {frac{1}{(2pi)^{0.5n}|Sigma|^{0.5}}expleft(-frac{1}{2}(x-mu)^TSigma^{-1}(x-mu) ight)} {frac{1}{(2pi)^{0.5n}|L|^{0.5}}expleft(-frac{1}{2}(x-m)^T L^{-1}(x-m) ight)}\ &=left(frac{|L|}{|Sigma|} ight)^{0.5}expleft(frac{1}{2}(x-m)^T L^{-1}(x-m) -frac{1}{2}(x-mu)^TSigma^{-1}(x-mu) ight) end{aligned}$

  然后加上对数:

$egin{aligned} logfrac{p(x)}{q(x)} &= frac{1}{2}logfrac{|L|}{|Sigma|}+ frac{1}{2}(x-m)^T L^{-1}(x-m) - frac{1}{2}(x-mu)^TSigma^{-1}(x-mu) end{aligned}$

  再加上期望:

 $egin{aligned} ext{E}_plogfrac{p(x)}{q(x)} &=frac{1}{2}logfrac{|L|}{|Sigma|}+ ext{E}_pleft[frac{1}{2}(x-m)^T L^{-1}(x-m) - frac{1}{2}(x-mu)^TSigma^{-1}(x-mu) ight]\ &=frac{1}{2}logfrac{|L|}{|Sigma|}+ ext{E}_p ext{Tr}left[frac{1}{2}(x-m)^T L^{-1}(x-m) - frac{1}{2}(x-mu)^TSigma^{-1}(x-mu) ight]\ end{aligned}$

  第二步是因为结果为标量,可以转换为计算迹的形式。接着由迹的平移不变性得:

$egin{align} &frac{1}{2}logfrac{|L|}{|Sigma|}+ ext{E}_p ext{Tr} left[ frac{1}{2}L^{-1}(x-m)(x-m)^T - frac{1}{2}Sigma^{-1}(x-mu)(x-mu)^T ight]\ = &frac{1}{2}logfrac{|L|}{|Sigma|}+ frac{1}{2} ext{E}_p ext{Tr} left(L^{-1}(x-m)(x-m)^T ight) - frac{1}{2} ext{E}_p ext{Tr} left(Sigma^{-1}(x-mu)(x-mu)^T ight) \ = &frac{1}{2}logfrac{|L|}{|Sigma|}+ frac{1}{2} ext{E}_p ext{Tr} left(L^{-1}(x-m)(x-m)^T ight) - frac{n}{2} end{align}$

  其中最后一项是因为,首先期望与迹可以调换位置,然后$(x-mu)(x-mu)^T$在分布$p$下的期望就是对应的协方差矩阵$Sigma$,于是得到一个$n$维单位阵,再计算单位阵的迹为$n$。

  接下来,把中间项提出来推导,得:

$egin{align} &frac{1}{2} ext{E}_p ext{Tr} left(L^{-1}(x-m)(x-m)^T ight)\ =&frac{1}{2} ext{Tr}left(L^{-1} ext{E}_p left(xx^T-xm^T-mx^T+mm^T ight) ight) \ =&frac{1}{2} ext{Tr}left(L^{-1} left(Sigma +mumu^T-2mu m^T+mm^T ight) ight)  end{align}$

  其中$ ext{E}_p(xx^T) = Sigma + mumu^T$推导如下:

$egin{aligned} Sigma &= ext{E}_pleft[(x-mu)(x-mu)^T ight]\ &= ext{E}_pleft(xx^T-xmu^T-mu x^T+mumu^T ight)\ &= ext{E}_pleft(xx^T ight)-2 ext{E}_pleft(xmu^T ight)+mumu^T \ &= ext{E}_pleft(xx^T ight)-mumu^T \ end{aligned}$

  接着推导$(6)$式:

$egin{aligned} &frac{1}{2} ext{Tr}left(L^{-1} left(Sigma +mumu^T-2mu m^T+mm^T ight) ight) \ = &frac{1}{2} ext{Tr}left(L^{-1}Sigma +L^{-1} (mu-m)(mu-m)^T ight) \ = &frac{1}{2} ext{Tr}left(L^{-1}Sigma ight)+ frac{1}{2}(mu-m)L^{-1}(mu-m)^T  \ end{aligned}$

  最后代回$(3)$式,得到最终结果:

$egin{aligned} ext{E}_plogfrac{p(x)}{q(x)} =&frac{1}{2}left{ logfrac{|L|}{|Sigma|}+ ext{Tr}left(L^{-1}Sigma ight)+ (mu-m)L^{-1}(mu-m)^T  - n ight} end{aligned}$

  参考于:两个多维高斯分布的Kullback-Leibler divergence(KL散度)

免责声明:文章转载自《两个多维高斯分布之间的KL散度推导》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vs2010的专业版下载免激活android获取包名的几种方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

吴裕雄 python 机器学习——数据预处理字典学习模型

from sklearn.decomposition import DictionaryLearning #数据预处理字典学习DictionaryLearning模型 def test_DictionaryLearning(): X=[[1,2,3,4,5], [6,7,8,9,10], [10,9,8,7,6,],...

《python深度学习》笔记---3.2-3.3、Keras 简介

《python深度学习》笔记---3.2-3.3、Keras 简介 一、总结 一句话总结: 不处理张量操作:Keras 是一个模型级(model-level)的库,为开发深度学习模型提供了高层次的构建模块。 它不处理张量操作、求微分等低层次的运算 Keras张量操作由后端引擎实现:Keras 有三个后端实现:TensorFlow 后端、 Theano 后端...

Python机器学习(1)——决策树分类算法

1、决策树算法 决策树用树形结构对样本的属性进行分类,是最直观的分类算法,而且也可以用于回归。不过对于一些特殊的逻辑分类会有困难。典型的如异或(XOR)逻辑,决策树并不擅长解决此类问题。 决策树的构建不是唯一的,遗憾的是最优决策树的构建属于NP问题。因此如何构建一棵好的决策树是研究的重点。 J. Ross Quinlan在1975提出将信息熵的概念引入决策...

spark 特征选择、特征预处理:提取/转换/选择 缺失值 sparkMllib

数据预处理与特征工程 缺失值处理 缺失值处理通常有如下的方法: 对于unknown值数量较少的变量,包括job和marital,删除这些变量是缺失值(unknown)的行; 如果预计该变量对于学习模型效果影响不大,可以对unknown值赋众数,这里认为变量都对学习模型有较大影响,不采取此法; 可以使用数据完整的行作为训练集,以此来预测缺失值,变量hous...

自然语言处理入门 何晗 读书笔记 第1章 新手上路

第1章新手上路 自然语言处理是一门融合了计算机科学、人工智能以及语言学的交叉学科。这门学科研究的是如何通过机器学习等技术,让计算机学会处理人类语言,乃至实现终极目标----理解人类语言或人工智能。 自然语言处理这个术语没有被广泛的定义,注重语言学结构的学者喜欢使用计算语言学(CL),强调最终目的的学者更偏好自然语言理解(NLU)。 1.1自然语言与编程语言...

图像滤波

滤波 是信号和图像处理中的一种基本操作。它的目的是选择性地提取图像中某些方面的内容,这些内容在特定应用环境下传达了重要信息。滤波可去除图像中的噪声,提取有用的视觉特征,对图像重新采样,等等。它起源于通用的信号和系统理论。 频域1.通过观察变化的频率,图像中灰度级的变化。有些图像含有大片强度值几乎不变的区域(如蓝天),而对于其他图像,灰度级的强度值在整幅图像...