变分推断(Variational Inference)、LDA(Latent Dirichlet Allocation)和EM算法(Expectation-Maximization Algorithm

变分推断、LDA与EM算法详解

1. 变分推断

1.1 什么是变分推断?(直观理解)

想象你在玩一个侦探游戏:你有一堆线索(观测数据 xxx),想找出幕后真相(隐变量 zzz)。在贝叶斯统计中,真相的分布是后验分布 p(z∣x)p(z|x)p(zx),但这个分布通常很复杂,计算起来像解一个超级复杂的拼图。变分推断就像是用一个简单的拼图(一个容易计算的分布 q(z)q(z)q(z))去“模仿”那个复杂的拼图,通过调整简单拼图的形状,让它尽可能接近真实的拼图。

核心目标:用一个简单的分布 q(z)q(z)q(z) 去近似复杂的后验分布 p(z∣x)p(z|x)p(zx),通过优化让两者差异最小。

1.2 为什么需要变分推断?

在贝叶斯推断中,我们想知道隐变量 zzz(比如文档的主题、数据的潜在类别)在给定数据 xxx 下的概率分布:
p(z∣x)=p(x,z)p(x)p(z|x) = \frac{p(x, z)}{p(x)}p(zx)=p(x)p(x,z)

  • p(x,z)p(x, z)p(x,z) 是联合分布,描述数据和隐变量如何一起生成。
  • p(x)=∫p(x,z)dzp(x) = \int p(x, z) dzp(x)=p(x,z)dz 是边际似然,相当于把所有可能的 zzz 都考虑进去,计算数据的总概率。

问题在于,p(x)=∫p(x,z)dzp(x) = \int p(x, z) dzp(x)=p(x,z)dz 是个高维积分,通常无法直接算出来(就像拼图太复杂,拼不完)。其他方法(如 MCMC 采样)虽然能近似,但计算量大,速度慢。变分推断把这个问题变成一个优化问题,用数学方法快速找到一个“足够好”的近似。

1.3 变分推断的核心思想

我们用一个简单的分布 q(z)q(z)q(z)(比如高斯分布或 Dirichlet 分布)来近似 p(z∣x)p(z|x)p(zx)。为了衡量 q(z)q(z)q(z)p(z∣x)p(z|x)p(zx) 有多接近,我们用KL 散度(Kullback-Leibler 散度)来量化差异:
KL(q(z)∣∣p(z∣x))=Eq(z)[log⁡q(z)−log⁡p(z∣x)]\text{KL}(q(z) || p(z|x)) = \mathbb{E}_{q(z)}[\log q(z) - \log p(z|x)]KL(q(z)∣∣p(zx))=Eq(z)[logq(z)logp(zx)]
KL 散度越小,q(z)q(z)q(z) 越接近 p(z∣x)p(z|x)p(zx)。但由于 p(z∣x)p(z|x)p(zx) 难以直接计算,我们转而优化一个等价的目标:证据下界(ELBO)

ELBO 是什么?

ELBO 是对数边际似然 log⁡p(x)\log p(x)logp(x) 的下界(lower bound)。通过最大化 ELBO,我们可以让 q(z)q(z)q(z) 尽量接近 p(z∣x)p(z|x)p(zx)。ELBO 的公式是:
ELBO=Eq(z)[log⁡p(x,z)]−Eq(z)[log⁡q(z)]\text{ELBO} = \mathbb{E}_{q(z)}[\log p(x, z)] - \mathbb{E}_{q(z)}[\log q(z)]ELBO=Eq(z)[logp(x,z)]Eq(z)[logq(z)]

  • 第一项 Eq(z)[log⁡p(x,z)]\mathbb{E}_{q(z)}[\log p(x, z)]Eq(z)[logp(x,z)]:衡量 q(z)q(z)q(z) 下的模型对数据的拟合程度。
  • 第二项 −Eq(z)[log⁡q(z)]-\mathbb{E}_{q(z)}[\log q(z)]Eq(z)[logq(z)]:是 q(z)q(z)q(z) 的熵,鼓励 q(z)q(z)q(z) 不要过于集中。

1.4 数学推导(一步步拆解)

为了让你更清楚 ELBO 的来源,我们慢慢推导:

  1. 从对数边际似然开始
    log⁡p(x)=log⁡∫p(x,z)dz\log p(x) = \log \int p(x, z) dzlogp(x)=logp(x,z)dz
    这是一个积分,很难直接算。
  2. 引入 q(z)q(z)q(z)
    我们引入一个分布 q(z)q(z)q(z),将积分改写为期望:
    log⁡p(x)=log⁡∫p(x,z)q(z)q(z)dz=log⁡Eq(z)[p(x,z)q(z)]\log p(x) = \log \int p(x, z) \frac{q(z)}{q(z)} dz = \log \mathbb{E}_{q(z)} \left[ \frac{p(x, z)}{q(z)} \right]logp(x)=logp(x,z)q(z)q(z)dz=logEq(z)[q(z)p(x,z)]
  3. 应用 Jensen 不等式
    因为 log⁡\loglog 是凹函数,Jensen 不等式告诉我们:
    log⁡Eq(z)[p(x,z)q(z)]≥Eq(z)[log⁡p(x,z)q(z)]\log \mathbb{E}_{q(z)} \left[ \frac{p(x, z)}{q(z)} \right] \geq \mathbb{E}_{q(z)} \left[ \log \frac{p(x, z)}{q(z)} \right]logEq(z)[q(z)p(x,z)]Eq(z)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱看烟花的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值