高斯混合模型概要
假设我们有若干个高斯分布模型,每个模型会以一定的概率被选择,然后根据被选择的模型的概率分布产生一个结果。我们希望可以在只有输出序列的情况下,对模型的参数进行估计。
形式化
我们把观察序列记为$Y=y_1,y_2,…,y_j$ ,将模型总数记为 $K$ ,第 $k$ 个高斯分布模型 $\phi\left(y | \theta_{k}\right)$ 会以 $\alpha_k$ 的概率被选择,
其中$\phi\left(y | \theta_{k}\right)=\frac{1}{\sqrt{2 \pi} \sigma_{k}} \exp \left(-\frac{\left(y-\mu_{k}\right)^{2}}{2 \sigma_{k}^{2}}\right)$,$\sigma_k$和$\mu_k$是第$k$个模型的参数。在这个问题中,每次生成观察结果$y_j$时使用了哪一个模型是隐变量,用$\gamma_{j k}$表示,定义如下:
构建模型
根据上面的定义,我们可以得到完全数据的似然函数(联合概率):
其中,$n_{k}=\sum_{j=1}^{N} \gamma_{j k}, \sum_{k=1}^{K} n_{k}=N$,$n_k$代表第$k$个模型被选择的次数
接着,我们可以写出对数似然函数:
根据EM算法的框架,我们先来求解Q函数
我们可以直接对对数似然函数求期望得到Q函数(第一行),也可以使用第二行的表达式,利用概率分布来直接求得Q函数。下面两种方法都会列出。
求解Q函数(E步)
通过期望求解
我们直接求解对数似然函数的期望,注意此时我们的随机变量是$\gamma$
在这个式子中,$E\gamma_{jk}$是直接根据当前参数计算的,$\alpha_k,\sigma_k,\mu_k$是第$k$个模型待更新的参数。我们来计算$E\gamma_{jk}$,记为$\hat{\gamma}_{j k}$:
其中,第二行到第三行使用了全概率公式,第三行到第四行是条件概率公式。我们由此可以得到Q函数:
通过概率分布求解
我们由
得到我们需要求解的Q函数为
其中$Z$代表选择的模型编号。
我们先来求解根据当前参数估算的条件概率部分
代入上面的概率分布定义得到
可见$P(Z=k | Y, \theta^{(j)})$即为$\gamma_{jk}$。
再次代入联合分布概率到$\log P(Y, Z=k | \theta)$中,我们可以得到和上面直接求期望一样的Q函数:
极大化Q函数(M步)
我们分别求Q函数对参数的偏导并使偏导数为0可以得到新的参数的表达式。
对于$\mu,\sigma^2$,求导求极值过程无特别难点,结果如下:
对于参数$\alpha_k$,我们需要利用额外的约束$\sum_{k=1}^{K}\alpha_k=1$来求解。
构造拉格朗日函数
分别对每一个$\alpha_k$和$\lambda$求偏导,得到
令上述式子等于0,并求解方程组可以得到
至此,高斯混合模型推导完毕。
模型算法总结
输入:观测数据,高斯混合模型
输出:高斯混合模型参数
(1)初始化参数开始迭代
(2)E步:根据当前模型参数计算分模型$k$对观测变量$y_j$的响应度:(3) M步:更新参数
(4) 重复(2)(3)直到收敛
参考文献
- 《统计学习方法》,李航