本文转载的原文链接:变分法和变分贝叶斯推断
另一篇CSDN链接学习:变分贝叶斯推断(Variational Bayes Inference)简介

变分法是17世纪末发展起来的一门数学分支,是泛函分析里面的一个领域,在普通的最优化问题中,往往求解得到的是一个最优值解,而在一个变分问题中,求解得到的是一个最优函数解,因此变分问题可以看成是泛函的一个极值问题。最经典的一个变分问题就是最速下降曲线问题:在重力作用下一个粒子沿着该路径可以在最短时间从点A到达不直接在它底下的一点B。在所有从A到B的曲线中必须极小化代表下降时间的表达式。该问题由从约翰·伯努利(Johann Bernoulli)1696年提出,并由此发展成了变分法这门数学分支。在统计机器学习里变分法也起着至关重要的作用,比如在最大熵问题中,可以利用变分法推导出正态分布。在统计机器学习里面还有一个重要的概念叫做变分贝叶斯推断(Variational Bayesian Inference)。很多统计机器学习问题里面,往往需要去近似求解不可观测变量或者叫隐变量(latent variable)的后验概率分布,而变分贝叶斯推断关注的就是如何求解一个近似后验概率分布,因此在统计机器学习里面应用比较广泛。下面会首先介绍变分法的相关知识,然后再介绍变分贝叶斯推断的相关知识。

变分问题在数学上的定义通俗地可以理解为泛函的极值问题。通常函数可以表示成自变量到因变量的映射关系:y=f(x),泛函一般可以理解为函数的函数:J(f(x)),一般称J(f(x))为f(x)的泛函,但是泛函要求f(x)满足一定的边界条件,并且具有连续的二阶导数。这样的f(x)称为可取函数。通常一个最优化问题中,求解的是一个最优数值解,而在变分问题中,往往求解的是一个最优函数解。比如在求解最大熵的问题上,最终求解得到的就是一个概率分布,在该概率分布下使得熵最大,由于概率分布本身可以看成一个函数,因此可以把最大熵求解问题看成是一个变分求解问题。变分法相当于把微积分从变量推广到函数上。在普通的微积分中可以通过对变量求导数,然后令导数为0来求解一个极值问题,通过变分法一样可以通过导数为0的条件求解无约束极值问题,以及引入拉格朗日乘子来求解有约束极值问题。下面将通过一个求解最大熵分布的例子来展示,通过变分法是如何来求解一个函数的极值问题的。

首先给出一个概率质量分布函数f(x),定义该分布下的信息熵为:

由于是概率分布,因此可以加入一些约束条件:

由于有三个约束条件,因此可以引入三个拉格朗日乘子:,得到新的目标函数:

然后根据变分法原理,可以令:

定义被积函数:

可以把被积函数F(f(x),x)看成是函数f(x)的泛函,所以根据变分法有:

因此可以得到:

其中C是λ的待定系数。

然后运用约束条件(1),并令

再把f(x)代入约束条件(1)可以得到:

可以得到:

然后利用约束条件(2),又有:

再根据yf(y)是奇函数的性质,故:

再利用约束条件(3),有:

再把求解得到的代入f(x)的表达式得到:

可以看到f(x)就是一个正态分布的表达式,再考虑二阶变分:

因此可以得出当概率质量分布f(x)为正态分布时,信息熵最大。插一句题外话,大自然真的很神奇,我们初中就知道根据热力学第二定律,一切自然过程总是沿着无序性增大的方向进行的,而熵就是衡量无序性的一个标准,这也解释了为什么大自然偏爱正太分布的原因,因为在正太分布下无序性最大。大自然是懒惰的,它不想耗费更多的能量去构建一个更加有序的世界,所以就有了人类:)

变分贝叶斯推断

通常在研究贝叶斯模型中,需要去求解一个后验概率(Posterior)分布,但是由于求解过程的复杂性,因此很难根据贝叶斯理论求得后验概率分布的公式精确解,所以一种方法是用一个近似解来替代精确解,并使得近似解和精确解的差别不会特别大。一般求解近似解的方法有两种:第一种是基于随机采样的方法,比如用蒙特卡洛采样法去近似求解一个后验概率分布;第二种就是变分贝叶斯推断法。变分贝叶斯法是一类用于贝叶斯估计和机器学习领域中近似计算复杂积分的技术。它关注的是如何去求解一个近似后验概率分布。

通过变分贝叶斯推断可以求解得到一个近似的后验概率分布去逼近真实的后验概率分布。假设真实后验概率分布为:P(Z|X),我们希望用一个近似后验概率分布Q(Z):去逼近P(Z|X)。为了描述近似的后验概率分布和真实后验概率分布的逼近程度,引入KL散度(Kullback-Leibler Divergence),在概率论或信息论中,KL散度又称相对熵(relative entropy),是描述两个概率分布P和Q逼近程度的一种方法。但是KL散度并不是一种距离度量标准,因为它是非对称的。定义KL散度数学表达式为:

通过最小化KL散度值就可以推导出变分贝叶斯推断中的ELOB(Evidence Lower Bound)。具体过程如下:

令:

可以得到:

由于目标是最小化KL(Q||P),同时logP(X)是一个不依赖隐变量Z的常数,因此最小化KL(Q||P)等价于最大化L(Q)。由于KL散度值是大于等于0的(当且仅当Q分布和P分布相等时等于0),因此可以推得L(Q)是logP(X)的一个下界,其实还可以对L(Q)再做一个转变:

即得到通常意义上的ELOB(Evidence Lower Bound)。因此,可以通过最大这个下界来达到最小化KL(Q||P)的目的,这样做的一个好处在于,如果直接优化KL(Q||P),由于真实后验分布往往事先不知道,而且如果用贝叶斯公式来计算P(Z|X)的复杂度特别高,因此不好直接优化KL(Q||P)。为了优化L(Q),需要引入一种叫做平均场的方法(mean field theory),即假设每个隐变量之间服从独立同分布:

因此,L(Q)等式后半部分(针对L(Q)的原始公式表达式)可以表示为:

L(Q)的前半部分可以表示为:

最终得到L(Q)的表达式为:

其中为信息熵,由于,并且KL散度值也总是大于等于0,因此要最大化L(Q),只需要令,即:

至此,就得到了Q(Z)的分布形式。但是很多时候,我们不仅需要得到一个近似后验概率分布Q(Z),我们真正需要的是一个训练好的生成模型P(Z,X),特别是在深度学习里面,因此我们往往优化的是:

写在最后

虽然变分贝叶斯推断很美,所以很多人在遇到带隐变量的模型时都会下意识的去引入变分贝叶斯推断来求解模型参数,其实如果隐变量是低维并且离散的话,完全没有必要去引入变分贝叶斯推断去估计模型的参数。而且,在深度学习里面,变分贝叶斯的训练并不简单,需要花很多精力去调参数,所以在可以求精确解的条件下就没有必要去求一个下界解。这是最近做实验得到的一些结论。

References:

[1] http://blog.huajh7.com/2013/03/06/variational-bayes/

[2] http://blog.csdn.net/aws3217150/article/details/57072827

变分法和变分贝叶斯推断相关推荐

  1. matlab 变分贝叶斯,变分法和变分贝叶斯推断

    变分法介绍 变分法是17世纪末发展起来的一门数学分支,是泛函分析里面的一个领域,在普通的最优化问题中,往往求解得到的是一个最优值解,而在一个变分问题中,求解得到的是一个最优函数解,因此变分问题可以看成 ...

  2. 变分推断 | MATLAB实现VBMC变分贝叶斯蒙特卡洛模拟的贝叶斯推断

    变分推断 | MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断 目录 变分推断 | MATLAB实现变分贝叶斯蒙特卡洛模拟的贝叶斯推断 效果一览 基本介绍 研究内容 模型描述 模型设计 参考资料 效 ...

  3. 变分贝叶斯推断(Variational Bayes Inference)简介

    通常在研究贝叶斯模型中,很多情况下我们关注的是如何求解后验概率(Posterior),不幸的是,在实际模型中我们很难通过简单的贝叶斯理论求得后验概率的公式解,但是这并不影响我们对贝叶斯模型的爱--既然 ...

  4. 众包置信度:改进众包数据标记的贝叶斯推断

    Confident in the Crowd: Bayesian Inference to Improve Data Labelling in Crowdsourcing 作者 摘要 1 介绍 2 背 ...

  5. 【视频】线性回归中的贝叶斯推断与R语言预测工人工资数据|数据分享

    最近我们被客户要求撰写关于线性回归的研究报告,包括一些图形和统计输出. 在这个视频中,我们转向简单线性回归中的贝叶斯推断. 我们将使用一个参照先验分布,它提供了频率主义解决方案和贝叶斯答案之间的联系. ...

  6. 10分钟教你用睡觉这件事玩转贝叶斯推断

    编译 | AI科技大本营(ID:rgznai100) 参与 | 张建军 编辑 | 明 明 [AI科技大本营导读]贝叶斯法则和其他统计概念很难通过只用到字母的抽象公式.或者一些虚构的情景来理解.在作者W ...

  7. 贝叶斯推断方法 —— 从经验知识到推断未知

    贝叶斯推断方法 -- 从经验知识到推断未知 机器学习基础算法python代码实现可参考:zlxy9892/ml_code 1 什么是贝叶斯 ​ 在机器学习领域,通常将监督学习 (supervised ...

  8. 干货 | 基于贝叶斯推断的分类模型 机器学习你会遇到的“坑”

    本文转载自公众号"读芯术"(ID:AI_Discovery) 本文3153字,建议阅读8分钟. 本文讲解了在学习基于贝叶斯推断的分类模型中,我们需要的准备和方法. 数学准备 概率: ...

  9. 贝叶斯推断及其互联网应用(三):拼写检查

    (这个系列的第一部分介绍了贝叶斯定理,第二部分介绍了如何过滤垃圾邮件,今天是第三部分.) 使用Google的时候,如果你拼错一个单词,它会提醒你正确的拼法. 比如,你不小心输入了seperate. G ...

最新文章

  1. python字符串命名_从输入字符串到命名复制python 2.7
  2. 数据库远程访问数据库服务器网站和端口问题
  3. SaaS系统给企业带来了哪些优势
  4. Java判断一个数是否是回文数
  5. C#实现人脸识别【Users】
  6. linux下 最常用基本命令
  7. TCP三次握手及四次挥手详细图解(转)
  8. JUnit-三角形判断测试
  9. 正大期货市场基础知识
  10. [C/C++]宽字符与控制台输出
  11. Android KitKat 外部存储权限分析
  12. 让阿里告诉你, iOS开发者为什么要学 Flutter !
  13. 物联网常见概念总结(期末复习)
  14. css链接的线,CSS网页技巧:实现超级链接文字上划线和下划线
  15. ECCV 2022放榜了!1629篇论文中选,录用率不到20%...
  16. 网站快速排名百度首页搜索前十名
  17. python 使用 openpyxl 批量调整字体和样式
  18. 华大单片机HC32L136笔段式段码LCD显示
  19. html5 手机 麦克风,android 如何检测手机上的麦克风被占用的问题!
  20. amd cpu 参数识别

热门文章

  1. Python案例:四种方式编程求解一元二次方程
  2. VB案例:打印输出图形与文本
  3. Looking Back 2018
  4. 获取input file绝对路径_IO--File对象
  5. 微信小程序python_用python一步一步教你玩微信小程序【跳一跳】
  6. 2017.4.22 进制转换 思考记录
  7. noip2016的研究
  8. iphone降级 无需电脑_App 降级无需电脑,手机直接搞
  9. python控制多台手机,用python同时启动多个appium,并让多个手机同时执行脚本
  10. php搜索所有路线,php包含文件路径查找规则