变分推断公式推导

变分推断公式推导

背景介绍

机器学习中的概率模型可分为频率派和贝叶斯派。频率派最终是求一个优化问题,而贝叶斯派则是求一个积分问题

频率派

举几个例子:

线性回归

样本数据:{(xi,yi)}i=1N\{(x_i,y_i)\}_{i=1}^N{(xi,yi)}i=1N

  • 模型:f(w)=wTxf(w)=w^Txf(w)=wTx

  • 策略:损失函数:L(w)=∑i=1N∣∣wTxi−yi∣∣2L(w)=\sum_{i=1}^N||w^Tx_i-y_i||^2L(w)=i=1N∣∣wTxiyi2w^=arg⁡min⁡wL(w)\hat{w}=\arg\min_wL(w)w^=argminwL(w) 这就是一个无约束优化问题。

  • 算法:解法

    • 解析解:线性回归问题形式比较简单,可直接由最小二乘法求出解析解:w∗=(XTX)−1XTYw^*=(X^TX)^{-1}X^TYw=(XTX)1XTY
    • 数值解:对于其他较为复杂的算法无法解析。有一些求数值解的方法,如梯度下降等。

SVM

  • 模型:f(w)=sign(wTx+b)f(w)=sign(w^Tx+b)f(w)=sign(wTx+b)
  • 策略:损失函数:min12wTws.t.yi(wTxi+b≥1)min\frac{1}{2}w^Tw\ \ \ \ s.t.\ y_i(w^Tx_i+b\ge 1)min21wTw    s.t. yi(wTxi+b1)。 是一个有约束的凸优化问题。
  • 算法:解法有 QP、拉格朗日对偶等。

EM算法
θ(t+1)=arg⁡max⁡θ∫Zlog⁡P(X,Z∣θ)P(Z∣X,θ(t))dZ\theta^{(t+1)}=\arg\max_{\theta}\int_Z\log P(X,Z|\theta)P(Z|X,\theta^{(t)})dZ θ(t+1)=argθmaxZlogP(X,Zθ)P(ZX,θ(t))dZ
EM算法也是通过迭代来求解最大对数似然的数值解。

贝叶斯派

为什么说贝叶斯派是求积分呢?我们先来看贝叶斯定理:
P(θ∣X)=P(X∣θ)P(θ)P(X)P(\theta|X)=\frac{P(X|\theta)P(\theta)}{P(X)} P(θX)=P(X)P(Xθ)P(θ)
贝叶斯推断,要求得后验 P(θ∣X)P(\theta|X)P(θX)

贝叶斯决策。决策可以理解为就是做预测。即 XXX 为已知的 NNN 个样本数据。决策就是求:
P(x~∣X)=∫θP(x~∣X)dθ=∫θP(x~∣θ)P(θ∣X)dθP(\tilde{x}|X)=\int_\theta P(\tilde{x}|X)d\theta=\int_\theta P(\tilde{x}|\theta)P(\theta|X)d\theta P(x~X)=θP(x~X)dθ=θP(x~θ)P(θX)dθ
在通过贝叶斯推断求得后验 P(θ∣X)P(\theta|X)P(θX) 之后,就可以按照上式进行贝叶斯决策。而且上面这个式子也可以写成关于后验的期望的形式(期望就是求积分):
P(x~∣X)=Eθ∣X[P(x~∣θ)]P(\tilde{x}|X)=\mathbb{E}_{\theta|X}[P(\tilde{x}|\theta)] P(x~X)=EθX[P(x~θ)]
贝叶斯派的关键就是求得后验 P(θ∣X)P(\theta|X)P(θX) ,即贝叶斯推断的过程。贝叶斯推断又可分为精确推断和近似推断:

  • 精确推断
  • 近似推断
    • 确定性近似:变分推断(本文的主题)
    • 随机近似:MCMC、MH、Gibbs

公式推导

符号含义:XXX 为观测数据,ZZZ 为隐变量和参数。注意这里参数 θ\thetaθ 也一同表示在 ZZZ 中了。

再强调一下我们的目的:求后验 P(Z∣X)P(Z|X)P(ZX)

下面的前几步与 EM 算法导出的做法类似,详见 EM算法公式推导 ,区别只是把参数 θ\thetaθ 合并到了 ZZZ 中,步骤这里就不一一说明了。
log⁡P(X)=log⁡P(X,Z)−log⁡P(Z∣X)=log⁡P(X,Z)q(Z)−log⁡P(Z∣X)q(Z)=∫Zq(Z)log⁡P(X,Z)q(Z)dZ−∫Zq(Z)log⁡P(Z∣X)q(Z)dZ=ELBO+KL(q(Z)∣∣P(Z∣X))=L(q)+KL(q(Z)∣∣P(Z∣X))\begin{align} \log P(X)&=\log P(X,Z)-\log P(Z|X)\\ &=\log \frac{P(X,Z)}{q(Z)}-\log \frac{P(Z|X)}{q(Z)}\\ &=\int_Zq(Z)\log\frac{P(X,Z)}{q(Z)}dZ-\int_Zq(Z)\log \frac{P(Z|X)}{q(Z)}dZ\\ &=ELBO+KL(q(Z)||P(Z|X))\\ &=\mathcal{L}(q)+KL(q(Z)||P(Z|X)) \end{align} logP(X)=logP(X,Z)logP(ZX)=logq(Z)P(X,Z)logq(Z)P(ZX)=Zq(Z)logq(Z)P(X,Z)dZZq(Z)logq(Z)P(ZX)dZ=ELBO+KL(q(Z)∣∣P(ZX))=L(q)+KL(q(Z)∣∣P(ZX))
经过一系列变形,得到 EBLO+KLEBLO+KLEBLO+KL 的形式,这里我们将 ELBOELBOELBO 记为 L(q)\mathcal{L}(q)L(q) ,就是所谓的变分

我们是要求的是后验 P(Z∣X)P(Z|X)P(ZX) ,如果其与 q(Z)q(Z)q(Z) 的 KL 散度接近0,那么就能用 q(Z)q(Z)q(Z) 来对其进行近似。而等式左边 log⁡P(X)\log P(X)logP(X)ZZZ 无关,因此 ELBO+KLELBO+KLELBO+KLq(Z)q(Z)q(Z) 变化时是个定值,因此,要让 KL 尽量小就转换为让 ELBO 尽量大,即有:
q^(Z)=arg⁡max⁡q(Z)L(q)→q(Z)≈P(Z∣X)\hat{q}(Z)=\arg\max_{q(Z)}\mathcal{L}(q)\ \ \ \ \rightarrow\ \ \ \ q(Z)\approx P(Z|X) q^(Z)=argq(Z)maxL(q)        q(Z)P(ZX)
接下来,我们根据平均场理论,将 q(Z)q(Z)q(Z) 划分为 MMM相互独立的份:
q(Z)=∏i=1Mqi(Zi)q(Z)=\prod_{i=1}^Mq_i(Z_i) q(Z)=i=1Mqi(Zi)
之后在求解的时候,我们会先固定 q1,q2,…,qj−1,…,qMq_1,q_2,\dots,q_{j-1},\dots,q_Mq1,q2,,qj1,,qM ,然后求解单个分量 qjq_jqj ,最后将所有分量连乘起来,得到完整的 q(Z)q(Z)q(Z)

首先先将 q(Z)q(Z)q(Z) 代回到原式中:
L(q)=∫Zq(Z)log⁡P(X,Z)dZ−∫Zlog⁡q(Z)dZ=①−②\mathcal{L}(q)=\int_Zq(Z)\log P(X,Z)dZ-\int_Z\log q(Z)dZ=①-②\\ L(q)=Zq(Z)logP(X,Z)dZZlogq(Z)dZ=
一项一项地来看:
①=∫Zq(Z)log⁡P(X,Z)dZ=∫Z∏i=1Mqi(Zi)log⁡P(X,Z)dZ=∫Zjqj(Zj)∫Zi(i≠j)∏i≠jMqi(Zi)log⁡P(X,Z)dZi(i≠j)dZj=∫Zjqj(Zj)∫Zi(i≠j)log⁡P(X,Z)∏i≠jMqi(Zi)dZi(i≠j)dZj=∫Zjqj(Zj)⋅E∏i≠jMqi(Zi)[log⁡P(X,Z)]dZj\begin{align} ①&=\int_Zq(Z)\log P(X,Z)dZ\\ &=\int_Z\prod_{i=1}^Mq_i(Z_i)\log P(X,Z)dZ\\ &=\int_{Z_j}q_j(Z_j)\int_{Z_i(i\ne j)}\prod_{i\ne j}^Mq_i(Z_i)\log P(X,Z)dZ_{i(i\ne j)}dZ_j\\ &=\int_{Z_j}q_j(Z_j)\int_{Z_i(i\ne j)}\log P(X,Z)\prod_{i\ne j}^Mq_i(Z_i)dZ_{i(i\ne j)}dZ_j\\ &=\int_{Z_j}q_j(Z_j)\cdot\mathbb{E}_{\prod_{i\ne j}^Mq_i(Z_i)}[\log P(X,Z)]dZ_j \end{align} =Zq(Z)logP(X,Z)dZ=Zi=1Mqi(Zi)logP(X,Z)dZ=Zjqj(Zj)Zi(i=j)i=jMqi(Zi)logP(X,Z)dZi(i=j)dZj=Zjqj(Zj)Zi(i=j)logP(X,Z)i=jMqi(Zi)dZi(i=j)dZj=Zjqj(Zj)Ei=jMqi(Zi)[logP(X,Z)]dZj

  • 先将 q(Z)q(Z)q(Z) 进行拆分为 MMM 份;
  • 然后将第 jjj 份拆出来;
  • 其他份的积分写成期望的形式(见到积分,就考虑能写成期望)

然后看后面一项:
②=∫Zq(Z)log⁡q(Z)dZ=∫Z∏i=1Mqi(Zi)log⁡∏i=1Mqi(Zi)dZ=∫Z∏i=1Mqi(Zi)∑i=1Mlog⁡qi(Zi)dZ=∫Z∏i=1Mqi(Zi)[log⁡q1(Z1)+log⁡q2(Z2)+⋯+log⁡qM(ZM)]dZ\begin{align} ②&=\int_Zq(Z)\log q(Z)dZ\\ &=\int_Z\prod_{i=1}^Mq_i(Z_i)\log\prod_{i=1}^M q_i(Z_i)dZ\\ &=\int_Z\prod_{i=1}^Mq_i(Z_i)\sum_{i=1}^M\log q_i(Z_i)dZ\\ &=\int_Z\prod_{i=1}^Mq_i(Z_i)[\log q_1(Z_1)+\log q_2(Z_2)+\dots+\log q_M(Z_M)]dZ\\ \end{align} =Zq(Z)logq(Z)dZ=Zi=1Mqi(Zi)logi=1Mqi(Zi)dZ=Zi=1Mqi(Zi)i=1Mlogqi(Zi)dZ=Zi=1Mqi(Zi)[logq1(Z1)+logq2(Z2)++logqM(ZM)]dZ

  • 写成 MMM 份;
  • log 里面乘变外面加;
  • 把连加号写开;
  • 然后我们看其中一项(比如第一项):

∫Z∏i=1Mqi(Zi)⋅log⁡q1(Z1)dZ=∫Zq1(Z1)q2(Z2)…qM(ZM)log⁡q1(Z1)dZ=∫Z1Z2…ZMq1(Z1)q2(Z2)…qM(ZM)log⁡q1(Z1)dZ1dZ2…dZM=∫Z1q1(Z1)log⁡q1(Z1)dZ1∏i=2M∫Ziqi(Zi)dZi=∫Z1q1(Z1)log⁡q1(Z1)dZ1\begin{align} \int_Z\prod_{i=1}^Mq_i(Z_i)\cdot\log q_1(Z_1)dZ&=\int_Zq_1(Z_1)q_2(Z_2)\dots q_M(Z_M)\log q_1(Z_1)dZ\\ &=\int_{Z_1Z_2\dots Z_M}q_1(Z_1)q_2(Z_2)\dots q_M(Z_M)\log q_1(Z_1)dZ_1dZ_2\dots dZ_M\\ &=\int_{Z_1}q_1(Z_1)\log q_1(Z_1)dZ_1\prod_{i=2}^M\int_{Z_i}q_i(Z_i)dZ_i\\ &=\int_{Z_1}q_1(Z_1)\log q_1(Z_1)dZ_1 \end{align} Zi=1Mqi(Zi)logq1(Z1)dZ=Zq1(Z1)q2(Z2)qM(ZM)logq1(Z1)dZ=Z1Z2ZMq1(Z1)q2(Z2)qM(ZM)logq1(Z1)dZ1dZ2dZM=Z1q1(Z1)logq1(Z1)dZ1i=2MZiqi(Zi)dZi=Z1q1(Z1)logq1(Z1)dZ1

  • q1(Z1)q_1(Z_1)q1(Z1) 相关的移到一起;
  • 剩下的积分全都是 1

②=∑i=1M∫Ziqi(Zi)log⁡qi(Zi)dZi=∫Zjqj(Zj)log⁡qj(Zj)dZj+C\begin{align} ②&=\sum_{i=1}^M\int_{Z_i}q_i(Z_i)\log q_i(Z_i)dZ_i\\ &=\int_{Z_j}q_j(Z_j)\log q_j(Z_j)dZ_j+C\\ \end{align} =i=1MZiqi(Zi)logqi(Zi)dZi=Zjqj(Zj)logqj(Zj)dZj+C

  • 有了 i=1i=1i=1 时的表示,我们就把整个第二项写成连加的形式;
  • 我们只关心第 jjj 项,其余的视作常数 CCC

这样处理完两项,有:
①−②=∫Zjqj(Zj)⋅E∏i≠jMqi(Zi)[log⁡P(X,Z)]dZj−∫Zjqj(Zj)log⁡qj(Zj)dZj+C=∫Zjqj(Zj)⋅log⁡P^(X,Zj)dZj−∫Zjqj(Zj)log⁡qj(Zj)dZj+C=∫Zjqj(Zj)⋅log⁡P^(X,Zj)qj(Zj)dZj=−KL(P^(X,Zj)∣∣qj(Zj))≤0\begin{align} ①-②&=\int_{Z_j}q_j(Z_j)\cdot\mathbb{E}_{\prod_{i\ne j}^Mq_i(Z_i)}[\log P(X,Z)]dZ_j-\int_{Z_j}q_j(Z_j)\log q_j(Z_j)dZ_j+C\\ &=\int_{Z_j}q_j(Z_j)\cdot\log \hat{P}(X,Z_j) dZ_j-\int_{Z_j}q_j(Z_j)\log q_j(Z_j)dZ_j+C\\ &=\int_{Z_j}q_j(Z_j)\cdot\log\frac{ \hat{P}(X,Z_j)}{q_j(Z_j)}dZ_j\\ &=-KL(\hat{P}(X,Z_j)||q_j(Z_j))\le 0 \end{align} =Zjqj(Zj)Ei=jMqi(Zi)[logP(X,Z)]dZjZjqj(Zj)logqj(Zj)dZj+C=Zjqj(Zj)logP^(X,Zj)dZjZjqj(Zj)logqj(Zj)dZj+C=Zjqj(Zj)logqj(Zj)P^(X,Zj)dZj=KL(P^(X,Zj)∣∣qj(Zj))0

  • 将 ① 中的期望写成一个函数的形式:P^(X,Zj)\hat{P}(X,Z_j)P^(X,Zj)
  • 最后就是一个负的 KL 散度,当 P^(X,Zj)=qj(Zj)\hat{P}(X,Z_j)=q_j(Z_j)P^(X,Zj)=qj(Zj) 时取到等号

Ref

  1. 机器学习白板推导

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重新打开_iPhone 应用停止响应或无法打开的解决办法

如果当您在 iPhone 上使用某个重要应用时,遇到应用停止响应、意外退出或无法打开的问题,请参考如下步骤尝试解决:1.强制退出应用:在 iPhone 后台强制关闭该应用之后,再次重新打开看看。2.重启您的设备,然后…

机器学习理论——优雅的模型:变分自编码器(VAE)

机器学习理论——优雅的模型:变分自编码器(VAE) 转自:机器学习理论—优雅的模型(一):变分自编码器(VAE) 另外直观理解 VAE, 推荐 台大李宏毅老师的课程&#…

grub引导项修复详解_重新安装win7后,修复Grub启动项

重新安装win7后,修复Grub启动项发布时间:2010-09-14 22:14:00来源:红联作者:null925[is] 本帖最后由 null925 于 2010-9-14 22:18 编辑 [/i]原先使用Win7,Gentoo,Ubuntu三系统,Grub作为系统引导管理器,今天重新安装Win…

基于流的(Flow-based)生成模型简介

基于流的(Flow-based)生成模型简介 生成任务 我们先回顾一下所谓的生成任务,究竟是做什么事情。我们认为,世界上所有的图片,是符合某种分布 pdata(x)p_{data}(x)pdata​(x) 的。当然,这个分布肯定是个极其复杂的分布。而我们有一…

iec60870-5-104通讯协议编程_三菱FX编程口通讯协议1——协议解读

三菱PLC编程口通讯协议:1、三菱PLC编程口通讯协议有四个命令,如下:2、三菱FX系列PLC地址对应表:PLC_X Group Base AddRess128;Const PLC_Y_Group Base AddRess160;M _Group Base_AddRess 256;P…

采用ODP.NET 批量进行数据同步

因开发、测试场景经常需要模拟机生产环境的数据,原同事开发了一个ado.net图形化同步工具,对非技术人员操作友好,但对技术员使用并不方便,每次同步需源库数据与目标的数据源字段进行配置,且同步大数据时慢,因…

熔断器熔断时间标准_一种熔断器熔断时间测试电路的制作方法

本实用新型涉及汽车制造技术领域,尤其涉及一种熔断器熔断时间测试电路。背景技术:伴随着日新月异的科技进步,人们对生活质量的追求也越来越高,汽车已经成为人们日常出行必不可少的交通工具,人们对汽车的舒适性、安全性…

DETR精读笔记

DETR精读笔记 论文:End-to-End Object Detection with Transformers (发表于 ECCV-2020) 代码:https://github.com/facebookresearch/detr 解读视频:DETR 论文精读【论文精读】 本笔记主要基于 Yi Zhu 老师的解读 引言…

lcd像素点密度_【教程】设置添加LCD密度(DPI)设置

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼完美—————————————————分割————————————————————————反编译settings.apk(1.52)1.Settings.apk\res\values\arrays.xml在之前加入以下代码240242244246248250252254256258260262264266268…

GAN网络评估指标:IS、FID、PPL

GAN网络评估指标:IS、FID、PPL 转自:IS、FID、PPL,GAN网络评估指标 另外关于GAN的评价指标,推荐李宏毅老师的视频:【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (三) – 生成器效能評估與條…

降维后输入分类器分类时报错_逻辑回归解决多分类方法及其优缺点分析

众所周知,逻辑回归常用于解决二分类任务,但是在工作/学习/项目中,我们也经常要解决多分类问题。本文总结了 3 种逻辑回归解决多分类的方法,并分析了他们的优缺点。一、One-Vs-Rest假设我们要解决一个分类问题,该分类问…

浅谈 PyTorch 中的 tensor 及使用

浅谈 PyTorch 中的 tensor 及使用 转自:浅谈 PyTorch 中的 tensor 及使用 这篇文章主要是围绕 PyTorch 中的 tensor 展开的,讨论了张量的求导机制,在不同设备之间的转换,神经网络中权重的更新等内容。面向的读者是使用过 PyTorch …

简述springmvc过程_spring mvc的工作流程是什么?

展开全部SpringMVC工作流程描述向服务器发送HTTP请求,请求被前端控制器 DispatcherServlet 捕获。DispatcherServlet 根据 -servlet.xml 中的配置对请62616964757a686964616fe59b9ee7ad9431333365646233求的URL进行解析,得到请求资源标识符(URI)。 然后根…

PyTorch 的 Autograd

PyTorch 的 Autograd 转自:PyTorch 的 Autograd PyTorch 作为一个深度学习平台,在深度学习任务中比 NumPy 这个科学计算库强在哪里呢?我觉得一是 PyTorch 提供了自动求导机制,二是对 GPU 的支持。由此可见,自动求导 (a…

商场楼层导视牌图片_百宝图商场电子导视软件中预约产品功能简介

百宝图商场电子导视软件中预约产品功能简介 管理端,可配合百宝图商场电子导视软件配套使用 1:数据展示:图形展示总预约数/预约时间峰值/预约途径/各途径数量对比 2:数据统计:有效预约数量/无效预约数量/无效预约原因备…

Pytorch autograd.grad与autograd.backward详解

Pytorch autograd.grad与autograd.backward详解 引言 平时在写 Pytorch 训练脚本时,都是下面这种无脑按步骤走: outputs model(inputs) # 模型前向推理 optimizer.zero_grad() # 清除累积梯度 loss.backward() # 模型反向求导 optimizer.step()…

相对熵与交叉熵_熵、KL散度、交叉熵

公众号关注 “ML_NLP”设为 “星标”,重磅干货,第一时间送达!机器学习算法与自然语言处理出品公众号原创专栏作者 思婕的便携席梦思单位 | 哈工大SCIR实验室KL散度 交叉熵 - 熵1. 熵(Entropy)抽象解释:熵用于计算一个随机变量的信…

动手实现一个带自动微分的深度学习框架

动手实现一个带自动微分的深度学习框架 转自:Automatic Differentiation Tutorial 参考代码:https://github.com/borgwang/tinynn-autograd (主要看 core/tensor.py 和 core/ops.py) 目录 简介自动求导设计自动求导实现一个例子总结参考资料 简介 梯度…

git安装后找不见版本_结果发现git版本为1.7.4,(git --version)而官方提示必须是1.7.10及以后版本...

结果发现git版本为1.7.4,(git --version)而官方提示必须是1.7.10及以后版本升级增加ppasudo apt-add-repository ppa:git-core/ppasudo apt-get updatesudo apt-get install git如果本地已经安装过Git,可以使用升级命令:sudo apt-get dist-upgradeapt命令…

随机数生成算法:K进制逐位生成+拒绝采样

随机数生成算法:K进制逐位生成拒绝采样 转自:【宫水三叶】k 进制诸位生成 拒绝采样 基本分析 给定一个随机生成 1 ~ 7 的函数,要求实现等概率返回 1 ~ 10 的函数。 首先需要知道,在输出域上进行定量整体偏移,仍然满…