专栏首页专知【深度】专知主题链路知识推荐#8-机器学习中的变分推断方法(Variational Inference)简介01

【深度】专知主题链路知识推荐#8-机器学习中的变分推断方法(Variational Inference)简介01

【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视觉等)、大数据、编程语言、系统架构。使用请访问专知 进行主题搜索查看 - 桌面电脑访问www.zhuanzhi.ai, 手机端访问www.zhuanzhi.ai 或关注微信公众号后台回复" 专知"进入专知,搜索主题查看。今天给大家继续介绍我们独家整理的机器学习——机器学习中的变分推断方法(Variational Inference)简介。

今天的变分推断专题邀请到中科院自动化研究所博士生ylfzr同学来分享他关于机器学习中变分推断方法的简介教程,这一部分理论由于图模型和变分自编码器等等也变得越来越重要,计划推出一系列关于变分推断方法的教程,敬请期待!

1、变分推断方法简介

变分方法起源于18世纪的欧拉、拉格朗日等的研究(calulus of variations)。它可以看作是对标准微积分的扩展。标准微积分关注寻找函数的导数, 我们常常利用一阶优化条件(1st order optimal condition),即在该点处导数为零来寻找函数的极值。 注意此时我们寻找的最优点(optimal point)一般来讲是实数空间内的一个点。我们可以将函数想象为一个映射,这个映射以一个变量的值作为输入,返回函数值作为输出。类似地,我们定义泛函(functional)作为一个映射,它以一个函数作为输入,返回泛函的值作为输出。一个例子是熵H[p],它的输入是一个概率分布p(x),如公式(1)所示:

在概率推理中,我们经常需要优化的量是一个泛函。研究所有可能的输入函数,找到最大化或者最小化泛函的函数就是问题的解。变分推理,即是在所有可能的概率分布中,找到最优的来近似我们所需要的部分(通常是后验概率)。通常情况下变分推理问题会被转化成为优化问题,可以使用常规的高效优化求解器求解。因此相比其他的技术如蒙特卡洛马尔科夫链(MCMC)采样更适用于大规模数据的应用场景,想学习蒙特卡洛马尔科夫链完整教程,请看专知推出的马尔科夫链蒙特卡洛采样入门教程

变分推断方法最早借鉴了统计物理的研究方法。1987年,Peterson 和 Anderson 首次使用了均值场(mean field) 来求解神经网络。90年代早期, Micheal Jordan的研究组将其拓展到多种统计模型中。

几乎与此同时,Neal 和 Hinton 将变分推断与EM算法联系起来,大大推动了该方法的发展。该方法开始应用于一些复杂模型比如mixture of experts, HMM 等。在机器学习大牛Micheal Jordan, Zoubin Ghahramani, David Blei, Max Welling等的推动下,变分方法已经广泛被运用于各个领域中:概率编程, 强化学习,深度学习等等, 成为了解决或解释机器学习问题很有力的工具。

2、贝叶斯学习中的变分推断方法

由于变分推断主要运用于贝叶斯学习的场景下,我们首先简单介绍贝叶斯学习,引入变分推断方法,并且最后给出一个采用变分推理方法求解传统共轭模型的简单例子(这部分会在变分推断方法简介02中推出):变分方法求解一元高斯。以后我们会介绍非共轭模型的求解并给出一个例子: 变分自编码器VAE(variational autoencoder)的求解。

2.1 贝叶斯学习

我们已经知道我们常见的大多数学习问题的核心是模型的参数估计,通过最大似然(MLE)或最大后验概率(MAP)估计我们可以得到当前模型的较好的参数,由于一组参数对应参数空间的一个点, 这类估计方法又被称为“点估计”。然而当我们使用点估计去完成一定的任务时, 常常会遇到一些问题, 比如模型过拟合,比如模型在数据稀疏时候表现不佳等。其原因之一就是我们太过于“确信”我们学到的模型。下图可以给我们一个直观的感受。

图: 回归模型中的不确定性[4]

如上图所示, 在纵轴的右侧我们有较多的数据点,因此我们可以得到较好的模型估计来拟合数据。 在这个区域,我们相信我们得到的模型有较好的表现。(蓝色区域颜色的深浅显示了我们模型的确信程度或“方差”) 而在纵轴的左侧,几乎没有任何数据点,在这一区域,任何一个“点估计”(对应一条拟合曲线)很大可能性都会给出错误的预测结果。我们说,系统并不能确定在该区域的预测值, 任何 “鲁莽”的预测行为都是不可靠的。 那么,如何才能让我们学习的系统知道它此时并不能给出合适的预测呢?我们可以将对模型(参数)的信念(Belif)加入到学习中:我们将模型中的参数扩展为随机变量,其方差就代表了模型对当前的参数的不确定性。这就是之前我们讲到过的贝叶斯估计。具体可以查看专知推出的机器学习中的贝叶斯参数估计

2.2 变分推断

贝叶斯估计的核心任务是在给定观测数据 X 的条件下,计算隐含变量 Z 的后验分布

。然而对于大多数的模型来讲,两方面的原因导致直接计算这个后验概率是不可行的:配给函数(Partition function)需要积分或求和的变量空间过大,可能要求指数时间的运算。该后验概率可能没有良好的形式,我们无法解析地给出该分布的表达。

当精确的推理不可行时,我们转而希望获得一个近似的结果。我们假设一个容易的分布形式来替代精确的后验分布,逐步迭代优化使得二者尽量接近,这就是最基本的近似变分推理的想法。

下面我们开始具体解释变分推断的工作过程。

首先定义联合概率分布我们就可以得到一个概率模型:

,其中, x 是我们可以观测到的变量, z为隐含变量。 在第一部分的例子中,数据点即为观测变量X, 模型的参数即为隐含变量Z。

对未知变量的推理即在观测数据的基础上更新隐含变量的后验,如公式(2)所示:

类似于最大似然估计,我们仍然希望在我们学习到的模型可以最大可能地产生出我们的观测样本, 即最大化

。 由于我们无法直接表示

, 我们将该边缘概率分解为下式形式(公式(3)):

其中,

为我们假设的用来近似

的分布,

为两分布的KL距离(Kullback-Leibler), 用于衡量两分布之间的差异大小,当两分布完全一致时,该量为0。 由于KL散度的取值永远大于等于0,

是数据的对数似然lnp(x)的一个下界,习惯上被叫做变分下界(evidence lower bound )。我们要优化近似分布

使得其尽量接近

, 即使二者的KL散度最小等价于优化

使得L最大,下面我们只考虑优化变分下界的问题。当近似分布采用参数化概率分布

时,ELBO变成了参数

的函数。下图展示了通过优化近似分布的参数来最大化ELBO, 即最小化KL散度的过程。

图: 变分推理示意

对于变分推断如何求解以及如何应用,敬请期待后续的教程!

参考资料

[1] C.Bishop “Pattern Recognition and Machine Learning” 2006

[2] D.Blei A.Ng M. Jordan Latent Dirichlet Allocation[M]. JMLR.org, 2003.

[3] Y.Gal Uncertainty in Deep Learning 2016

[4] 徐亦达 Statistical Notes http://www-staff.it.uts.edu.au/~ydxu/statistics.htm

[5] NIPS 2016 tutorial: Variational Inference: Foundations and Morden Methods

上面就是关于机器学习中变分推断方法的一个简介,后续会不断推出它的一系列应用教程,原创不易,请多多支持,有什么问题可以在我们的专知公众号平台上交流或者加我们的专知-人工智能交流群 426491390

本文分享自微信公众号 - 专知(Quan_Zhuanzhi),作者:ylfzr/钱胜胜

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【ACMMM17获奖比赛论文报告】让机器告诉你谁是下一个明星?- Social Media Prediction分享(附下载)

    导读 哪部电影将会爆红?谁即将获得格莱美大奖?明天哪些股票会涨?人们对未来有着许许多多的预测,这些预测不仅仅是为了娱乐,还能为那些预测正确的人带来真正的价值。因...

    WZEARW
  • 【干货】如何写代码 -编程内功心法

    写代码就是学一门语言然后开始撸代码吗?看完了我的《GoF设计模式》系列文章的同学或者本身已经就是老鸟的同学显然不会这么认为。 编程是一项非常严谨的工作!虽然我们...

    WZEARW
  • 【DeepMind 公开课-深度强化学习教程笔记04】不基于模型的预测

    点击上方“专知”关注获取更多AI知识! 【导读】Google DeepMind在Nature上发表最新论文,介绍了迄今最强最新的版本AlphaGo Zero,不...

    WZEARW
  • 如何写好 5000 行的 SQL 代码

    经历了大大小小的 MIS 系统,小到几人用的协作系统,几十人用的 OA 系统,到上千人用的 MES/ERP 系统,再到百万人用的电商系统,存储过程的影子在半个世...

    Lenis
  • [面板分享]传奇域名bt.cn公司的传奇面板程序“宝塔”

    Youngxj
  • TP5最新getshell漏洞

    ThinkPHP 是一个快速、简单的基于 MVC 和面向对象的轻量级 PHP 开发框架,遵循 Apache2 开源协议发布。ThinkPHP从诞生以来一直秉承简...

    周俊辉
  • 答粉丝问|GUI编程实例化之咖啡店点单系统

    接到粉丝在圈子里留言想知道怎么写一个简单的咖啡店点单系统,大致满足以下要求:进入程序会有欢迎界面,然后显示咖啡品种以及对应单价,可以搜索相应商品输入数量进行点单...

    算法与编程之美
  • 【奇思淫技】TP5最新getshell漏洞

    因为php7之后基本确定舍弃了函数assert(),因此有关于assert的所有payload全部失效!!! 虽然网上有很多关于tp5+php7的文章,但是我尝...

    徐焱
  • 从失败中学习区块链实验

    过去的6个月里,比特币和Ethereum等加密货币从全球经济的零头转向主流银行会议的中心舞台。目前的热潮主要是对加密货币和代币的估值飙升,并将其用作投资。所有这...

    首席架构师智库
  • Python tuple(元组)

    tuple即元组,与list类似,差别在于tuple中的元素一旦初始化就不可更改,即tuple是操作受限制的list(不能更改)。 list参见:http...

    Steve Wang

扫码关注云+社区

领取腾讯云代金券