关于狄利克雷过程的思想整理。主要结合了知乎上的相关博客。
Dirichlet Process
1. 介绍
Dirichlet 分布(Dirichelt Distribution)和 Dirichlet 过程 (Dirichlet Process)广泛应用于信息检索、自然语言处理等领域,是理解主题模型的重要一步。作为一种非参数模型(non-paramatric model),和参数模型一样有着广泛的应用。
2. Dirichlet 分布
2.1. 简介
Dirichlet 分布(DP)是一种概率分布的分布,由参数 α,G0 确定,即 G∼DP(α,G0),α 是分布参数,值越大分布越近似于均匀分布,G0 是基分布。可以简单理解为给定分布 G0,通过 α 的控制得到输出分布 G。
2.2. Dirichlet 的应用场景
有一组来源于混合高斯分布的数据集,希望对其进行聚类,然而并不知道这组数据是由几组高斯分布生成。即:
- 聚类数量未知;
- 非参数化;
- 聚类数量服从概率分布。
2.3. Dirichlet 分布的数学形式
假设有 m 个数据 x1,...,xm,每个数据由不同的分布 g1,...,gm 产生,每个分布对应不同的参数 θ1,...,θm。如 gi 是高斯分布,则 θi={μi,σi}。对 θi 建模,假设 θi 服从分布 H(θ),当 H(θ) 是连续分布时 P(θi=θj)=0,i=j,即之前所假设的数据来自不同分布。而为解决聚类问题,则构造一个离散分布 G 使得 θi∼G 且 G 和 H(θ) 非常相似。G 就服从 Dirichlet 过程,即 G∼DP(α,H)。
2.4. 离散分布 G 的采样(Dirichlet 过程)
一种采样过程被形象地称为 Stick Breaking(折棍子过程)。
首先,取 θ1∼G0,再有 β1∼Beta(1,α),π1=β1,即先采样第一个样本,然后把样本的权重设为 β1。
再采样第二个样本:θ2∼G0,β2∼Beta(1,α),π2=(1−π1)×β2。理解为由于第一个样本占用了棍子的 β1,则棍子还剩 (1−π1),因此再从棍子上折下 β2。
之后,继续上述过程,由于棍子还剩下 (1−π1−π2),则采样 β3,从剩下的棍子上折走 π3=(1−π1−π2)×β3。
不断重复上述过程,最终得到离散分布 G,θi 是所在的位置,πi 是对应的权重。这个过程也可以看出 α 对 G 的离散程度影响。
由于对于 X∼Beta(a,b),有 E(X)=a+ba,因此对上述过程:
- 当 α=0 时,有 E(β1)=1,即第一个样本取走了所有的棍子,那么就使得这个离散分布的所有密度都落在了 θ1 上。
- 当 α=∞,则 E(βi)=0,使得分布趋向于均匀连续。
3. Dirichlet 过程的性质
- 期望值与基分布相同:EDP(α,G0)(X)=EG0(X)
- 随着 α→∞,有 DP(α,G0)=G0
- 可以嵌套表示:G2∼DP(α,G1),G1∼DP(α,G0)
- 无法用电脑完全表示
4. Dirichlet 过程的直观理解 —— CRP
当参加大型聚餐时,往往人们会趋向于去人多的一桌,即“聚集效应”,而独自去新的一桌则由某种原因导致的概率 α 决定。
设 Xi 表示第 i 张桌子上的人数,目前已经有 k 张桌子上有客人。当第 n 个客人到来时,其所去的桌子有两种情况:
table(n)={i,k+1,existing table,new table,with p=n−1+αXiwith p=n−1+αα
5. Dirichlet 过程的计算流程
-
将所有样本随机分配到初始聚类中;
-
对于每一个样本 i,迭代进行:
2.1. 根据离散采样算法,计算 i 的所属类的概率;
2.2. 根据计算得到的概率,分配 i 所属的聚类。
参考