变分推断 (Variational Inference) 解析

2023-05-16

前言

如果你对这篇文章感兴趣,可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」,查看完整博客分类与对应链接。


变分推断

在贝叶斯方法中,针对含有隐变量的学习和推理,通常有两类方式,其一是马尔可夫链蒙特卡罗法 (MCMC),其通过采样来近似估计后验概率分布;其二是变分推断,通过解析的方法近似计算后验概率分布。

假设联合概率分布 p ( x , z ) p(x,z) p(x,z),其中 x x x 是观测变量,即数据, z z z 是隐变量,目标是学习后验概率分布 p ( z ∣ x ) p(z\mid x) p(zx)

由于 p ( z ∣ x ) p(z\mid x) p(zx) 通常非常复杂,难以直接求解,因此变分推断使用分布 q ( z ) q(z) q(z) 来近似 p ( z ∣ x ) p(z\mid x) p(zx),并通过限制 q ( z ) q(z) q(z) 形式,得到一种局部最优、但具有确定解的近似后验分布。其中 q ( z ) q(z) q(z) 即为变分分布 (variational distribution), q ( z ) q(z) q(z) p ( z ∣ x ) p(z\mid x) p(zx) 之间的相似度通过 KL \text{KL} KL 散度衡量。

如下图所示,我们希望在集合 Q \mathcal{Q} Q 中找到 q ∗ ( z ) q^*(z) q(z) 使其与 p ( z ∣ x ) p(z\mid x) p(zx) 之间的 KL \text{KL} KL 散度尽可能小。

在这里插入图片描述
基于上述想法,对 KL ( q ( z ) ∥ p ( z ∣ x ) ) \text{KL}(q(z)\|p(z\mid x)) KL(q(z)p(zx)) 进行拆解:
KL ( q ( z ) ∥ p ( z ∣ x ) ) = ∫ q ( z ) log ⁡ q ( z ) d z − ∫ q ( z ) log ⁡ p ( z ∣ x ) d z = log ⁡ p ( x ) − { ∫ q ( z ) log ⁡ p ( x , z ) d z − ∫ q ( z ) log ⁡ q ( z ) d z } = log ⁡ p ( x ) − E q [ log ⁡ p ( x , z ) − log ⁡ q ( z ) ] . \begin{aligned} \text{KL}(q(z)\| p(z\mid x)) &= \int q(z) \log q(z) \text{d} z - \int q(z) \log p(z\mid x) \text{d} z \\ &= \log p(x) - \left\{\int q(z) \log p(x,z) \text{d} z - \int q(z) \log q(z) \text{d} z\right\} \\ &= \log p(x) - \mathbb{E}_q\left[\log p(x,z)-\log q(z)\right]. \end{aligned} KL(q(z)p(zx))=q(z)logq(z)dzq(z)logp(zx)dz=logp(x){q(z)logp(x,z)dzq(z)logq(z)dz}=logp(x)Eq[logp(x,z)logq(z)].

由于 KL \text{KL} KL 散度非负,因此:
log ⁡ p ( x ) ≥ E q [ log ⁡ p ( x , z ) − log ⁡ q ( z ) ] . \log p(x) \geq \mathbb{E}_q\left[\log p(x,z)-\log q(z)\right]. logp(x)Eq[logp(x,z)logq(z)].

不等式左端为证据 (Evidence),右端则为证据下界 (Evidence Lower Bound, ELBO \text{ELBO} ELBO),记作 L ( q ) L(q) L(q)(ELBO 经常出现于各类与贝叶斯有关的文章中)。

我们的目的是求解 q ( z ) q(z) q(z) 来最小化 KL ( q ( z ) ∥ p ( z ∣ x ) ) \text{KL}(q(z)\| p(z\mid x)) KL(q(z)p(zx)),由于 log ⁡ p ( x ) \log p(x) logp(x) 是常量,问题转化为最大化 ELBO \text{ELBO} ELBO L ( q ) L(q) L(q).

q ( z ) q(z) q(z) 形式过于复杂,最大化 ELBO \text{ELBO} ELBO 依然难以求解,因此通常会对 q ( z ) q(z) q(z) 形式进行约束,一种常见的方式是假设 z z z 服从分布
q ( z ) = ∏ i q i ( z i ) , q(z)=\prod_{i} q_i(z_i), q(z)=iqi(zi),

z z z 可拆解为一系列相互独立的 z i z_i zi,此时的变分分布称为平均场 (Mean Filed).

总结一下,变分推断常见步骤如下:

  • 定义变分分布 q ( z ) q(z) q(z)
  • 推导证据下界 ELBO \text{ELBO} ELBO 表达式;
  • 最大化 ELBO \text{ELBO} ELBO,得到 q ∗ ( z ) q^*(z) q(z),作为后验概率分布 p ( z ∣ x ) p(z\mid x) p(zx) 的近似。

广义 EM

上述变分推断过程可以与「广义 EM」联系起来,由于 log ⁡ p ( x ) ≥ ELBO \log p(x)\geq \text{ELBO} logp(x)ELBO 恒成立,若将模型参数 θ \theta θ 引入其中,即可得到:

log ⁡ p ( x ∣ θ ) ≥ E q [ log ⁡ p ( x , z ∣ θ ) − log ⁡ q ( z ) ] , \log p(x\mid \theta) \geq \mathbb{E}_q\left[\log p(x,z\mid \theta)-\log q(z)\right], logp(xθ)Eq[logp(x,zθ)logq(z)],

此时有两种理解:

  • 用分布 q ( z ) q(z) q(z) 近似联合概率分布 p ( x , z ∣ θ ) p(x,z\mid \theta) p(x,zθ),最小化分布距离 KL ( q ∥ p ) \text{KL}(q\|p) KL(qp)
  • 采用极大似然估计的思想,最大化对数似然函数 log ⁡ p ( x ∣ θ ) \log p(x\mid \theta) logp(xθ)(也可以理解为最大化证据)。

虽然两种视角不同,但结论一致,即最大化 ELBO \text{ELBO} ELBO,记作 L ( q , θ ) L(q,\theta) L(q,θ)。对应于广义 EM 算法,即采用迭代的方式,循环执行 E 步和 M 步,直至收敛:

  • 【E 步】固定 θ \theta θ,求 L ( q , θ ) L(q,\theta) L(q,θ) q q q 的最大化;
  • 【M 步】固定 q q q,求 L ( q , θ ) L(q,\theta) L(q,θ) θ \theta θ 的最大化。

上述迭代可以保证 log ⁡ p ( x ∣ θ ( t ) ) \log p(x\mid \theta^{(t)}) logp(xθ(t)) 不降,即一定会收敛,但可能会收敛到局部最优:
log ⁡ p ( x ∣ θ ( t − 1 ) ) = L ( q ( t ) , θ ( t − 1 ) ) ≤ L ( q ( t ) , θ ( t ) ) ≤ log ⁡ p ( x ∣ θ ( t ) ) \log p(x \mid \theta^{(t-1)})=L(q^{(t)}, \theta^{(t-1)}) \leq L(q^{(t)}, \theta^{(t)}) \leq \log p(x \mid \theta^{(t)}) logp(xθ(t1))=L(q(t),θ(t1))L(q(t),θ(t))logp(xθ(t))

其中「左边第一个等号」由变分推断原理 + E 步得到,「左边第一个不等号」由 M 步得到,「左边第二个不等号」由变分推断原理得到。


参考资料

  • 周志华. (2016). 机器学习. 清华大学出版社, 北京.
  • 李航. (2019). 统计学习方法. 清华大学出版社, 第 2 版, 北京.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

变分推断 (Variational Inference) 解析 的相关文章

  • Javascript基础知识整理—1

    1 JS数据类型 原始数据类型 xff1a boolean xff0c string xff0c null xff0c undefined xff0c symbol xff0c bigint xff0c number 引用类型 xff1a
  • React基础

    1 Context全局值 链接地址 链接地址 目的是为了避免一些外部的传参向下传递时需要通过一层层的组件 span class token comment defaultValue只有在找不到附近的Provider时才会起作用 span s
  • git基础知识

    1 对当前commit的内容进行修正 如果发现commit的内容有问题想要修改 xff0c 正常做法可以重新再commit一次 通过amend可以直接将commit和暂存区的内容进行合并 xff0c 就不需要再重新commit一次了 ame
  • Typescript基础

    1 Pick和Omit 源码地址 相似点 xff1a 都是对接口进行剪裁 keyof 操作符常和接口结构一起使用 xff0c 得到一组对象键值的字面量类型组成的联合类型 xff0c 如 a b c 我们也常用 keyof any 表示成员未
  • Javascript基础知识整理—2

    1 节流和防抖的实现 https blog csdn net weixin 45709829 article details 123910592 防抖 Debounce 在设定的n秒内只会执行最新的函数 防抖实现 立即执行和非立即执行 sp
  • node文件系统 常用文件处理方法

    打开文件 获取文件描述符 java件描述符 xff1a 被打开的文件分配的一个简单的数字作为标识符 span class token keyword const span fs span class token operator 61 sp
  • Electron基础

    安装 span class token comment 基于Vue span span class token number 1 span 全局安装Vue脚手架 npm install span class token operator s
  • node、npm 、package.json、Angular Cli、webpack之间的关系(Windows环境下)

    IDE xff1a webstorm xff0c 已安装angular插件 Angular Cli 依赖webpack xff0c 简化创建项目流程 xff1b npm属于node一部分 xff0c npm 从package json找对应
  • node文件系统—将目标文件夹中的所有文件复制到指定目录

    span class token keyword const span fs span class token operator 61 span span class token function require span span cla
  • Great Habits of Programmer(程序员的好习惯)

    原文出处 xff1a https github com benjycui benjycui github io issues 1 Most of you heard about Refactoring Improving the Desig
  • You -- Yes, You -- Can Speak at a Conference(你 -- 是的,你 -- 可以在会议上发言)

    原文出处 xff1a https engineering appfolio com appfolio engineering 2017 1 9 you yes you can speak at a conference I ve been
  • 自制前端项目脚手架

    准备工作 xff08 一些常用库 xff09 ora 可以用于表示当前模板的状态 span class token keyword const span oraIcon span class token operator 61 span s
  • 一些奇奇怪怪的问题收集

    1 parseInt string radix span class token keyword const span arr span class token operator 61 span span class token punct
  • 微前端—qiankun:主应用和子应用之间的传值问题

    主应用给子应用传值 主应用配置 span class token comment action js span span class token comment 主应用当中将默认值提出来 xff0c 方便其他功能也要修改 span span
  • Mysql的sql优化方法

    Mysql的sql优化方法 1 选择最合适的字段属性 Mysql是一种关系型数据库 xff0c 可以很好地支持大数据量的存储 xff0c 但是一般来说 xff0c 数据库中的表越小 xff0c 在它上面执行的查询也就越快 因此 xff0c
  • 在jupyter NoteBook使用Pytorch进行MNIST实现

    34 流程 34 1 加载必要的库 import torch nn as nn import torch nn functional as F import torch import torch optim as optim from to
  • IP地址

    CIDR采用各种长度的 34 网络前缀 34 来代替分类地址中的网络号和子网号 xff0c 其格式为 xff1a IP地址 61 lt 网络前缀 gt lt 主机号 gt 为了区分网络前缀 xff0c 通常采用 34 斜线记法 34 xff
  • Snipaste截图软件的下载和使用(日常常用的一些功能)

    文章目录 前言一 如何安装二 如何使用1 开始截图2 快速复制截图3 快速将截好的图缩小4 可同时进行多个截图放在一边5 获取截图中的rgb格式颜色或16进制HEX来表示颜色6 其他 总结 前言 强烈推荐这款截图工具Snipaste xff
  • 盘符没有显示,磁盘管理器提示磁盘没有初始化(已解决)

    一 问题 插入移动硬盘 xff0c 文件资源管理器未显示对应的磁盘 xff0c 拔出硬盘重新插入也没有用 打开磁盘管理 xff0c 提示磁盘没有初始化 xff1a 二 解决方法 右击window图标 xff0c 打开磁盘管理或者计算机管理
  • vue3使用sse

    以下是chatgpt4对于sse技术的阐述 SSE Server Sent Events 技术是一种基于 HTTP 的推送技术 xff0c 通过一个持久性的 HTTP 连接 xff0c 服务器可以将实时数据推送给客户端 xff0c 而客户端

随机推荐

  • ubuntu-firefox有网但是打不开网页的解决办法

    1 检查ubuntu右上角联网开关是否打开 xff0c 需要勾选Rnable Networking 2 如果能ping通其他主机地址 xff0c 浏览器却连不上网 xff0c 很有可能是DNS域名解析的问题 解决办法如下 xff1a 查看域
  • Vue 前端笔记 采坑 | verbose stack Error: vue-element-xxx build: `vue-cli-service build`

    vue 项目 运行 npm run build 出现如下错误 xff0c 记录下来 xff0c 希望可以解答 这是在GitHub 上 找的一份项目 https github com chachaxw vue element quick st
  • Linux_CenterOS环境下JDK安装

    JDK配置 1 卸载已有的open jdk 查看目前已有的JDK rpm qa grep jdk 输出如下 copy jdk configs 3 3 10 el7 5 noarch java 1 8 0 openjdk 1 8 0 181
  • 树莓派上设置程序开机自启动

    方法一 xff1a 向rc local文件添加启动代码 修改rc local文件 xff1a sudo nano etc rc local 在打开的rc local找到exit 0 xff0c 在exit 0 之前添加一行代码 xff1a
  • smartcar仿真学习记录

    操作系统 xff1a ubuntu 18 04 ROS版本 xff1a melodic 本记录是跟随古月居的smartcar教程进行学习的 终端 文件夹下的操作 首先创建目录 也就是catkin ws src mkdir p smartca
  • 在树莓派上手动添加ROS包(usb_cam)

    在ROS下 xff0c 下载包源码编译后 xff0c 手动添加包 系统 xff1a ubuntu1804 xff08 树莓派 xff09 在树莓派上安装了ubuntu xff0c 但树莓派是arm架构 xff0c 所以用的下载源也不同于在电
  • /etc/apt/sources.list

    统一格式 xff1a deb https A B C main restricted universe multiverse deb src https A B C main restricted universe multiverse d
  • WARNING: pip is being invoked by an old script wrapper.

  • Keil 添加库文件(xxx.h)路径

  • 时间复杂度中的log(n)底数到底是多少?

    其实这里的底数对于研究程序运行效率不重要 xff0c 写代码时要考虑的是数据规模n对程序运行效率的影响 xff0c 常数部分则忽略 xff0c 同样的 xff0c 如果不同时间复杂度的倍数关系为常数 xff0c 那也可以近似认为两者为同一量
  • ubuntu1804(树莓派)使用AV接口播放音频问题

    2条消息 在运行ubuntu 18 04的树莓派上播放声音 Qrpucp的博客 CSDN博客 config txt还需加入 audio pwm mode 61 2
  • 在Modelsim内编辑testbench并重新仿真

    方法同样适用于编辑 v文件
  • 【SSH连接阿里云服务器失败解决办法】

    SSH连接阿里云服务器失败解决办法 1 添加安全组规则 找到要修改的实例 点击实例名 xff0c 进入实例详情界面 xff0c 点击 配置安全组规则 点击配置规则 添加一条如下图所示的入方向端口22 测试连接是否成功 xff0c 若不成功
  • sklearn实战-----6.聚类算法K-Means

    1 概述 1 1 无监督学习与聚类算法 在过去的五周之内 xff0c 我们学习了决策树 xff0c 随机森林 xff0c 逻辑回归 xff0c 他们虽然有着不同的功能 xff0c 但却都属于 有监督学习 的一部分 xff0c 即是说 xff
  • 过于神奇的 ChatGPT

    实在好奇究竟用的什么数据集 xff0c 居然能得到下述问答 xff1a 最后又扣回了第一个问题 按照你的要求直接给出答案 xff0c 确实很强 xff01
  • 优质 CS 读博 (PhD) 经验贴汇总

    前言 如果你对这篇文章感兴趣 xff0c 可以点击 访客必读 指引页 一文囊括主页内所有高质量博客 xff0c 查看完整博客分类与对应链接 Advice for early stage Ph D students 读博的核心是在研究上取得进
  • 推荐系统中的协同过滤算法

    前言 如果你对这篇文章感兴趣 xff0c 可以点击 访客必读 指引页 一文囊括主页内所有高质量博客 xff0c 查看完整博客分类与对应链接 概述 协同过滤是一种推荐算法 xff0c 其通常建模为 m m m 个用户 xff0c n
  • 哈希函数的学习算法整理

    前言 如果你对这篇文章感兴趣 xff0c 可以点击 访客必读 指引页 一文囊括主页内所有高质量博客 xff0c 查看完整博客分类与对应链接 概述 哈希函数学习的两个步骤 xff1a 转为二进制编码 xff1a 可以先降维成实数 xff0c
  • O(1) 的离散概率分布采样方法 - Alias Method

    前言 如果你对这篇文章感兴趣 xff0c 可以点击 访客必读 指引页 一文囊括主页内所有高质量博客 xff0c 查看完整博客分类与对应链接 Alias Method 给定一个离散概率分布 p 61 0 3
  • 变分推断 (Variational Inference) 解析

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