隐式狄利克雷分布(LDA)的随机变分推断(SVI)算法原理与参数估计过程
字数 1878 2025-11-09 12:31:36
隐式狄利克雷分布(LDA)的随机变分推断(SVI)算法原理与参数估计过程
1. 问题描述
隐式狄利克雷分布(Latent Dirichlet Allocation, LDA)是一种主题模型,用于从文本集合中自动发现潜在主题。给定文档集合,LDA假设每篇文档是多个主题的混合,每个主题是词语的概率分布。模型参数包括文档-主题分布(θ)和主题-词语分布(φ),两者分别服从狄利克雷先验。传统变分推断(VI)需遍历整个数据集计算后验分布,计算成本高。随机变分推断(Stochastic Variational Inference, SVI)通过随机梯度下降,仅用少量数据(如单篇文档)迭代更新参数,适用于大规模数据。
2. 关键概念与模型设定
-
生成过程:
- 对每个主题k,从狄利克雷分布采样φ_k ~ Dir(β)(主题-词语分布)。
- 对每篇文档d:
- 采样主题分布θ_d ~ Dir(α)(文档-主题分布)。
- 对文档中每个词位置n:
- 采样主题z_{d,n} ~ Multinomial(θ_d)。
- 采样词语w_{d,n} ~ Multinomial(φ_{z_{d,n}})。
-
目标:估计后验分布p(θ, φ, z | w, α, β),由于后验难直接计算,采用变分推断近似。
3. 变分分布与证据下界(ELBO)
- 变分分布:假设后验可分解为
q(θ, φ, z) = ∏d q(θ_d | γ_d) ∏k q(φ_k | λ_k) ∏{d,n} q(z{d,n} | ϕ_{d,n}),
其中γ_d为文档d的主题分布参数,λ_k为主题k的词语分布参数,ϕ_{d,n}为词n的主题分配参数。 - ELBO最大化:通过优化变分参数{γ, λ, ϕ}使ELBO接近真实对数似然。ELBO表达式为:
ELBO = E_q[log p(w, θ, φ, z)] - E_q[log q(θ, φ, z)]。
4. 随机变分推断(SVI)步骤
SVI将全局参数(λ_k,主题-词语分布)和局部参数(γ_d, ϕ_{d,n},文档相关)分离,通过随机采样文档子集更新全局参数:
步骤1:初始化全局参数λ_k
- 对每个主题k,随机初始化λ_k(如全1向量)。
步骤2:迭代更新
对每次迭代t:
- 随机采样文档:从数据集中均匀采样一篇文档d(或一小批文档)。
- 局部变分推断(固定全局参数λ):
- 计算当前文档的局部变分参数γ_d和ϕ_{d,n}:
- 初始化γ_d = α + D/N(D为文档长度,N为词数)。
- 迭代更新ϕ_{d,n}和γ_d直至收敛:
- 对每个词n:ϕ_{d,n,k} ∝ exp(E_q[log θ_{d,k}] + E_q[log φ_{k,w_{d,n}}]),
其中E_q[log θ_{d,k}] = Ψ(γ_{d,k}) - Ψ(∑j γ{d,j})(Ψ为Digamma函数),
E_q[log φ_{k,v}] = Ψ(λ_{k,v}) - Ψ(∑v λ{k,v})。 - 更新γ_d = α + ∑n ϕ{d,n}。
- 对每个词n:ϕ_{d,n,k} ∝ exp(E_q[log θ_{d,k}] + E_q[log φ_{k,w_{d,n}}]),
- 计算当前文档的局部变分参数γ_d和ϕ_{d,n}:
- 全局参数更新(自然梯度下降):
- 计算主题k的局部充分统计量:λ̂_k = η + D_d ∑n ϕ{d,n,k} · one-hot(w_{d,n}),
其中η是狄利克雷先验参数(如β),D_d为文档d的词数。 - 更新全局参数:λ_k^{(t)} = (1 - ρ_t) λ_k^{(t-1)} + ρ_t λ̂_k,
其中ρ_t为学习率(需满足Robbins-Monro条件,如ρ_t = (t + τ)^{-κ},τ为延迟参数,κ∈(0.5,1])。
- 计算主题k的局部充分统计量:λ̂_k = η + D_d ∑n ϕ{d,n,k} · one-hot(w_{d,n}),
5. 收敛与输出
- 重复步骤2直至ELBO变化小于阈值或达到最大迭代次数。
- 输出全局参数λ_k(用于计算主题-词语分布φ_k)和所有文档的局部参数γ_d(用于文档-主题分布θ_d)。
6. 关键点说明
- 随机性优势:SVI通过单篇文档的局部统计量近似全局梯度,减少内存需求,适合流式数据。
- 学习率设计:需保证ρ_t递减但满足∑ρ_t = ∞(充分探索)、∑ρ_t^2 < ∞(减少噪声),如ρ_t = t^{-0.7}。
- 与批量VI区别:批量VI需遍历全数据集计算充分统计量,而SVI每步仅需少量数据,收敛更快但波动较大。
通过以上步骤,SVI实现了对LDA后验分布的高效近似估计,适用于大规模文本主题分析。