变分法介绍

变分法是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

发表评论

电子邮件地址不会被公开。 必填项已用*标注

姓名 *

电子邮件 *

站点

评论

您可以使用这些HTML标签和属性:

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

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

    本文转载的原文链接:变分法和变分贝叶斯推断 另一篇CSDN链接学习:变分贝叶斯推断(Variational Bayes Inference)简介 变分法是17世纪末发展起来的一门数学分支,是泛函分析里 ...

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

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

  3. 基于贝叶斯概率模型的变分自编码

    目录 基于贝叶斯概率模型的变分自编码 贝叶斯模型 贝叶斯法则 在贝叶斯法则中,每个名词都有约定俗成的名称: 变分自编码 工作流程可以总结为: 基于贝叶斯概率模型的变分自编码 贝叶斯模型 机器学习中可以 ...

  4. 视觉机器学习20讲-MATLAB源码示例(6)-贝叶斯学习算法

    视觉机器学习20讲-MATLAB源码示例(6)-贝叶斯学习算法 1. 贝叶斯学习算法 2. Matlab仿真 3. 小结 1. 贝叶斯学习算法 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统 ...

  5. 朴素贝叶斯 半朴素贝叶斯_使用朴素贝叶斯和N-Gram的Twitter情绪分析

    朴素贝叶斯 半朴素贝叶斯 In this article, we'll show you how to classify a tweet into either positive or negativ ...

  6. java 稀疏贝叶斯算法_稀疏贝叶斯学习(SparseBayesianLearning).PDF

    稀疏贝叶斯学习(SparseBayesianLearning) 稀疏贝叶斯学习(Sparse Bayesian Learning) 张智林(Zhilin?Zhang)? z4zhang@ Depart ...

  7. 致敬贝叶斯以及自己对贝叶斯的一些见解

    记得大二的时候,概率论里面有全概率公式这么一个东西,可是当时仅仅为了应付考试并没有体会到贝叶斯的强大,接触机器学习之后,渐渐体会到贝叶斯的神奇,也能通过贝叶斯来解释更多的模型. 贝叶斯由来 与日常思维 ...

  8. 三种常用的朴素贝叶斯实现算法——高斯朴素贝叶斯、伯努利朴素贝叶斯、多项式朴素贝叶斯

    朴素贝叶斯 在机器学习中,朴素贝叶斯分类器是一系列以假设特征之间强(朴素)独立下运用贝叶斯定理为基础的简单概率分类器. 朴素贝叶斯算法Naive Bayes定义中有两个关键定义:特征之间强假设独立和贝 ...

  9. 机器学习之贝叶斯(贝叶斯定理、贝叶斯网络、朴素贝叶斯)

    一.概率知识点复习 (1)条件概率 就是事件A在另外一个事件B已经发生条件下的发生概率.条件概率表示为P(A|B),读作"在B条件下A的概率". (2)联合概率 可以简单的理解为事 ...

  10. [work]从贝叶斯方法谈到贝叶斯网络

    0 引言 事实上,介绍贝叶斯定理.贝叶斯方法.贝叶斯推断的资料.书籍不少,比如<数理统计学简史>,以及<统计决策论及贝叶斯分析 James O.Berger著>等等,然介绍贝叶 ...

最新文章

  1. iOS一些实用的技巧
  2. 获取jar中的资源文件途径
  3. 为什么要使用 using namespace std
  4. Intel Realsense D435 python (Python Wrapper)example -1: quick start (快速开始)
  5. c# 基于layui的通用后台管理系统_基于spring boot和vuejs的通用后台管理系统脚手架 guns-lite...
  6. javascript控制台_如何充分利用JavaScript控制台
  7. shell打开wifi命令_远程执行命令的填坑记录
  8. go字符串转byte_go语言学习-基本数据类型
  9. 第一个冲刺周期第二天补发
  10. 网站转换APP源代码/WebAPP源代码/网站生成APP源代码/Flutter项目/带控制端
  11. WinRAR v5.90 正式版简体中文汉化特别版本
  12. 大智慧有Linux炒股软件,UOS(Deepin Linux)安装炒股软件(通达信大智慧等)的方法...
  13. python中求绝对值的函数_python如何取绝对值 python取绝对值方法
  14. 台式计算机速度变慢的原因,电脑运行速度变慢的原因和解决方法
  15. 将PDF电子书转换成EPUB格式
  16. MVP释义:做最小可行产品
  17. 通用模块系列--日期操作工具类
  18. 3.Trie树(题:最大异或对)
  19. 【UEFI基础】UEFI网络框架之概述
  20. 基于VUE的SSR技术-姜威-专题视频课程

热门文章

  1. 【人工智能】八皇后问题-启发式求解
  2. python培训中心-python培训中心
  3. Android自定义垂直 SeekBar
  4. 【移动应用开发】实验2Android UI
  5. python xlsxwriter不覆盖写入_python学习-xlsxwriter模块
  6. Sql有条件的插入语句
  7. 简述DDNS和DNS区别
  8. android动画知乎,GitHub - ryanhoo/Zhihu-Parallax-Animation: 知乎 Android 客户端启动页的视差动画效果实现...
  9. python编程基础与数据分析_Python编程基础与数据分析
  10. activiti工作流学习(二)