隐式狄利克雷分布(LDA)的折叠吉布斯采样(Collapsed Gibbs Sampling)推断过程
字数 2938 2025-12-05 17:23:22
隐式狄利克雷分布(LDA)的折叠吉布斯采样(Collapsed Gibbs Sampling)推断过程
题目描述
隐式狄利克雷分布(Latent Dirichlet Allocation, LDA)是一种经典的生成式概率主题模型,常用于从文档集合中推断潜在主题结构。在LDA的推断任务中,我们需要根据观察到的文档-词项数据,估计文档的主题分布和主题的词项分布这两个隐变量。折叠吉布斯采样(Collapsed Gibbs Sampling)是LDA参数推断中一种高效且常用的马尔可夫链蒙特卡洛(MCMC)方法。本题目要求详细讲解LDA的生成过程、吉布斯采样的核心思想,并逐步推导出折叠吉布斯采样的更新公式,以及如何从采样结果中恢复所需的模型参数。
解题过程
1. LDA模型回顾与生成过程
LDA假设文档集合包含K个潜在主题,每个主题是词表上的一个多项分布(即“主题-词”分布,记为φ)。每篇文档具有一个特定的“文档-主题”分布(记为θ)。模型生成一篇文档的步骤如下:
- 对于每个主题k(k=1,...,K),从狄利克雷分布Dir(β)中采样一个主题-词分布φ_k,其中β是超参数。
- 对于每篇文档d(d=1,...,D):
- 从狄利克雷分布Dir(α)中采样一个文档-主题分布θ_d,其中α是超参数。
- 对于文档d中的每个词位置n(n=1,...,N_d):
- 从多项分布Multi(θ_d)中采样一个主题z_{d,n}。
- 从多项分布Multi(φ_{z_{d,n}})中采样一个词w_{d,n}。
观察到的变量是文档中的词w_{d,n},需要推断的隐变量是所有词的主题分配z_{d,n}、所有文档的θ_d和所有主题的φ_k。目标是计算后验分布p(z, θ, φ | w, α, β)。
2. 吉布斯采样与“折叠”思想
吉布斯采样是一种MCMC方法,通过在给定其他变量条件下,迭代地对每个隐变量进行采样,最终使马尔可夫链收敛到目标联合后验分布。在LDA中,直接对z、θ、φ联合采样效率较低。折叠吉布斯采样的关键思路是:通过对θ和φ这两个连续的狄利克雷分布进行积分(即“折叠”掉它们),将后验分布简化为仅关于主题分配z的条件分布p(z | w, α, β)。由于狄利克雷分布与多项分布的共轭性,这个积分可以解析求出,从而得到一个更简单的采样分布,只需要对每个词的主题标签z_i进行采样。
3. 推导折叠吉布斯采样公式
我们目标是推导条件概率p(z_i = k | z_{-i}, w, α, β),其中z_i表示第i个词(假设将文档和词位置映射为全局索引i)的主题,z_{-i}表示除i外所有词的主题分配,w是所有观察到的词。推导分为两步:
步骤1:利用共轭性对θ、φ积分
根据贝叶斯网络结构,联合分布可分解为:
p(w, z, θ, φ | α, β) = p(φ | β) p(θ | α) p(z | θ) p(w | z, φ)。
由于θ和φ是分别由α和β参数化的狄利克雷分布,而给定θ时z服从多项分布,给定φ时w服从多项分布,这种狄利克雷-多项共轭结构使得可以对θ和φ积分:
p(w, z | α, β) = ∫∫ p(φ | β) p(θ | α) p(z | θ) p(w | z, φ) dθ dφ。
利用狄利克雷分布的归一化性质和多项分布的计数,可以得到一个仅依赖于计数统计量的表达式。
步骤2:推导条件概率
根据条件概率定义:p(z_i = k | z_{-i}, w, α, β) ∝ p(z_i = k, w_i = t | z_{-i}, w_{-i}, α, β)。
这里w_i是第i个词对应的词项(假设为词表中的第t个词),w_{-i}是其他所有词。由于词之间条件独立,这个概率可以分解为两部分:
- 与文档相关的部分:当前词的主题k在文档d中出现的概率。
- 与主题相关的部分:词t在主题k下出现的概率。
具体推导结果为:
p(z_i = k | z_{-i}, w, α, β) ∝ (n_{d,k}^{-i} + α_k) * (n_{k,t}^{-i} + β_t) / (n_{k,.}^{-i} + Σ_v β_v)。
其中:
- n_{d,k}^{-i}:除去当前词i后,文档d中被分配到主题k的词的数量。
- α_k:文档-主题狄利克雷分布的超参数(通常对称,即α_k=α)。
- n_{k,t}^{-i}:除去当前词i后,词t(即w_i)被分配到主题k的次数。
- β_t:主题-词狄利克雷分布中对应词t的超参数(通常对称,即β_t=β)。
- n_{k,.}^{-i}:除去当前词i后,所有词中被分配到主题k的总次数。
分母项n_{k,.}^{-i} + Σ_v β_v起到归一化作用,其中Σ_v β_v是超参数β对所有词表项的和。
4. 折叠吉布斯采样算法步骤
- 初始化:为每个词随机分配一个主题z_i ∈ {1,...,K},并初始化计数n_{d,k}和n_{k,t}。
- 迭代采样:对每个词i(例如遍历所有文档的所有词位置)执行:
- 从当前计数中减去当前词的贡献:n_{d,z_i} -= 1,n_{z_i,t} -= 1,n_{z_i,.} -= 1。
- 按照上述推导的公式计算每个主题k=1..K的概率:p(z_i = k) ∝ (n_{d,k} + α_k) * (n_{k,t} + β_t) / (n_{k,.} + Σ_v β_v)。
- 归一化这些概率,形成一个K维的多项分布,从这个分布中采样一个新的主题z_i'。
- 更新计数:n_{d,z_i'} += 1,n_{z_i',t} += 1,n_{z_i',.} += 1。
- 收敛判断:重复迭代足够次数(如数百到数千次),直到马尔可夫链达到平稳分布(可通过观察主题分配变化或对数似然稳定来判断)。
- 参数估计:采样结束后,用计数统计量估计θ和φ:
- 文档-主题分布:θ_{d,k} ≈ (n_{d,k} + α_k) / (Σ_{k'=1}^K (n_{d,k'} + α_{k'})).
- 主题-词分布:φ_{k,t} ≈ (n_{k,t} + β_t) / (Σ_{v=1}^V (n_{k,v} + β_v)).
通常使用最后一次迭代的计数,或多次采样结果的平均。
5. 算法特点与解释
- 由于“折叠”了θ和φ,采样只在离散的主题标签空间进行,计算效率更高。
- 公式中的(n_{d,k} + α_k)体现了文档d中主题k的流行度,(n_{k,t} + β_t)体现了词t在主题k中的代表性。两者结合使得采样倾向于将词分配给在文档中常见且与该词关联强的主题。
- 超参数α和β起到平滑作用,防止计数为零导致概率为零。
- 该算法是一种近似推断方法,但实际中被广泛使用且效果良好。
通过以上步骤,折叠吉布斯采样可以从文档-词观测中学习LDA的隐变量,从而得到每篇文档的主题分布和每个主题的词分布,实现主题建模的核心目标。
隐式狄利克雷分布(LDA)的折叠吉布斯采样(Collapsed Gibbs Sampling)推断过程 题目描述 隐式狄利克雷分布(Latent Dirichlet Allocation, LDA)是一种经典的生成式概率主题模型,常用于从文档集合中推断潜在主题结构。在LDA的推断任务中,我们需要根据观察到的文档-词项数据,估计文档的主题分布和主题的词项分布这两个隐变量。折叠吉布斯采样(Collapsed Gibbs Sampling)是LDA参数推断中一种高效且常用的马尔可夫链蒙特卡洛(MCMC)方法。本题目要求详细讲解LDA的生成过程、吉布斯采样的核心思想,并逐步推导出折叠吉布斯采样的更新公式,以及如何从采样结果中恢复所需的模型参数。 解题过程 1. LDA模型回顾与生成过程 LDA假设文档集合包含K个潜在主题,每个主题是词表上的一个多项分布(即“主题-词”分布,记为φ)。每篇文档具有一个特定的“文档-主题”分布(记为θ)。模型生成一篇文档的步骤如下: 对于每个主题k(k=1,...,K),从狄利克雷分布Dir(β)中采样一个主题-词分布φ_ k,其中β是超参数。 对于每篇文档d(d=1,...,D): 从狄利克雷分布Dir(α)中采样一个文档-主题分布θ_ d,其中α是超参数。 对于文档d中的每个词位置n(n=1,...,N_ d): 从多项分布Multi(θ_ d)中采样一个主题z_ {d,n}。 从多项分布Multi(φ_ {z_ {d,n}})中采样一个词w_ {d,n}。 观察到的变量是文档中的词w_ {d,n},需要推断的隐变量是所有词的主题分配z_ {d,n}、所有文档的θ_ d和所有主题的φ_ k。目标是计算后验分布p(z, θ, φ | w, α, β)。 2. 吉布斯采样与“折叠”思想 吉布斯采样是一种MCMC方法,通过在给定其他变量条件下,迭代地对每个隐变量进行采样,最终使马尔可夫链收敛到目标联合后验分布。在LDA中,直接对z、θ、φ联合采样效率较低。 折叠吉布斯采样 的关键思路是:通过对θ和φ这两个连续的狄利克雷分布进行积分(即“折叠”掉它们),将后验分布简化为仅关于主题分配z的条件分布p(z | w, α, β)。由于狄利克雷分布与多项分布的共轭性,这个积分可以解析求出,从而得到一个更简单的采样分布,只需要对每个词的主题标签z_ i进行采样。 3. 推导折叠吉布斯采样公式 我们目标是推导条件概率p(z_ i = k | z_ {-i}, w, α, β),其中z_ i表示第i个词(假设将文档和词位置映射为全局索引i)的主题,z_ {-i}表示除i外所有词的主题分配,w是所有观察到的词。推导分为两步: 步骤1:利用共轭性对θ、φ积分 根据贝叶斯网络结构,联合分布可分解为: p(w, z, θ, φ | α, β) = p(φ | β) p(θ | α) p(z | θ) p(w | z, φ)。 由于θ和φ是分别由α和β参数化的狄利克雷分布,而给定θ时z服从多项分布,给定φ时w服从多项分布,这种狄利克雷-多项共轭结构使得可以对θ和φ积分: p(w, z | α, β) = ∫∫ p(φ | β) p(θ | α) p(z | θ) p(w | z, φ) dθ dφ。 利用狄利克雷分布的归一化性质和多项分布的计数,可以得到一个仅依赖于计数统计量的表达式。 步骤2:推导条件概率 根据条件概率定义:p(z_ i = k | z_ {-i}, w, α, β) ∝ p(z_ i = k, w_ i = t | z_ {-i}, w_ {-i}, α, β)。 这里w_ i是第i个词对应的词项(假设为词表中的第t个词),w_ {-i}是其他所有词。由于词之间条件独立,这个概率可以分解为两部分: 与文档相关的部分:当前词的主题k在文档d中出现的概率。 与主题相关的部分:词t在主题k下出现的概率。 具体推导结果为: p(z_ i = k | z_ {-i}, w, α, β) ∝ (n_ {d,k}^{-i} + α_ k) * (n_ {k,t}^{-i} + β_ t) / (n_ {k,.}^{-i} + Σ_ v β_ v)。 其中: n_ {d,k}^{-i}:除去当前词i后,文档d中被分配到主题k的词的数量。 α_ k:文档-主题狄利克雷分布的超参数(通常对称,即α_ k=α)。 n_ {k,t}^{-i}:除去当前词i后,词t(即w_ i)被分配到主题k的次数。 β_ t:主题-词狄利克雷分布中对应词t的超参数(通常对称,即β_ t=β)。 n_ {k,.}^{-i}:除去当前词i后,所有词中被分配到主题k的总次数。 分母项n_ {k,.}^{-i} + Σ_ v β_ v起到归一化作用,其中Σ_ v β_ v是超参数β对所有词表项的和。 4. 折叠吉布斯采样算法步骤 初始化 :为每个词随机分配一个主题z_ i ∈ {1,...,K},并初始化计数n_ {d,k}和n_ {k,t}。 迭代采样 :对每个词i(例如遍历所有文档的所有词位置)执行: 从当前计数中减去当前词的贡献:n_ {d,z_ i} -= 1,n_ {z_ i,t} -= 1,n_ {z_ i,.} -= 1。 按照上述推导的公式计算每个主题k=1..K的概率:p(z_ i = k) ∝ (n_ {d,k} + α_ k) * (n_ {k,t} + β_ t) / (n_ {k,.} + Σ_ v β_ v)。 归一化这些概率,形成一个K维的多项分布,从这个分布中采样一个新的主题z_ i'。 更新计数:n_ {d,z_ i'} += 1,n_ {z_ i',t} += 1,n_ {z_ i',.} += 1。 收敛判断 :重复迭代足够次数(如数百到数千次),直到马尔可夫链达到平稳分布(可通过观察主题分配变化或对数似然稳定来判断)。 参数估计 :采样结束后,用计数统计量估计θ和φ: 文档-主题分布:θ_ {d,k} ≈ (n_ {d,k} + α_ k) / (Σ_ {k'=1}^K (n_ {d,k'} + α_ {k'})). 主题-词分布:φ_ {k,t} ≈ (n_ {k,t} + β_ t) / (Σ_ {v=1}^V (n_ {k,v} + β_ v)). 通常使用最后一次迭代的计数,或多次采样结果的平均。 5. 算法特点与解释 由于“折叠”了θ和φ,采样只在离散的主题标签空间进行,计算效率更高。 公式中的(n_ {d,k} + α_ k)体现了文档d中主题k的流行度,(n_ {k,t} + β_ t)体现了词t在主题k中的代表性。两者结合使得采样倾向于将词分配给在文档中常见且与该词关联强的主题。 超参数α和β起到平滑作用,防止计数为零导致概率为零。 该算法是一种近似推断方法,但实际中被广泛使用且效果良好。 通过以上步骤,折叠吉布斯采样可以从文档-词观测中学习LDA的隐变量,从而得到每篇文档的主题分布和每个主题的词分布,实现主题建模的核心目标。