2026年11月1日 · science · 3分钟阅读

理解 Dirichlet 分布

什么是 Dirichlet 分布?

Dirichlet 分布的一次采样是一个概率向量:各分量非负,且总和为一。

这个向量位于标准单纯形上:

ΔK−1={x∈[0,1]K:∑i=1Kxi=1}.\Delta^{K-1}=\left\{\boldsymbol{x}\in[0,1]^K:\sum_{i=1}^K x_i=1\right\}.

每个这样的向量都可以作为分类分布或多项分布的概率参数。因此,对于一组固定的可能结果,Dirichlet 可以理解为**“概率分布上的分布”**。

当 K≥2K\geq 2 且各参数 αi>0\alpha_i>0 时,其在单纯形内部的概率密度函数(PDF)为:

f(x;α)=1B(α)∏i=1Kxiαi−1,xi>0,∑i=1Kxi=1.f(\boldsymbol{x};\boldsymbol{\alpha}) =\frac{1}{\mathrm{B}(\boldsymbol{\alpha})} \prod_{i=1}^{K}x_i^{\alpha_i-1}, \qquad x_i>0,\quad \sum_{i=1}^{K}x_i=1.

B 函数

多元 Beta 函数是未归一化密度在单纯形上的积分:

B(α)=∫ΔK−1∏j=1Kxjαj−1 dx=∏j=1KΓ(αj)Γ(α0),α0=∑j=1Kαj.\mathrm{B}(\boldsymbol{\alpha}) =\int_{\Delta^{K-1}}\prod_{j=1}^{K}x_j^{\alpha_j-1}\,\mathrm{d}\boldsymbol{x} =\frac{\prod_{j=1}^{K}\Gamma(\alpha_j)}{\Gamma(\alpha_0)}, \qquad \alpha_0=\sum_{j=1}^{K}\alpha_j.

这里对 K−1K-1 个自由坐标积分,即 dx=dx1⋯dxK−1\mathrm{d}\boldsymbol{x}=\mathrm{d}x_1\cdots\mathrm{d}x_{K-1},而 xK=1−∑j=1K−1xjx_K=1-\sum_{j=1}^{K-1}x_j。因此,除以 B(α)\mathrm{B}(\boldsymbol{\alpha}) 就能使 PDF 的积分为一。

其中 Γ\Gamma 是 Gamma 函数,对 t>0t>0 定义为:

Γ(t)=∫0∞ut−1e−u du.\Gamma(t)=\int_0^\infty u^{t-1}e^{-u}\,\mathrm{d}u.

后面的推导会用到它的递推关系 Γ(t+1)=tΓ(t)\Gamma(t+1)=t\Gamma(t)。

关键性质

给定 α\boldsymbol{\alpha} 后,B(α)\mathrm{B}(\boldsymbol{\alpha}) 是一个常数,用来保证密度的积分为一。因此,分布的形状由乘积部分决定:

f(x;α)∝∏i=1Kxiαi−1.f(\boldsymbol{x};\boldsymbol{\alpha})\propto \prod_{i=1}^{K}x_i^{\alpha_i-1}.

当 α=(1,…,1)\boldsymbol{\alpha}=(1,\ldots,1) 时,乘积为常数,分布在单纯形上均匀分布。均匀不代表密度一定为一:K=2K=2 时密度为 11,K=3K=3 时为 22。

两个分量

当 K=2K=2 时,x2=1−x1x_2=1-x_1,所有可能的向量构成一条线段。此时 x1x_1 的密度就是 Beta 分布。调整下方的 α1\alpha_1 和 α2\alpha_2,或选择均匀,观察密度曲线。

三个分量

当 K=3K=3 时,单纯形是一个三角形。每个点表示一个向量 (x1,x2,x3)(x_1,x_2,x_3),颜色或高度表示该点的密度。先选择均匀,再调整参数观察形状变化。密度不是某一点的概率,数值可以大于一。

期望与方差

设 X∼Dirichlet⁡(α)\boldsymbol{X}\sim\operatorname{Dirichlet}(\boldsymbol{\alpha}),记参数总和为

α0=∑j=1Kαj.\alpha_0=\sum_{j=1}^{K}\alpha_j.

每个分量的期望和方差分别为:

E[Xi]=αiα0,Var⁡(Xi)=αi(α0−αi)α02(α0+1).\begin{aligned} \mathbb{E}[X_i]&=\frac{\alpha_i}{\alpha_0},\\ \operatorname{Var}(X_i)&= \frac{\alpha_i(\alpha_0-\alpha_i)}{\alpha_0^2(\alpha_0+1)}. \end{aligned}

以下利用 B 函数的参数平移关系证明。

期望的推导

记 ei\boldsymbol{e}_i 为第 ii 个分量等于一、其余分量等于零的向量。乘上 xix_i 后,对应指数从 αi−1\alpha_i-1 变为 αi\alpha_i,相当于把参数向量换成 α+ei\boldsymbol{\alpha}+\boldsymbol{e}_i:

E[Xi]=1B(α)∫ΔK−1xi∏j=1Kxjαj−1 dx=B(α+ei)B(α)=Γ(αi+1)Γ(αi)Γ(α0)Γ(α0+1)=αiα0.\begin{aligned} \mathbb{E}[X_i] &=\frac{1}{\mathrm{B}(\boldsymbol{\alpha})} \int_{\Delta^{K-1}}x_i\prod_{j=1}^{K}x_j^{\alpha_j-1}\,\mathrm{d}\boldsymbol{x}\\ &=\frac{\mathrm{B}(\boldsymbol{\alpha}+\boldsymbol{e}_i)}{\mathrm{B}(\boldsymbol{\alpha})}\\ &=\frac{\Gamma(\alpha_i+1)}{\Gamma(\alpha_i)} \frac{\Gamma(\alpha_0)}{\Gamma(\alpha_0+1)}\\ &=\frac{\alpha_i}{\alpha_0}. \end{aligned}

其余 Gamma 因子相互抵消,最后一步使用了 Γ(t+1)=tΓ(t)\Gamma(t+1)=t\Gamma(t)。

方差的推导

先计算二阶矩。类似地,乘上 xi2x_i^2 相当于把 αi\alpha_i 增加二:

E[Xi2]=B(α+2ei)B(α)=Γ(αi+2)Γ(αi)Γ(α0)Γ(α0+2)=αi(αi+1)α0(α0+1).\begin{aligned} \mathbb{E}[X_i^2] &=\frac{\mathrm{B}(\boldsymbol{\alpha}+2\boldsymbol{e}_i)}{\mathrm{B}(\boldsymbol{\alpha})}\\ &=\frac{\Gamma(\alpha_i+2)}{\Gamma(\alpha_i)} \frac{\Gamma(\alpha_0)}{\Gamma(\alpha_0+2)}\\ &=\frac{\alpha_i(\alpha_i+1)}{\alpha_0(\alpha_0+1)}. \end{aligned}

再减去期望的平方,得到方差:

Var⁡(Xi)=E[Xi2]−(E[Xi])2=αi(αi+1)α0(α0+1)−αi2α02=αi(α0−αi)α02(α0+1).\begin{aligned} \operatorname{Var}(X_i) &=\mathbb{E}[X_i^2]-\bigl(\mathbb{E}[X_i]\bigr)^2\\ &=\frac{\alpha_i(\alpha_i+1)}{\alpha_0(\alpha_0+1)} -\frac{\alpha_i^2}{\alpha_0^2}\\ &=\frac{\alpha_i(\alpha_0-\alpha_i)}{\alpha_0^2(\alpha_0+1)}. \end{aligned}

参数的直观含义

参数的相对大小决定平均概率向量。如果保持参数比例不变,增大参数总和 α0\alpha_0 会减小方差,使分布更集中在均值附近。

参考:SciPy:Dirichlet 分布 · Probability Distribution Explorer:矩。

评论

登录 — 登录后参与讨论。

  1. …