当前位置: 首页 > news >正文

机器学习 [白板推导](九)[变分推断]

12. 变分推断(Variational Inference)

12.1. 背景回顾

12.1.1. 两种思路,两种问题

  概率派:建立概率模型,定义目标函数/损失函数,将问题视为优化问题,得到解析解/数值解(无法得到解析解时,使用梯度下降等方法求得数值解),例如:线性回归、SVM、EM等算法。

  贝叶斯派:建立概率图模型,求出后验概率 p(Θ∣X)p(\Theta|X)p(Θ∣X),并根据后验概率进行决策 p(x~∣X)=∫Θp(x~∣Θ)p(Θ∣X)dΘp(\tilde{x}|X)=\int_{\Theta} p(\tilde{x}|\Theta)p(\Theta|X)d\Thetap(x~X)=Θp(x~∣Θ)p(Θ∣X)dΘ,将问题视为积分问题,后验概率有时可以精确推断,有时只能进行近似推断,而近似推断的确定性推断即为变分推断,近似推断还有一种随机推断则是MCMC方法。

12.1.2. 推断与生成

  在概率派思想中,遇到无法观测的隐变量时,模型参数无法通过极大似然估计等方法求出解析解,此时通常使用EM等迭代逼近的方法求出数值解。

  在贝叶斯派思想中,模型参数 θ\thetaθ 遵循某种概率分布(先验),与隐变量 ZZZ,观测变量 XXX 共同构成概率图模型,相互之间存在相关性和条件独立性,而这个模型中有两种问题:推断与生成:

  • 推断:由观测变量的样本集合估计隐变量的概率分布,与EM算法的思路相同,通过最大化 log⁡P(X)\log P(X)logP(X) 来得到 ZZZ 的分布,即求解 P(Z∣X)P(Z|X)P(ZX)
  • 生成:估计隐变量与观测变量之间的联系,并利用大量随机的隐变量生成新的观测变量(VAE),即求解 P(X∣Z)P(X|Z)P(XZ)

12.2. 公式推导

  根据贝叶斯派思想,模型参数 θ\thetaθ 也满足某种概率分布,而变分推断是要对参数和隐变量都进行近似推断,因此设 XXX 为观测数据样本,ZZZ 为待推断变量,包含隐变量与模型参数(与EM略有不同)。

  同EM中的推导(这里再写一遍, log⁡P(X)=log⁡P(X,Z)−log⁡P(Z∣X)=log⁡P(X,Z)q(Z)−log⁡P(Z∣X)q(Z)\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)}logP(X)=logP(X,Z)logP(ZX)=logq(Z)P(X,Z)logq(Z)P(ZX),左右对 ZZZ 求积分得),ELBO即为变分下界,ELBO=∫Zq(Z)log⁡P(X,Z)dZ−∫Zq(Z)log⁡q(Z)dZ=J(q)+H(Z)\text{ELBO}=\int_Zq(Z)\log P(X,Z) dZ-\int_Z q(Z) \log q(Z)dZ=J(q)+H(Z)ELBO=Zq(Z)logP(X,Z)dZZq(Z)logq(Z)dZ=J(q)+H(Z)

  引入平均场理论(mean field theory),设 ZZZ 中存在M个部分,每两个部分两两独立,则有 q(Z)=∏i=1Mq(i)(Z(i))q(Z)=\prod_{i=1}^M q^{(i)}(Z^{(i)})q(Z)=i=1Mq(i)(Z(i)),则 J(Z)=∫Z∏i=1Mq(i)(Z(i))log⁡P(X,Z) dZ(1)dZ(2)⋯dZ(M)J(Z)=\int_Z \prod_{i=1}^M q^{(i)}(Z^{(i)})\log P(X,Z)\ dZ^{(1)}dZ^{(2)}\cdots dZ^{(M)}J(Z)=Zi=1Mq(i)(Z(i))logP(X,Z) dZ(1)dZ(2)dZ(M),此时单独求解某个部分的分布 qj(Zj)q_j(Z_j)qj(Zj),则可以固定其他部分,即
J(Z)=∫Z(j)q(j)(Z(j))⋅[∫Z(i≠j)∏i≠jMq(i)(Z(i))log⁡P(X,Z) dZ(1)dZ(2)⋯dZ(M)]dZ(j)=∫Z(j)q(j)(Z(j))⋅E∏i≠jMq(j)(Z(j))[log⁡P(X,Z)]dZ(j).(12.1) \begin{aligned} J(Z)&=\int_{Z^{(j)}} q^{(j)}(Z^{(j)}) \cdot \left [ \int_{Z^{(i\neq j)}}\prod_{i\neq j}^M q^{(i)}(Z^{(i)})\log P(X,Z)\ dZ^{(1)}dZ^{(2)}\cdots dZ^{(M)} \right ] dZ^{(j)}\\ &=\int_{Z^{(j)}} q^{(j)}(Z^{(j)}) \cdot E_{\prod_{i\neq j}^Mq^{(j)}(Z^{(j)})}\left [ \log P(X,Z) \right ] dZ^{(j)}. \tag{12.1} \end{aligned} J(Z)=Z(j)q(j)(Z(j))Z(i=j)i=jMq(i)(Z(i))logP(X,Z) dZ(1)dZ(2)dZ(M)dZ(j)=Z(j)q(j)(Z(j))Ei=jMq(j)(Z(j))[logP(X,Z)]dZ(j).(12.1)

  同时有:
H(Z)=−∫Zq(Z)log⁡q(Z)dZ=−∫Z(1)⋅Z(2)⋯Z(M)∏i=1Mq(i)(Z(i))⋅[∑i=1Mlog⁡q(i)(Z(i))] dZ(1)dZ(2)⋯dZ(M)=∑k=1M[−∫Z(1)⋅Z(2)⋯Z(M)∏i=1Mq(i)(Z(i))⋅log⁡q(k)(Z(k)) dZ(1)dZ(2)⋯dZ(M)]=∑k=1M{−∫Z(k)q(k)(Z(k))⋅log⁡q(k)(Z(k)) dZ(k)[∏i≠kM∫Z(i)q(i)(Z(i))dZ(i)]}=−∑k=1M∫Z(k)q(k)(Z(k))⋅log⁡q(k)(Z(k)) dZ(k),(12.2) \begin{aligned} H(Z)&=-\int_Zq(Z)\log q(Z) dZ=-\int_{Z^{(1)}\cdot Z^{(2)}\cdots Z^{(M)}}\prod _{i=1}^M q^{(i)}(Z^{(i)})\cdot \left [\sum_{i=1}^M \log q^{(i)}(Z^{(i)}) \right ] \ dZ^{(1)}dZ^{(2)}\cdots dZ^{(M)} \\ &=\sum_{k=1}^M\left [-\int_{Z^{(1)}\cdot Z^{(2)}\cdots Z^{(M)}}\prod _{i=1}^M q^{(i)}(Z^{(i)})\cdot \log q^{(k)}(Z^{(k)})\ dZ^{(1)}dZ^{(2)}\cdots dZ^{(M)} \right ]\\ &=\sum_{k=1}^M\left \{-\int_{Z^{(k)}}q^{(k)}(Z^{(k)})\cdot \log q^{(k)}(Z^{(k)})\ dZ^{(k)}\left [\prod _{i\neq k}^M\int_{Z^{(i)}} q^{(i)}(Z^{(i)})dZ^{(i)} \right ] \right \}\\ &=-\sum_{k=1}^M\int_{Z^{(k)}}q^{(k)}(Z^{(k)})\cdot \log q^{(k)}(Z^{(k)})\ dZ^{(k)},\tag{12.2} \end{aligned} H(Z)=Zq(Z)logq(Z)dZ=Z(1)Z(2)Z(M)i=1Mq(i)(Z(i))[i=1Mlogq(i)(Z(i))] dZ(1)dZ(2)dZ(M)=k=1M[Z(1)Z(2)Z(M)i=1Mq(i)(Z(i))logq(k)(Z(k)) dZ(1)dZ(2)dZ(M)]=k=1MZ(k)q(k)(Z(k))logq(k)(Z(k)) dZ(k)i=kMZ(i)q(i)(Z(i))dZ(i)=k=1MZ(k)q(k)(Z(k))logq(k)(Z(k)) dZ(k),(12.2)
当其他部分固定,单独求解 q(j)(Z(j))q^{(j)}(Z^{(j)})q(j)(Z(j)) 时,KaTeX parse error: Expected 'EOF', got '&' at position 5: H(Z)&̲=-\int_{Z^{(j)}…

  因为积分 E∏i≠jMq(i)(Z(i))[log⁡P(X,Z)]E_{\prod_{i\neq j}^Mq^{(i)}(Z^{(i)})}\left [ \log P(X,Z) \right ]Ei=jMq(i)(Z(i))[logP(X,Z)] 的结果是一个关于 (X,Zj)(X,Z_j)(X,Zj) 的对数概率密度函数,因此可以设 log⁡P^(X,Z(j))=E∏i≠jMq(i)(Z(i))[log⁡P(X,Z)]\log \hat{P}(X,Z^{(j)})= E_{\prod_{i\neq j}^Mq^{(i)}(Z^{(i)})}\left [ \log P(X,Z) \right ]logP^(X,Z(j))=Ei=jMq(i)(Z(i))[logP(X,Z)],则变分下界为
ELBO=L(Z)+H(Z)=∫Z(j)q(j)(Z(j))log⁡P^(X,Z(j))dZ(j)−∫Z(j)q(j)(Z(j))log⁡q(j)(Z(j))dZ(j)+C=∫Z(j)q(j)(Z(j))log⁡P^(X,Z(j))q(j)(Z(j))dZ(j)+C=−KL[q(j) ∣∣ P^(X,Z(j))]+C,(12.3) \begin{aligned} \text{ELBO}&=L(Z)+H(Z)\\ &=\int_{Z^{(j)}}q^{(j)}(Z^{(j)}) \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)})\frac{\log \hat{P}(X,Z^{(j)})}{q^{(j)}(Z^{(j)})} dZ^{(j)}+C\\ &=-KL\left [ q^{(j)}\ ||\ \hat{P}(X,Z^{(j)}) \right ]+C,\tag{12.3} \end{aligned} ELBO=L(Z)+H(Z)=Z(j)q(j)(Z(j))logP^(X,Z(j))dZ(j)Z(j)q(j)(Z(j))logq(j)(Z(j))dZ(j)+C=Z(j)q(j)(Z(j))q(j)(Z(j))logP^(X,Z(j))dZ(j)+C=KL[q(j) ∣∣ P^(X,Z(j))]+C,(12.3)
当且仅当 qj==P^(X,Z(j))q_j == \hat{P}(X,Z^{(j)})qj==P^(X,Z(j)) 时,ELBO\text{ELBO}ELBO 达到最大。如此反复迭代求解,以坐标上升法求出所有参数和隐变量。

12.3. 随机梯度上升变分推断SGVI

12.3.1. 公式推导

  用另一种思路求解变分推断的隐变量,设 θ\thetaθ 是模型参数,隐变量 ZZZ 遵从某种确定的分布,例如指数族分布,则求解 ZZZ 即为求解分布中的参数 ϕ\phiϕ,即 ϕ^=arg⁡max⁡ϕ ELBO\hat{\phi}=\underset{\phi}{\arg\max}\ \text{ELBO}ϕ^=ϕargmax ELBO

  目标函数无解析解,只能使用迭代逼近的方法求数值解,梯度上升法是一个合适的算法,对目标函数求梯度(积分和求导符号可以互换位置):
▽ϕELBO=▽ϕ Eqϕ[log⁡Pθ(X,Z)−log⁡qϕ]=▽ϕ ∫qϕ[log⁡Pθ(X,Z)−log⁡qϕ]dZ=∫ ▽ϕ{qϕ[log⁡Pθ(X,Z)−log⁡qϕ]}dZ=∫ ▽ϕqϕ⋅[log⁡Pθ(X,Z)−log⁡qϕ]dZ+∫ qϕ⋅▽ϕ[log⁡Pθ(X,Z)−log⁡qϕ]dZ,(12.4) \begin{aligned} \bigtriangledown_{\phi} \text{ELBO}&=\bigtriangledown_{\phi}\ E_{q_{\phi}}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] \\ &=\bigtriangledown_{\phi}\ \int q_{\phi}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ]dZ \\ &=\int\ \bigtriangledown_{\phi}\left\{ q_{\phi}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] \right \} dZ \\ &=\int\ \bigtriangledown_{\phi} q_{\phi}\cdot\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] dZ+\int\ q_{\phi} \cdot \bigtriangledown_{\phi}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] dZ ,\tag{12.4} \end{aligned} ϕELBO=ϕ Eqϕ[logPθ(X,Z)logqϕ]=ϕ qϕ[logPθ(X,Z)logqϕ]dZ= ϕ{qϕ[logPθ(X,Z)logqϕ]}dZ= ϕqϕ[logPθ(X,Z)logqϕ]dZ+ qϕϕ[logPθ(X,Z)logqϕ]dZ,(12.4)

  右边第二项中 log⁡Pθ(X,Z)\log P_{\theta}(X,Z)logPθ(X,Z)ϕ\phiϕ 无关,梯度为0,因此:
∫ qϕ⋅▽ϕ[log⁡Pθ(X,Z)−log⁡qϕ]dZ=∫ qϕ⋅▽ϕ[−log⁡qϕ]dZ=−∫ ▽ϕqϕdZ=−▽ϕ∫ qϕdZ=−▽ϕ 1=0,(12.5) \begin{aligned} &\int\ q_{\phi} \cdot \bigtriangledown_{\phi}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] dZ \\&= \int\ q_{\phi} \cdot \bigtriangledown_{\phi}\left[-\log q_{\phi} \right ] dZ \\ &=- \int\ \bigtriangledown_{\phi}q_{\phi} dZ\\ &= -\bigtriangledown_{\phi}\int\ q_{\phi} dZ\\ &= -\bigtriangledown_{\phi}\ 1=0,\tag{12.5} \end{aligned}  qϕϕ[logPθ(X,Z)logqϕ]dZ= qϕϕ[logqϕ]dZ= ϕqϕdZ=ϕ qϕdZ=ϕ 1=0,(12.5)

  因此,
▽ϕELBO=∫ ▽ϕqϕ⋅[log⁡Pθ(X,Z)−log⁡qϕ]dZ=∫ qϕ⋅▽ϕlog⁡qϕ⋅[log⁡Pθ(X,Z)−log⁡qϕ]dZ=Eqϕ{▽ϕlog⁡qϕ⋅[log⁡Pθ(X,Z)−log⁡qϕ]},(12.6) \begin{aligned} \bigtriangledown_{\phi} \text{ELBO}&=\int\ \bigtriangledown_{\phi} q_{\phi}\cdot\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] dZ \\ &=\int\ q_{\phi} \cdot \bigtriangledown_{\phi} \log q_{\phi} \cdot\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] dZ \\ &=E_{q_{\phi}} \left \{\bigtriangledown_{\phi} \log q_{\phi} \cdot\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] \right \},\tag{12.6} \end{aligned} ϕELBO= ϕqϕ[logPθ(X,Z)logqϕ]dZ= qϕϕlogqϕ[logPθ(X,Z)logqϕ]dZ=Eqϕ{ϕlogqϕ[logPθ(X,Z)logqϕ]},(12.6)
(其中 qϕ⋅▽ϕlog⁡qϕ=▽ϕqϕq_{\phi} \cdot \bigtriangledown_{\phi}\log q_{\phi} =\bigtriangledown_{\phi}q_{\phi}qϕϕlogqϕ=ϕqϕ 由上一段推出),由此将目标函数梯度的求解变为一个求期望问题,所以可以通过蒙特卡洛方法求出期望的近似解,从而进行梯度上升迭代计算。

12.3.2. SGVI简化

  对于SGVI中的梯度求解,常常用到蒙特卡洛方法求期望,但采样过程中有一定概率得到一个接近0的 qϕq_{\phi}qϕ 值,则其中的 log⁡qϕ\log q_{\phi}logqϕ 会变成一个很小很小的负数,导致采样结果的方差很大,本身梯度上升法就是一种迭代计算的数值解,过程中存在一定偏差,如果采样过程的误差过大则会使得整个算法收敛缓慢,甚至无法得到最优解。

  为了解决上述问题,也为了简化求梯度的过程,引入一个重参数化机制

  • 原本模型中 XXX 是观测变量,ZZZ 是隐变量,ZZZ 的分布有参数 ϕ\phiϕ,与 XXX 无关。
  • 重新定义 ZZZ,设一个新的随机变量 ε\varepsilonε,遵循某种已知分布 p(ε)p(\varepsilon )p(ε),则 z=gϕ(ε,X)z=g_{\phi}(\varepsilon ,X)z=gϕ(ε,X),此时 qϕ(Z∣X)dZ=p(ε)dεq_{\phi}(Z|X)dZ=p(\varepsilon )d\varepsilonqϕ(ZX)dZ=p(ε)dεEqϕ(∗)=Epε(∗)E_{q_{\phi}}(*)=E_{p_{\varepsilon }}(*)Eqϕ()=Epε()

  则重新推导梯度式:
▽ϕELBO=▽ϕ Eqϕ[log⁡Pθ(X,Z)−log⁡qϕ]=▽ϕ Epε[log⁡Pθ(X,Z)−log⁡qϕ]=Epε{▽ϕ[log⁡Pθ(X,Z)−log⁡qϕ]}=Epε{▽Z[log⁡Pθ(X,Z)−log⁡qϕ]⋅▽ϕZ}=Epε{▽Z[log⁡Pθ(X,Z)−log⁡qϕ]⋅▽ϕgϕ(ε,X)},(12.7) \begin{aligned} \bigtriangledown_{\phi} \text{ELBO}&=\bigtriangledown_{\phi}\ E_{q_{\phi}}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] \\ &=\bigtriangledown_{\phi}\ E_{p_{\varepsilon }}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ] \\ &=E_{p_{\varepsilon }}\left\{\bigtriangledown_{\phi}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ]\right\}\\ &=E_{p_{\varepsilon }}\left\{\bigtriangledown_{Z}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ]\cdot \bigtriangledown_{\phi}Z \right\}\\ &=E_{p_{\varepsilon }}\left\{\bigtriangledown_{Z}\left[\log P_{\theta}(X,Z)-\log q_{\phi} \right ]\cdot \bigtriangledown_{\phi}g_{\phi}(\varepsilon ,X) \right\},\tag{12.7} \end{aligned} ϕELBO=ϕ Eqϕ[logPθ(X,Z)logqϕ]=ϕ Epε[logPθ(X,Z)logqϕ]=Epε{ϕ[logPθ(X,Z)logqϕ]}=Epε{Z[logPθ(X,Z)logqϕ]ϕZ}=Epε{Z[logPθ(X,Z)logqϕ]ϕgϕ(ε,X)},(12.7)
此时再采用蒙特卡洛方法则不会出现误差。

http://www.dtcms.com/a/327201.html

相关文章:

  • DRAM、SRAM、NAND Flash、NOR Flash、EEPROM、MRAM存储器你分得清吗?
  • 用pom文件从nexus3拉依赖,无法拉取的一个问题
  • 逻辑删除 vs 物理删除:MyBatis-Plus 实现指南与实践
  • 可泛化逻辑推理Python编程作为医疗AI发展方向研究
  • 关于数据库的restful api接口工具SqlRest的使用
  • 如何在 Ubuntu 24.04 LTS Linux 中安装 JSON Server
  • 2025年国赛新规解读:8-12最新发布文件
  • 初识数据结构——优先级队列(堆!堆!堆!)
  • 偶遇冰狐智能辅助的录音
  • Python初学者笔记第二十四期 -- (面向对象编程)
  • 教程 | 用Parasoft SOAtest实现高效CI回归测试
  • 从零到一的 Python CI/CD 实战指南:用 GitHub Actions 与 Jenkins 打造稳定、可持续交付的工程力
  • 下一代防火墙技术
  • 【ad-hoc 最小生成树 构造】P8957 「CGOI-3」巫泡弹弹乐|普及+
  • 【Redis在智能健身镜中的作用:运动指导与用户数据同步】
  • 计算机网络摘星题库800题笔记 第6章 应用层
  • 使用正则中的sub实现获取我们匹配的字符串,然后追加指定字符
  • 计算机网络---防火墙(Firewall)
  • pyside控件_左右范围滑动控件
  • 深层神经网络
  • torch.max() 函数使用
  • uv 配置和简单使用
  • 6深度学习Pytorch-神经网络--过拟合欠拟合问题解决(Dropout、正则化、早停法、数据增强)、批量标准化
  • OpenHarmony编译与烧录
  • 【完美解决】在 Ubuntu 24.04 上为小米 CyberDog 2 刷机/交叉编译:终极 Docker 环境搭建指南
  • 【LeetCode】2. 两数相加
  • 一台云主机“被黑”后的 24 小时排查手记
  • 【力扣 Hot100】刷题日记
  • 《Redis ACL验证流程:从用户认证到权限检查的完整步骤》
  • 【doris基础与进阶】3-Doris安装与部署