ref:http://www.crescentmoon.info/?p=709#more-709

问题描述

变分推断是一类用于贝叶斯估计和机器学习领域中近似计算复杂(intractable)积分的技术,它广泛应用于各种复杂模型的推断。本文是学习PRML第10章的一篇笔记,错误或不足的地方敬请指出。

先给出问题描述。记得在上一篇EM的文章中,我们有一个观察变量X={x{1},…,x{m}}和隐藏变量Z={z{1},…,z{m}}, 整个模型p(X,Z)是个关于变量X,Z的联合分布,我们的目标是得到后验分布P(Z|X)的一个近似分布。

在之前介绍过Gibbs Sampling这一类Monte Carlo算法,它们的做法就是通过抽取大量的样本估计真实的后验分布。而变分推断不同,与此不同的是,变分推断限制近似分布的类型,从而得到一种局部最优,但具有确定解的近似后验分布。

之前在EM算法的介绍中我们有似然的式子如下:

lnp(X)=L(q)+KL(q||p)(1)

其中

L(q)=∫q(Z)lnp(X,Z)p(Z)dZ(2)
KL(q||p)=−∫q(Z)lnp(Z|X)q(Z)dZ(3)

这里公式中不再出现参数θ,因为参数不再是固定的值,而变成了随机变量,所以也是隐藏变量,包括在Z之内了。

这里的KL散度KL(q||p)描述了估计分布与真实分布的差别。当KL(q||p)=0时,俩分布就是相同的。因为我们不知道真实的后验分布是啥,所以直接最小化KL是做不到的,但是我们可以通过最大化L(q) 来达到这个目的。可以认为L(q)越大,则模型对数据拟合程度越好。由于lnp(X)≥L(q)始终成立,所以L(q)被称作证据下界(evidence lower bound),见图1。

为了极大化L(q),我们需要选择合适的函数q,使其便于计算。要注意到L(q)并非普通的函数,而是以函数q为自变量的函数,这就是泛函。泛函可以看成是函数概念的推广,而变分方法是处理泛函的数学领域,和处理函数的普通微积分相对。变分法最终寻求的是极值函数:它们使得泛函取得极大或极小值。

条件独立假设

如果参数之间具有相互依赖关系(mutually dependent),求积分时会比较麻烦。所以我们为q(Z)的分布加一个限制条件,将Z分为M组变量,组与组之间变量相互独立,这样q的分布就可以分解为

q(Z)=∏i=1Mqi(Zi)(4)

要注意我们对每个 q(Zi)的函数形式并没有做任何限制。这种将 q分解的方法叫做平均场理论(mean field theory),主要基于基于系统中个体的局部相互作用可以产生宏观层面较为稳定的行为这个物理思想。

求解过程

根据以上假设,我们来最大化下界L(q),因为假设qi(Zi)分布之间都是独立的,所以我们依次轮流来优化,以qj(Zj)为例(为了简单起见,缩写为qj)。

L(qj)=∫∏iqj{lnp(X,Z)−∑ilnqi}dZ=∫qj{∫lnp(X,Z)∏i≠jqidZi}dZj−∫qjlnqjdZj+const=∫qjlnp~(X,Zj)dZj−∫qjlnqjdZj+const(5)

这里我们定义一个新分布 lnp~(X,Zj)为

lnp~(X,Zj)=∫lnp(X,Z)∏i≠jqidZi(6)

我们发现它刚好是除去与 qj分布相关的 zj之后原似然的期望值,有

lnp~(X,Zj)=Ei≠j[lnp(X,Z)]+const(7)

然后看式(5)的最后部分,就是 qj(Zj)和 lnp~(X,Zj)的KL散度的负值,这里我们固定 qi≠j不变,那么最大化 L(q)就变成了最小化这个KL散度,而KL 散度的最小值在 qj(Zj)=lnp~(X,Zj)时取到。所以,最优解 q∗j(Zj)为

lnq∗j(Zj)=Ei≠j[lnp(X,Z)]+C(8)

另加的这个C是为了归一化整个分布,有 C=∫exp(Ei≠j[lnp(X,Z)])dZj 。然后依次更新其他 Zj,最终相互迭代达到稳定。

变分下界

我们也可以直接衡量模型的下界。在实际应用中,变分下界可以直接判断算法是否收敛,也可以通过每次迭代都不会降低这一点来判断算法推导和实现的部分是否存在问题。

L(q)=∫q(Z)lnp(X,Z)p(Z)dZ=Eq[lnp(X,Z)]−Eq[lnq(Z)]

值得一提的是,如果我们能知道变分后验每个因子的函数形式的话,我们还有另一种估计参数的方法,这个详见 例子 。

变分推断和Gibbs Sampling之间的联系

变分推断和Gibbs sampling其实挺相似的:

  • 在Gibbs Sampling中,我们从条件分布P(Zj|Z¬j)中抽样。
  • 在变分推断中,我们迭代Zj的分布Q(Zj)∝1Cexp{Ei≠j[lnp(X,Z)]}

参考:
1.《Pattern_Recognition_and_Machine_Learning》第10章
2.http://en.wikipedia.org/wiki/Variational_Bayesian_methods

变分推断(variational inference)学习笔记(1)——概念介绍相关推荐

  1. 变分推断 (Variational Inference) 解析

    前言 如果你对这篇文章感兴趣,可以点击「[访客必读 - 指引页]一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接. 变分推断 在贝叶斯方法中,针对含有隐变量的学习和推理,通常有两类方式,其一 ...

  2. 软考高项之学习笔记——质量成本概念

    软考高项之学习笔记--质量成本概念 一.常见混淆概念 二.质量成本相关概念解释 1.质量成本概念 2.一致性成本 3.非一致性成本 三.历年真题 一.常见混淆概念 质量成本.一致性成本.非一致性成本. ...

  3. Hadoop学习笔记一 简要介绍

    Hadoop学习笔记一 简要介绍 这里先大致介绍一下Hadoop.     本文大部分内容都是从官网Hadoop上来的.其中有一篇介绍HDFS的pdf文档,里面对Hadoop介绍的比较全面了.我的这一 ...

  4. MongoDB学习笔记(一) MongoDB介绍及安装

    系列目录 MongoDB学习笔记(一) MongoDB介绍及安装     MongoDB学习笔记(二) 通过samus驱动实现基本数据操作     MongoDB学习笔记(三) 在MVC模式下通过Jq ...

  5. Typescript 学习笔记一:介绍、安装、编译

    前言 整理了一下 Typescript 的学习笔记,方便后期遗忘某个知识点的时候,快速回忆. 为了避免凌乱,用 gitbook 结合 marketdown 整理的. github地址是:ts-gitb ...

  6. Ui学习笔记---EasyUI的介绍

    Ui学习笔记---EasyUI的介绍 -------------------------- 1.组织:   a.EasyUI官方:http://www.jeasyui.com     EasyUI是一 ...

  7. TCP/IP详解学习笔记-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  8. Computer vision: models, learning and inference 学习笔记1:引言

    学习笔记1:引言 目的 model,learning and inference 的含义 独特之处:基于模型的知识结构体系 最关键的是:模型(model) 目的 学习<computer visi ...

  9. HFS学习笔记——基本概念

    HFSS软件学习笔记 一.HFSS中的边界条件(Boundaries) 边界条件定义了求解区域的边界以及不同物体交界处的电磁场特性,是求解麦克斯韦方程的基础. 只有在假定场矢量是单值.有界.并且沿空间 ...

最新文章

  1. Centos下Yum安装PHP5.5,5.6
  2. 进大厂全靠自学,微软头条实习生现身说法:我是这样自学深度学习的丨课程传送门...
  3. Go语言的DES加密(CBC模式, ECB模式) ---- 与java加密互通(转)
  4. mui框架提供的相关api
  5. 用Flash创建一个类似Nano War游戏的教程
  6. google bigtable论文原文_CTR论文笔记[1]:Wideamp;Deep
  7. 滞后分析rstudio_使用RStudio进行A / B测试分析
  8. 复制过去格式不一样_不一样的立春节气:一个新的轮回开启,万物更新,疫情终将过去...
  9. arm b bl 地址无关码_32位和64位下的arm_pwn初探
  10. 今日重磅!恺明大神又一力作!重新思考万能的ImageNet预训练模型
  11. 又一个好友离开北京了.....
  12. 超 60 万 GPS 定位服务被曝漏洞,用户信息或将暴露!
  13. 大数据分析平台有哪些功能
  14. NeatUpload
  15. 基于keras实现双向GRU的中文情感分析
  16. 中南大学计算机学院2021复试名单,2021年中南大学研究生拟录取名单整理汇总(各学院)...
  17. Interview QA-COBOL COBOL II
  18. iOS开发之网络通信(1)—— 计算机网络
  19. PL/SQL计算质数
  20. 如何查看Linux磁盘空间大小

热门文章

  1. 【转】图解领带的打法10种
  2. 运用遗传算法求解函数极值(fortran)
  3. 综合布线系统计算机辅助设计nVisual
  4. 深度学习理论与实践——课程笔记(一)
  5. conda冗余package的清理(.conda/pkgs)
  6. 自动驾驶创业方向有变化?如何突破技术瓶颈?
  7. 2021钳工技能高考成绩查询,这里有2021钳工时间和报名费用以及流程
  8. java史上最全面试题(转载于骆昊)
  9. 工程线图中计算机的处理方法,CAD建筑施工图绘制复杂施工放线方法
  10. HyperV Windows系统端口转发给主机 2021-12-13