分层狄利克雷过程(Hierarchical Dirichlet Process, HDP)的构造与后验推理过程
字数 4241 2025-12-10 16:48:47

分层狄利克雷过程(Hierarchical Dirichlet Process, HDP)的构造与后验推理过程

题目描述
分层狄利克雷过程(HDP)是一种非参数贝叶斯模型,用于对共享潜在结构的多个分组数据进行聚类。例如,在主题建模中,每个文档对应一个分组(文档内的词),所有文档共享一个全局的主题集合,但每个文档的主题比例不同。HDP通过构建一个分层结构:顶层是一个全局的狄利克雷过程(DP),用于生成所有分组共享的潜在分布(如主题分布);底层每个分组使用一个依赖全局DP的DP,来生成组特定的分布(如文档特定主题比例)。本题将详细讲解HDP的构造、数学模型、以及后验推理(如使用Gibbs采样)的完整过程。

解题过程
我们以主题建模为例,假设有 \(J\) 个文档(分组),每个文档包含一系列词。目标是自动发现所有文档共享的主题集合,并推断每个文档的主题比例。


步骤1:理解狄利克雷过程(DP)的基本概念

狄利克雷过程 \(DP(\gamma, H)\) 是一个分布上的分布,其中:

  • \(\gamma > 0\) 是浓度参数,控制分布的离散程度。
  • \(H\) 是基分布(连续分布),例如主题上的分布。
  • DP的每次采样是一个离散分布(即使 \(H\) 连续),形式为:

\[ G = \sum_{k=1}^{\infty} \pi_k \delta_{\phi_k} \]

其中 \(\pi_k\) 是权重(满足 \(\sum_k \pi_k = 1\)),\(\phi_k \sim H\) 是原子(如主题参数),\(\delta\) 是Dirac函数。

DP可以通过“折棍表示(Stick-breaking)”构造:

\[\pi_k = \beta_k \prod_{l=1}^{k-1} (1 - \beta_l), \quad \beta_k \sim \text{Beta}(1, \gamma), \quad \phi_k \sim H \]

这表示先折出第一段比例 \(\beta_1\),剩余部分再折第二段 \(\beta_2\),依此类推。


步骤2:分层狄利克雷过程(HDP)的构造

HDP的目标是让多个分组共享同一个全局的原子集合 \(\{\phi_k\}\),但每个分组有不同的权重分布。

  1. 顶层全局DP

\[ G_0 \sim DP(\gamma, H) \]

\(G_0\) 是一个全局的离散分布,形式为:

\[ G_0 = \sum_{k=1}^{\infty} \pi_k \delta_{\phi_k} \]

它提供了所有分组共享的潜在主题(原子)集合 \(\{\phi_k\}\)

  1. 底层分组DP
    对于每个文档 \(j\)(分组),采样一个组特定的分布:

\[ G_j \sim DP(\alpha, G_0) \]

这里基分布是 \(G_0\),意味着 \(G_j\)\(G_0\) 中继承相同的原子 \(\{\phi_k\}\),但具有不同的权重 \(\{\pi_{jk}\}\)。实际上,由于 \(G_0\) 是离散的,\(G_j\) 可写为:

\[ G_j = \sum_{k=1}^{\infty} \pi_{jk} \delta_{\phi_k} \]

权重 \(\pi_{jk}\) 依赖于全局权重 \(\pi_k\) 和组内浓度参数 \(\alpha\)

  1. 数据生成
    对于文档 \(j\) 中的第 \(i\) 个词:
    • 采样主题指示变量:\(\theta_{ji} \sim G_j\)
    • 由于 \(G_j\) 是离散的,\(\theta_{ji}\) 必然取某个 \(\phi_k\),即 \(\theta_{ji} = \phi_k\) 以概率 \(\pi_{jk}\)
    • 生成观测词:\(x_{ji} \sim \text{Categorical}(\phi_k)\),其中 \(\phi_k\) 是主题 \(k\) 的词分布(例如,\(\phi_k \sim \text{Dirichlet}(\beta)\))。

这样,所有文档共享相同的主题参数 \(\{\phi_k\}\),但每个文档的主题权重 \(\pi_{jk}\) 不同。


步骤3:HDP的等价表示与先验

直接使用 \(G_j\) 的无限表示不便于计算。通常采用以下等价构造:

  1. 全局主题权重:使用折棍表示得到全局权重 \(\pi_k\)(来自 \(G_0\))。
  2. 组特定主题比例:对于文档 \(j\),主题 \(k\) 的权重为:

\[ \pi_{jk} = \pi_k \cdot \text{局部调整} \]

更精确地,通过引入“分层”结构,可以证明 \(G_j\) 的采样等价于:

  • 采样一个全局的原子集合 \(\{\phi_k\}\) 和权重 \(\{\pi_k\}\)
  • 对于每个文档 \(j\),采样主题分配 \(z_{ji}\) 的分布为:

\[ z_{ji} \sim \text{Categorical}(\{\pi_{jk}\}_{k=1}^{\infty}) \]

 其中 $ \pi_{jk} $ 与 $ \pi_k $ 相关。

实际计算中,常用“中国餐馆过程(CRP)”类比:

  • 顶层CRP:全局是一个中国餐馆,每个桌子对应一个主题 \(k\),桌子上的菜是 \(\phi_k\)
  • 底层CRP:每个文档是一个独立的中国餐馆,但顾客(词)可以选择:
    a) 坐一个已有桌子(使用已有主题 \(k\))。
    b) 以一定概率开新桌子,并从全局菜单 \(G_0\) 中选一个新菜(新主题)。

这确保了新主题在全局共享。


步骤4:后验推理——Gibbs采样算法

由于HDP涉及无限维分布,后验推断常用Gibbs采样,结合“截断”或直接使用非参数表示(如CRP)。这里以CRP表示的直接采样为例。

变量定义

  • \(z_{ji}\):文档 \(j\) 中词 \(i\) 的主题分配(取值主题索引 \(k\))。
  • \(\phi_k\):主题 \(k\) 的词分布(参数)。
  • \(m_{jk}\):文档 \(j\) 中分配到主题 \(k\) 的词数。
  • \(n_{k}\):全局中主题 \(k\) 出现的总词数。
  • \(K\):当前已出现的主题数(可增长)。

采样步骤

  1. 采样主题分配 \(z_{ji}\)
    对于每个词 \(x_{ji}\)
    • 移除当前计数:\(m_{jz_{ji}}\) 减1,\(n_{z_{ji}}\) 减1。
    • 计算该词属于每个已有主题 \(k\) 的条件概率:

\[ p(z_{ji} = k \mid \cdots) \propto (m_{jk} + \alpha \pi_k) \cdot p(x_{ji} \mid \phi_k) \]

 其中 $ \pi_k $ 是全局主题 $ k $ 的权重,估计为 $ \pi_k \propto n_{k} $(基于DP性质)。
  • 计算属于新主题 \(k_{\text{new}}\) 的概率:

\[ p(z_{ji} = k_{\text{new}} \mid \cdots) \propto \alpha \cdot \pi_{\text{new}} \cdot p(x_{ji} \mid H) \]

 其中 $ \pi_{\text{new}} $ 是新主题的预期权重(与 $ \gamma $ 相关),$ p(x_{ji} \mid H) $ 是基分布 $ H $ 的边际似然(即词 $ x_{ji} $ 在新主题下的概率,通过对 $ \phi $ 积分得到,在Dirichlet先验下可解析计算)。
  • 根据上述概率采样 \(z_{ji}\),若采样到新主题,则增加 \(K\),并采样新主题参数 \(\phi_{K+1} \sim H\)
  1. 更新全局主题权重 \(\pi_k\)
    在给定所有 \(z_{ji}\) 后,全局DP的后验可以通过另一个折棍过程或直接估计:

\[ \pi_k \propto n_k - \gamma \log(1 - \xi) \]

更实用的是,使用“分层”CRP的表示,通常将 \(\pi_k\) 积分掉,直接基于计数采样。

  1. 采样主题参数 \(\phi_k\)
    对于每个主题 \(k\),收集所有分配为 \(k\) 的词,计算后验:

\[ \phi_k \sim \text{Dirichlet}(\beta + \mathbf{n}_k) \]

其中 \(\mathbf{n}_k\) 是主题 \(k\) 中每个词的计数向量,\(\beta\) 是先验参数。

  1. 更新超参数 \(\alpha, \gamma\)(可选):
    可以使用额外的Gamma先验,通过采样或优化来更新。

  2. 迭代
    重复步骤1-4直到收敛。


步骤5:模型解释与应用

  • 主题发现:采样后,每个主题 \(\phi_k\) 对应一个词分布,可解释为一个“主题”。
  • 文档表示:文档 \(j\) 的主题比例由 \(m_{jk} / \sum_k m_{jk}\) 估计。
  • 自动确定主题数:由于DP的非参数性,主题数 \(K\) 会在采样中自动调整,数据决定复杂度。

关键点总结

  1. HDP通过顶层DP实现全局主题共享,底层DP实现组特定权重。
  2. 推理时使用CRP类比,允许动态增加主题。
  3. Gibbs采样通过逐词重新分配主题,结合全局和局部计数更新后验。

HDP是主题模型(如HDP-LDA)、混合模型分层扩展的基础,广泛应用于文本、图像和基因序列分析中。

分层狄利克雷过程(Hierarchical Dirichlet Process, HDP)的构造与后验推理过程 题目描述 : 分层狄利克雷过程(HDP)是一种非参数贝叶斯模型,用于对共享潜在结构的多个分组数据进行聚类。例如,在主题建模中,每个文档对应一个分组(文档内的词),所有文档共享一个全局的主题集合,但每个文档的主题比例不同。HDP通过构建一个分层结构:顶层是一个全局的狄利克雷过程(DP),用于生成所有分组共享的潜在分布(如主题分布);底层每个分组使用一个依赖全局DP的DP,来生成组特定的分布(如文档特定主题比例)。本题将详细讲解HDP的构造、数学模型、以及后验推理(如使用Gibbs采样)的完整过程。 解题过程 : 我们以主题建模为例,假设有 \( J \) 个文档(分组),每个文档包含一系列词。目标是自动发现所有文档共享的主题集合,并推断每个文档的主题比例。 步骤1:理解狄利克雷过程(DP)的基本概念 狄利克雷过程 \( DP(\gamma, H) \) 是一个分布上的分布,其中: \( \gamma > 0 \) 是浓度参数,控制分布的离散程度。 \( H \) 是基分布(连续分布),例如主题上的分布。 DP的每次采样是一个离散分布(即使 \( H \) 连续),形式为: \[ G = \sum_ {k=1}^{\infty} \pi_ k \delta_ {\phi_ k} \] 其中 \( \pi_ k \) 是权重(满足 \( \sum_ k \pi_ k = 1 \)),\( \phi_ k \sim H \) 是原子(如主题参数),\( \delta \) 是Dirac函数。 DP可以通过“折棍表示(Stick-breaking)”构造: \[ \pi_ k = \beta_ k \prod_ {l=1}^{k-1} (1 - \beta_ l), \quad \beta_ k \sim \text{Beta}(1, \gamma), \quad \phi_ k \sim H \] 这表示先折出第一段比例 \( \beta_ 1 \),剩余部分再折第二段 \( \beta_ 2 \),依此类推。 步骤2:分层狄利克雷过程(HDP)的构造 HDP的目标是让多个分组共享同一个全局的原子集合 \(\{\phi_ k\}\),但每个分组有不同的权重分布。 顶层全局DP : \[ G_ 0 \sim DP(\gamma, H) \] \( G_ 0 \) 是一个全局的离散分布,形式为: \[ G_ 0 = \sum_ {k=1}^{\infty} \pi_ k \delta_ {\phi_ k} \] 它提供了所有分组共享的潜在主题(原子)集合 \(\{\phi_ k\}\)。 底层分组DP : 对于每个文档 \( j \)(分组),采样一个组特定的分布: \[ G_ j \sim DP(\alpha, G_ 0) \] 这里基分布是 \( G_ 0 \),意味着 \( G_ j \) 从 \( G_ 0 \) 中继承相同的原子 \(\{\phi_ k\}\),但具有不同的权重 \(\{\pi_ {jk}\}\)。实际上,由于 \( G_ 0 \) 是离散的,\( G_ j \) 可写为: \[ G_ j = \sum_ {k=1}^{\infty} \pi_ {jk} \delta_ {\phi_ k} \] 权重 \( \pi_ {jk} \) 依赖于全局权重 \( \pi_ k \) 和组内浓度参数 \( \alpha \)。 数据生成 : 对于文档 \( j \) 中的第 \( i \) 个词: 采样主题指示变量:\( \theta_ {ji} \sim G_ j \)。 由于 \( G_ j \) 是离散的,\( \theta_ {ji} \) 必然取某个 \( \phi_ k \),即 \( \theta_ {ji} = \phi_ k \) 以概率 \( \pi_ {jk} \)。 生成观测词:\( x_ {ji} \sim \text{Categorical}(\phi_ k) \),其中 \( \phi_ k \) 是主题 \( k \) 的词分布(例如,\( \phi_ k \sim \text{Dirichlet}(\beta) \))。 这样,所有文档共享相同的主题参数 \(\{\phi_ k\}\),但每个文档的主题权重 \( \pi_ {jk} \) 不同。 步骤3:HDP的等价表示与先验 直接使用 \( G_ j \) 的无限表示不便于计算。通常采用以下等价构造: 全局主题权重 :使用折棍表示得到全局权重 \( \pi_ k \)(来自 \( G_ 0 \))。 组特定主题比例 :对于文档 \( j \),主题 \( k \) 的权重为: \[ \pi_ {jk} = \pi_ k \cdot \text{局部调整} \] 更精确地,通过引入“分层”结构,可以证明 \( G_ j \) 的采样等价于: 采样一个全局的原子集合 \(\{\phi_ k\}\) 和权重 \(\{\pi_ k\}\)。 对于每个文档 \( j \),采样主题分配 \( z_ {ji} \) 的分布为: \[ z_ {ji} \sim \text{Categorical}(\{\pi_ {jk}\} {k=1}^{\infty}) \] 其中 \( \pi {jk} \) 与 \( \pi_ k \) 相关。 实际计算中,常用“中国餐馆过程(CRP)”类比: 顶层CRP :全局是一个中国餐馆,每个桌子对应一个主题 \( k \),桌子上的菜是 \( \phi_ k \)。 底层CRP :每个文档是一个独立的中国餐馆,但顾客(词)可以选择: a) 坐一个已有桌子(使用已有主题 \( k \))。 b) 以一定概率开新桌子,并从全局菜单 \( G_ 0 \) 中选一个新菜(新主题)。 这确保了新主题在全局共享。 步骤4:后验推理——Gibbs采样算法 由于HDP涉及无限维分布,后验推断常用Gibbs采样,结合“截断”或直接使用非参数表示(如CRP)。这里以CRP表示的直接采样为例。 变量定义 : \( z_ {ji} \):文档 \( j \) 中词 \( i \) 的主题分配(取值主题索引 \( k \))。 \( \phi_ k \):主题 \( k \) 的词分布(参数)。 \( m_ {jk} \):文档 \( j \) 中分配到主题 \( k \) 的词数。 \( n_ {k} \):全局中主题 \( k \) 出现的总词数。 \( K \):当前已出现的主题数(可增长)。 采样步骤 : 采样主题分配 \( z_ {ji} \) : 对于每个词 \( x_ {ji} \): 移除当前计数:\( m_ {jz_ {ji}} \) 减1,\( n_ {z_ {ji}} \) 减1。 计算该词属于每个已有主题 \( k \) 的条件概率: \[ p(z_ {ji} = k \mid \cdots) \propto (m_ {jk} + \alpha \pi_ k) \cdot p(x_ {ji} \mid \phi_ k) \] 其中 \( \pi_ k \) 是全局主题 \( k \) 的权重,估计为 \( \pi_ k \propto n_ {k} \)(基于DP性质)。 计算属于新主题 \( k_ {\text{new}} \) 的概率: \[ p(z_ {ji} = k_ {\text{new}} \mid \cdots) \propto \alpha \cdot \pi_ {\text{new}} \cdot p(x_ {ji} \mid H) \] 其中 \( \pi_ {\text{new}} \) 是新主题的预期权重(与 \( \gamma \) 相关),\( p(x_ {ji} \mid H) \) 是基分布 \( H \) 的边际似然(即词 \( x_ {ji} \) 在新主题下的概率,通过对 \( \phi \) 积分得到,在Dirichlet先验下可解析计算)。 根据上述概率采样 \( z_ {ji} \),若采样到新主题,则增加 \( K \),并采样新主题参数 \( \phi_ {K+1} \sim H \)。 更新全局主题权重 \( \pi_ k \) : 在给定所有 \( z_ {ji} \) 后,全局DP的后验可以通过另一个折棍过程或直接估计: \[ \pi_ k \propto n_ k - \gamma \log(1 - \xi) \] 更实用的是,使用“分层”CRP的表示,通常将 \( \pi_ k \) 积分掉,直接基于计数采样。 采样主题参数 \( \phi_ k \) : 对于每个主题 \( k \),收集所有分配为 \( k \) 的词,计算后验: \[ \phi_ k \sim \text{Dirichlet}(\beta + \mathbf{n}_ k) \] 其中 \( \mathbf{n}_ k \) 是主题 \( k \) 中每个词的计数向量,\( \beta \) 是先验参数。 更新超参数 \( \alpha, \gamma \) (可选): 可以使用额外的Gamma先验,通过采样或优化来更新。 迭代 : 重复步骤1-4直到收敛。 步骤5:模型解释与应用 主题发现 :采样后,每个主题 \( \phi_ k \) 对应一个词分布,可解释为一个“主题”。 文档表示 :文档 \( j \) 的主题比例由 \( m_ {jk} / \sum_ k m_ {jk} \) 估计。 自动确定主题数 :由于DP的非参数性,主题数 \( K \) 会在采样中自动调整,数据决定复杂度。 关键点总结 : HDP通过顶层DP实现全局主题共享,底层DP实现组特定权重。 推理时使用CRP类比,允许动态增加主题。 Gibbs采样通过逐词重新分配主题,结合全局和局部计数更新后验。 HDP是主题模型(如HDP-LDA)、混合模型分层扩展的基础,广泛应用于文本、图像和基因序列分析中。