try ai
科普
编辑
分享
反馈
  • 层级狄利克雷过程

层级狄利克雷过程

SciencePedia玻尔百科
核心要点
  • 层级狄利克雷过程(HDP)通过允许每个分组拥有其独特的簇,同时发现并共享所有分组间的共同潜在主题,来对分组数据进行建模。
  • 它通过一个直观的“中餐馆特许经营”类比来运作,其中本地顾客分组(数据簇)可以从一个共享的全局主题菜单(菜肴)中进行选择,从而实现统计强度的共享。
  • 作为一种非参数模型,HDP 不需要预先指定潜在主题或簇的数量,使其能够直接从数据中推断出这种复杂性。
  • HDP 是无限隐马尔可夫模型等高级模型的基础,并在生物信息学、生态学和自然语言处理等领域有重要应用。

引言

在一个数据泛滥的世界里,发现有意义的模式是一项根本性的挑战。当数据天然地组织成组时——例如,不同作者的文档、不同病人的基因表达、或不同湖泊的生态调查——这项任务变得尤为复杂。我们如何才能既为每个组的独有特征建模,又能发现将它们联系在一起的共同主题?传统方法常常迫使我们在开始时就做出一个僵硬的选择:我们要寻找多少种模式?这个限制造成了一个知识鸿沟,因为我们很少能预先知道系统的真实复杂性。

层级狄利克雷过程(Hierarchical Dirichlet Process, HDP)提供了一个优雅而强大的解决方案。它是一个非参数贝叶斯框架,使我们能够在不预先指定类别数量的情况下,发现分组数据中的共享结构。它将一个直观的想法形式化:相关的组应该共享统计强度,从而既能学习到每个组的独特性,也能学习到所有组的共同性。本文将引导您了解这个卓越的模型。首先,在“原理与机制”一章中,我们将通过一个令人难忘的餐厅特许经营故事,建立对 HDP 的直观理解。然后,在“应用与跨学科联系”一章中,我们将探索这同一个数学思想如何为自然语言处理和现代生物学等不同领域提供强大的发现工具。

原理与机制

想象一下,你是一位美食评论家,任务是去了解一家新开的、大获成功的连锁餐厅。你走访了几个分店——一家在巴黎,一家在东京,一家在纽约。每家店都有其独特的氛围和本地客户。东京的每日特餐可能主打本地海鲜,而巴黎分店则擅长糕点。然而,当你品尝食物时,你注意到了一个显著的一致性。整个连锁店都有一种共享的“DNA”:一种招牌的酵母面包配方,一种特定的蔬菜烘烤方式,一套以不同形式出现的特定香料。

你会如何描述这种情况?你不能只说它们是同一家餐厅,因为它们显然不是。但将它们视为完全独立的实体又会错过故事中最有趣的部分:共享的烹饪哲学,以及每位厨师从中汲取灵感的共同菜单。这正是​​层级狄利克雷过程(HDP)​​旨在为数据解决的挑战。它提供了一种有原则的方法来为以组形式出现的数据建模,允许每个组拥有其特定的特征,同时发现并共享潜在的共同结构。

为了理解这个优美的思想,我们不从复杂的方程式开始。相反,我们将通过一个有趣的故事——中餐馆特许经营——从头开始建立直观认识。

单个餐厅:“富者愈富”法则

在我们经营一家特许经营店之前,必须先了解单个餐厅是如何运作的。让我们想象一种特殊的餐厅,其中的座位安排由一条简单而强大的社会动态法则决定。顾客,代表我们的数据点,一个接一个地到达。他们必须选择一张桌子,每张桌子代表我们数据中的一个簇或一个主题。

规则是这样的:新来的顾客可以选择加入一张现有桌子,或者开一张新桌子。

  • 加入任何一张给定桌子的概率与已经坐在那里的人数成正比。受欢迎的桌子会变得更受欢迎——这是一个经典的​​“富者愈富”​​效应。
  • 开一张新桌子的概率与一个固定的“多样性”参数成正比,我们称之为 α\alphaα。如果 α\alphaα 很大,顾客更具冒险精神,喜欢独坐,从而导致有很多桌子。如果 α\alphaα 很小,他们更倾向于从众,喜欢加入现有的人群。

这个过程被称为​​中餐馆过程(Chinese Restaurant Process, CRP)​​,它是一种非常直观的方式,可以在不预先指定簇数量的情况下生成簇。数据本身决定了它自然形成的组数。

但食物呢?假设每张桌子可以点一道菜,这道菜代表该簇的潜在参数或“主题”。这些菜从哪里来?它们是从一个主菜单中抽取的,我们称之为主菜单​​基础测度(base measure)​​HHH。这个菜单描述了所有可能菜肴的宇宙。如果菜单上有一些非常普遍、受欢迎的菜品(形式上说,如果 HHH 含有原子),那么新开的桌子很有可能会被上一道那些受欢迎的菜。如果菜单种类繁多、兼收并蓄(一个连续测度),那么新开的桌子很可能会得到一道前所未见的菜。新桌子获得一道真正新菜的概率由我们的多样性参数 α\alphaα 控制。

特许经营:共享一个活菜单

现在,让我们扩展到特许经营。这是层级狄利克雷过程的核心。我们有多组数据,所以我们有多家餐厅——每个组对应一家。

在每家餐厅内部,座位安排和之前一样。顾客(该组中的数据点)到达并根据“富者愈富”的规则选择桌子,这个规则由一个局部的多样性参数 α0\alpha_0α0​ 控制。这使得每家餐厅可以有自己独特的桌子配置,反映其局部数据组内的特定模式。

这里有一个绝妙的转折:​​特许经营中的所有餐厅共享一个单一的、全局的菜品菜单。​​但这并非普通菜单,它是一个活菜单。上面的菜品不是预先固定的。相反,这个菜单本身是由所有餐厅的桌子共同创造和扩展的。

这导致了一场优美的两级人气竞赛,我们可以通过一个简单的故事来追溯,就像 中的情景一样:

  1. 第一位顾客进入餐厅1(R1)。餐厅是空的,所以他们必须开一张新桌(桌1)。这张桌子需要一道菜。全局菜单也是空的,所以唯一的选择是创造一道新菜,我们称之为“菜A”。

  2. 第二位顾客进入R1。桌1已经有了一个人,他们将以 11+α0\frac{1}{1+\alpha_0}1+α0​1​ 的概率加入该桌,或以 α01+α0\frac{\alpha_0}{1+\alpha_0}1+α0​α0​​ 的概率开一张新桌。假设他们加入了桌1。现在两位顾客都在享用菜A。

  3. 第三位顾客进入另一家餐厅——餐厅2(R2)。它是空的,所以他们必须开一张新桌(桌2)。现在,这张桌子应该上什么菜呢?他们可以查看全局菜单。目前,菜单上有一道菜,菜A,它在整个特许经营体系中正由一张桌子(桌1)供应。R2的新桌可以选择上菜A,也可以创造一道全新的菜,“菜B”。这个选择由另一场人气竞赛决定:

    • 选择一道现有菜(菜A)的概率与整个特许经营体系中已经供应这道菜的总桌数成正比。
    • 创造一道新菜(菜B)的概率与一个全局“创造性”参数 γ\gammaγ 成正比。 假设他们选择了菜A。这样选择的概率是 11+γ\frac{1}{1+\gamma}1+γ1​,其中 111 是供应菜A的桌子数量。

这就是神奇的时刻。一个首次出现在餐厅1中的模式或“菜”,刚刚被分享给了餐厅2。R2不必重新发明它;它可以借鉴整个特许经营体系的集体经验。这就是 HDP 如何在组间共享统计强度。

  1. 第四位顾客进入R1,那里现在一张桌子上有两位顾客。假设这位顾客富有冒险精神,开了一张新桌(桌3),这个事件的概率为 α02+α0\frac{\alpha_0}{2+\alpha_0}2+α0​α0​​。这张新桌需要一道菜。查看全局菜单,菜A现在由两张桌子(桌1和桌2)供应。选择是在菜A和创造一道新菜之间进行。假设他们创造了一道新菜,“菜B”,其概率为 γ2+γ\frac{\gamma}{2+\gamma}2+γγ​。

  2. 第五位顾客进入R2。他们开了一张新桌(桌4)。上什么菜?全局菜单现在有菜A(由2张桌子供应)和菜B(由1张桌子供应)。假设他们选择了菜B,这个事件的概率为 13+γ\frac{1}{3+\gamma}3+γ1​。现在餐厅2也用上了菜B,而这道菜是首次在餐厅1中引入的。

这个两级过程——顾客在餐厅内选择桌子,桌子在特许经营体系内选择菜肴——是 HDP 的核心机制。

发现的逻辑

这种结构为我们提供了一个强大的预测引擎。当一个新顾客到达一家餐厅时,他们可能会做什么?我们可以精确计算他们最终与一个现有主题(菜肴)关联的概率。总概率是两条不同路径的概率之和:

  1. ​​加入一张现有桌子:​​ 新顾客直接坐到一张已经存在的桌子旁。他们自动获得该桌供应的菜。如果餐厅 jjj 中有 NjN_jNj​ 位顾客,这件事发生的概率为 NjNj+α0\frac{N_j}{N_j + \alpha_0}Nj​+α0​Nj​​。

  2. ​​开一张新桌,但选一道旧菜:​​ 顾客开了一张新桌(概率为 α0Nj+α0\frac{\alpha_0}{N_j + \alpha_0}Nj​+α0​α0​​),而这张新桌上的是一道已经在全局菜单上的菜。如果整个特许经营体系中总共有 TTT 张桌子,这第二步发生的概率为 TT+γ\frac{T}{T + \gamma}T+γT​。

综合起来,被分配到一个已存在菜肴的总概率是: P(existing dish)=NjNj+α0+α0Nj+α0TT+γP(\text{existing dish}) = \frac{N_j}{N_j+\alpha_0} + \frac{\alpha_0}{N_j+\alpha_0} \frac{T}{T+\gamma}P(existing dish)=Nj​+α0​Nj​​+Nj​+α0​α0​​T+γT​

这个简单而优雅的公式完美地捕捉了模型的层级性质。决策受到局部统计量(餐厅中的顾客数 NjN_jNj​)和全局统计量(特许经营体系中的总桌数 TTT)的影响。

那么,真正发现——即创造一个全新概念——的概率是多少?这对应于顾客开了一张新桌,并且那张桌子上了一道前所未见的全新菜肴。其概率是两个“新颖性”事件的概率之积: P(new table and new dish)=α0Nj+α0×γT+γP(\text{new table and new dish}) = \frac{\alpha_0}{N_j+\alpha_0} \times \frac{\gamma}{T+\gamma}P(new table and new dish)=Nj​+α0​α0​​×T+γγ​

这些公式也让我们对参数 α0\alpha_0α0​ 和 γ\gammaγ 有了深刻的直观理解。它们是​​集中度参数​​,控制着层级结构两个层面的多样性。

  • α0\boldsymbol{\alpha_0}α0​ 控制组内多样性。大的 α0\alpha_0α0​ 使顾客“不安分”,鼓励开更多新桌,导致每个组内产生更多、更小的簇。
  • γ\boldsymbol{\gamma}γ 控制跨组多样性。大的 γ\gammaγ 使特许经营体系“富有创造力”,鼓励新桌创造新菜,导致总体上有更多主题,组间共享更少。

事实上,可以证明,一个有 njn_jnj​ 个顾客的餐厅中,桌子的期望数量约为 α0∑i=1nj1α0+i−1\alpha_0 \sum_{i=1}^{n_j} \frac{1}{\alpha_0+i-1}α0​∑i=1nj​​α0​+i−11​,而对于 TTT 张桌子,菜肴的期望数量约为 γ∑i=1T1γ+i−1\gamma \sum_{i=1}^{T} \frac{1}{\gamma+i-1}γ∑i=1T​γ+i−11​。这些数量呈对数增长,证实了我们看到的数据越多,我们期望发现的结构就越多,但增长速度会递减。

数学交响曲

虽然餐厅的故事是一个很好的指南,但 HDP 建立在一个深刻而优雅的数学基础上:​​狄利克雷过程(Dirichlet Process, DP)​​。DP 不是一个关于数的分布,而是一个关于分布的分布。它是一个生成概率测度的随机过程。

HDP 由一个简单的两步生成方案定义:

  1. 首先,我们从一个狄利克雷过程中生成一个全局概率测度 G0G_0G0​,记作 G0∼DP(γ,H)G_0 \sim \mathrm{DP}(\gamma, H)G0​∼DP(γ,H)。这个 G0G_0G0​ 将以概率1成为一个离散分布——一个带权重的“尖峰”或原子的集合。它作为我们随机的、共享的菜肴菜单。参数 γ\gammaγ 控制这个菜单的变化程度,而基础测度 HHH 定义了它的平均特性。

  2. 然后,对于每个组 jjj,我们从另一个狄利克雷过程中生成一个特定于组的概率测度 GjG_jGj​,即 Gj∼DP(α0,G0)G_j \sim \mathrm{DP}(\alpha_0, G_0)Gj​∼DP(α0​,G0​)。关键步骤是,第二个 DP 的基础测度不是固定的 HHH,而是我们刚刚生成的随机测度 G0G_0G0​。

因为所有特定于组的测度 GjG_jGj​ 都围绕着同一个随机全局测度 G0G_0G0​ 为中心,它们被迫共享同一组原子(相同的尖峰)。它们可能会给这些原子分配不同的权重,但原子的位置是共享的。这就是“共享菜肴”的形式化机制。

这个构造的最终美妙之处在于,当我们进行演算并将抽象的随机测度 G0G_0G0​ 和 {Gj}\{G_j\}{Gj​} 积分掉后,我们的数据及其簇分配的边际概率正好收敛到中餐馆特许经营故事所描述的概率。数据和潜在结构的联合概率可以分解为三个优雅的部分:

p(data, tables, dishes)=(∏j=1Jp(table assignments in restaurant j∣α0))⏟局部座位安排×(p(dish assignments for all tables∣γ))⏟全局菜单创建×(∏k=1Kp(data for dish k∣H))⏟每道菜的数据似然p(\text{data, tables, dishes}) = \underbrace{\left( \prod_{j=1}^{J} p(\text{table assignments in restaurant } j \mid \alpha_0) \right)}_{\text{局部座位安排}} \times \underbrace{\left( p(\text{dish assignments for all tables} \mid \gamma) \right)}_{\text{全局菜单创建}} \times \underbrace{\left( \prod_{k=1}^{K} p(\text{data for dish } k \mid H) \right)}_{\text{每道菜的数据似然}}p(data, tables, dishes)=局部座位安排(j=1∏J​p(table assignments in restaurant j∣α0​))​​×全局菜单创建(p(dish assignments for all tables∣γ))​​×每道菜的数据似然(k=1∏K​p(data for dish k∣H))​​

这个因式分解是我们特许经营故事的数学回响。它展示了世界的复杂性如何可以被分解为一系列更简单的模块化过程:组内的局部聚类、组间的全局主题共享,以及从这些主题生成数据。它证明了构建简单的概率规则并让它们相互作用以产生丰富、复杂且现实的结构的力量。

应用与跨学科联系

想象一下,你是一名探险家,正在为一千个不同的行星上的生命进行编目。在每个世界上,你都发现了一系列独特的生物。起初,它们似乎都毫无关联。但随着你收集更多的数据,你开始注意到一些模式。行星 A 上的一只六足昆虫与行星 C 上的一只看起来惊人地相似。一种发光真菌出现在几十个世界上,总是靠近水源。你意识到,可能存在一个普适的生命形式“菜单”,每个行星只是从这个菜单中选择了一个子集。在预先一无所知的情况下,你将如何发现这个普适菜单和局部的变异呢?

这正是层级狄利克雷过程(HDP)旨在解决的那种宏大挑战。它是一个用于发现的数学框架,一种在许多不同但相关的数据集中寻找共享模式的工具。我们刚刚探讨了它的内部工作原理,其优美的生成结构让人联想到一个餐厅特许经营。现在,让我们走出去,看看这个强大的思想如何让我们在从人类语言的句法到生命蓝图本身的世界中发现结构和意义。

时间与语言的节律

让我们从随时间展开的事物开始:一个句子、一段音乐,或者股票市场的日常波动。理解这类序列的经典工具是隐马尔可夫模型(Hidden Markov Model, HMM)。HMM 假设我们看到的观测值(如句子中的单词)是由一个潜在的、不可见的“状态”序列(如语法角色:名词、动词、形容词)生成的。要构建一个 HMM,你通常必须预先做出一个关键决定:有多少个隐藏状态?如果你选择三个,你的模型将永远无法发现第四个,即使数据强烈暗示它的存在。

这就像试图只用“晴天”、“雨天”和“多云”来描述天气。当第一场雾降临时,你该怎么办?基于 HDP 构建的无限隐马尔可夫模型(infinite Hidden Markov Model, iHMM)为这种僵化的假设提供了一个优美的解决方案。它使用一个可能无限数量的状态。它允许发现那个你从未预料到的“雾天”。

正如我们在中餐馆特许经营比喻中看到的那样,HDP 为这种发现提供了一种自然的机制。在为序列建模时,iHMM 计算从一个状态转换到另一个状态的概率。但关键的是,它还计算转换到一个全新的、前所未见的状态的概率。这个概率永远不为零。这意味着模型始终保持开放心态,准备在数据需要时扩展其自身的复杂性。它学习解释序列所需的隐藏“主题”或“状态”的数量。

你可能会认为,使用“无限”数量的状态只是哲学家的游戏,无法计算。但其数学不仅优雅,而且实用。我们可以调整标准算法,比如用于寻找最可能隐藏状态序列的著名维特比算法,来与这些灵活的模型配合工作,通常通过使用像截断的“断棍”过程这样的巧妙近似方法。实际上,我们可以找到我们观测数据背后最可能的故事,即使可能章节的数量是未知的。这种能力在自然语言处理中发现了深远的用途,用于在海量文档集合中发现主题,在语音识别中,以及在生物信息学中用于解析用DNA语言书写的长而复杂的“句子”。

生命的蓝图

或许,HDP 为分组数据建模的能力在现代生物学中表现得最为明显。从单个细胞的微观组织到生态系统的广阔多样性,生命是按层级组织的。让我们来一次巡游。

一次一个细胞,阅读生命之书

想象你有一张城市的高分辨率地图,但你看不到单个的房屋,只能看到每个街区的模糊人口普查报告。你可能知道一个街区有1000人,但不知道其中有多少是儿童、成人或老人。这就是空间转录组学的挑战:我们可以在组织的微小斑点中测量数千个基因的活性,但每个斑点都包含不同细胞类型的混合物。任务是解卷积这个信号——识别出基本的“纯”细胞类型(神经元、免疫细胞等),并计算出它们在每个斑点中的比例。

现在,假设你有多张来自不同城市的地图——或者在生物学中,来自许多不同患者的组织样本。虽然每个患者的组织是独特的,但它们都是由相同的人类基本细胞类型集合构成的。这正是 HDP 的绝佳用武之地。每个组织样本是一个“组”(我们特许经营中的一家餐厅)。HDP 允许我们同时为所有样本建模,假设它们都从一个共享的、全局的“菜单”中抽取细胞类型。它借助所有样本的统计强度,为每种基本细胞类型的样子描绘出一幅清晰得多的图景,然后利用这些知识更好地估计每个斑点的组成。它发现了器官的普适性细胞构建模块。

我们 DNA中古老革命的回响

让我们从单个生物体放大到进化历史的宏大画卷。在遥远的过去,生物体的整个基因组偶尔会发生复制——这一事件被称为全基因组复制(Whole-Genome Duplication, WGD)。这些 WGD 是革命性的,为进化提供了一个巨大的原始遗传材料沙箱以供修补。它们在后代物种的基因组中留下了微弱的“回响”,即年龄相近的基因过剩。

对于单个物种来说,识别这些古老的回响极其困难。经过数亿年,来自不同 WGD 事件的信号模糊在一起,就像池塘中重叠的涟漪。然而,我们有一条关键信息:相关物种共享共同的历史。发生在共同祖先中的 WGD 会被其所有后代继承。

一个秉承 HDP 精神的层级模型可以解开这个谜题。我们可以一次性分析几十个相关物种的基因组。每个物种是一个“组”。该模型假设潜在的 WGD 事件在系统发育树上是共享的,然后努力将一个古老事件的微弱、共享信号从每个物种独特的进化速率的“噪音”中分离出来。它将单个基因组中毫无希望的混乱变成一个清晰、可识别的共享历史故事,使我们能够精确定位数亿年前发生的灾难性事件。

描绘看不见的绝大多数

再上一层,考虑一个湖泊的生态。我们可以采集一份水样,对其内部漂浮的环境DNA(eDNA)进行测序,从而在不用撒网的情况下获得鱼类群落的普查数据。如果我们在一个景观中对数百个湖泊都这样做,一个新问题就出现了:是否存在不同“类型”的湖泊生态系统?也许有一种“寒冷、清澈、以鳟鱼为主”的类型,和一种“温暖、浑浊、以鲤鱼为主”的类型。

这样的类型有多少种?我们可能不知道。HDP 是进行此类探索性分析的完美工具。每个湖泊是一个“组”。HDP 查看所有湖泊的物种组成并将它们聚类,发现表征该区域的基本群落类型。它在不被告知要寻找多少种类型的情况下完成这项工作,揭示了整个景观中生物多样性的自然模式。

蛋白质与物种的宇宙

这种在分组数据中发现共享模式的原则在生物学中无处不在。

在单个细胞内,蛋白质被复杂的糖分子,即聚糖,所修饰。蛋白质上的每个位置或“位点”都可以有各种不同聚糖的完整分布。因为任何一个位点的数据通常是稀疏和嘈杂的,我们可以使用一个层级模型来共享蛋白质上所有位点的信息。这种方法假设所有位点都由相同的细胞机制修饰,并利用这个共享的背景来为每个位点的聚糖组成获得更好的估计。

当我们构建生命之树时,我们常常发现不同的分支以不同的速度进化。树中有多少个不同的“局部时钟”或进化速率?我们不必猜测,而是可以使用狄利克雷过程让数据自行将分支聚类成速率类别,从而推断解释数据所需的时钟数量。

即使是最基本的问题——“什么是物种?”——也可以用这些工具来解决。我们可以从数百个个体中收集遗传、形态和生态数据,然后让模型将它们聚类。狄利克雷过程允许我们在一个统一的过程中推断物种的数量和个体对物种的归属,权衡所有证据以找到自然界所画出的最 plausible 的边界。

发现结构的艺术

从语言的隐藏语法到写在我们DNA中的进化公开记录,世界充满了分组数据。层级狄利克雷过程为我们提供了一种有原则且强大的探索方式。它将一个简单直观的想法形式化:相关事物共享模式。

这其中如此美妙之处在于,它代表了某种科学上的谦逊。我们不是将我们僵化、先入为主的类别强加给世界,而是构建一个足够灵活的模型,让世界向我们讲述它自己的故事。HDP 是一种倾听的工具,它允许现实固有的、层级的结构自我显现。同一个数学思想能帮助我们在古老的基因组、现代的生态系统和人类的句子中找到意义,这一事实说明了它的深度和力量。它让我们得以一瞥将我们复杂世界联系在一起的统一的数学线索。