贝叶斯变分GMM学习笔记
在传统GMM模型中,高斯模型数量K是一个超参数,如何选取此参数会直接影响着模型训练的结果。当K过大时,出现某些高斯模型方差大的问题,而当K选取过小时,则容易出现奇异。对此,一般的做法是通过交叉验证技术依据不同的信息指标,如BIC等进行选取,中间计算量大,过程复杂。而在贝叶斯变分方法中则很好的解决了这个问题。
在贝叶斯高斯混合模型中,对先验概率进行假设变分。
首先假设系数项符合狄利克雷分布:
p ( π ) = Dir ( π ∣ α 0 ) = C ( α 0 ) ∏ k = 1 K π k α 0 − 1 p(\boldsymbol{\pi})=\operatorname{Dir}\left(\boldsymbol{\pi} | \boldsymbol{\alpha}_{0}\right)=C\left(\boldsymbol{\alpha}_{0}\right) \prod_{k=1}^{K} \pi_{k}^{\alpha_{0}-1} p(π)=Dir(π∣α0)=C(α0)k=1∏Kπkα0−1
其中, α 0 \boldsymbol{\alpha}_{0} α0为分布的参数,它表示此混合分布在选择分量时的集中程度。 C ( α 0 ) C\left(\boldsymbol{\alpha}_{0}\right) C(α0)为分布归一化系数。
假设均值和精度矩阵符合高斯-Wishart分布:
p ( μ , Λ ) = p ( μ ∣ Λ ) p ( Λ ) = ∏ k = 1 K N ( μ k ∣ m 0 , ( β 0 Λ k ) − 1 ) W ( Λ k ∣ W 0 , ν 0 ) \begin{aligned} p(\boldsymbol{\mu}, \boldsymbol{\Lambda}) =p(\boldsymbol{\mu} | \boldsymbol{\Lambda}) p(\boldsymbol{\Lambda}) =\prod_{k=1}^{K} \mathcal{N}\left(\boldsymbol{\mu}_{k} | \mathbf{m}_{0},\left(\beta_{0} \boldsymbol{\Lambda}_{k}\right)^{-1}\right) \mathcal{W}\left(\boldsymbol{\Lambda}_{k} | \mathbf{W}_{0}, \nu_{0}\right) \end{aligned} p(μ,Λ)=p(μ∣Λ)p(Λ)=k=1∏KN(μk∣m0,(β0Λk)−1)W(Λk∣W0,ν0)
即,精度矩阵分布为Wishart分布,而均值的分布依赖精度矩阵的分布。
通过一系列的变分分解处理后,可估计到各项参数,求解步骤如下:
1. 首先进行模型初始化。需要初始化的参数包括:
- α 0 \mathbf{\alpha}_0 α0向量初始化为设定的值,或者默认为1.
- 用来控制均值分布的 m 0 m_0 m0均值向量,默认设置为0。
- 控制精度矩阵分布的 W 0 W_0 W0矩阵,这个矩阵默认设置为对角阵,并且所有值为1(或指定值)。
- 在给定 N N N个数据点后,将其平均分配给各个分量中,即每个分量中数据点个数 N k = N K N_k=\frac{N}{K} Nk