GMM高斯混合模型

 介绍

高斯混合模型(Gaussian Mixture Model,GMM)是关于多个高斯分布的加权和,看图比较直观一点(图片来源于徐亦达老师的学习笔记

 当样本数据服从左边图所示的分布时,单独只用一个高斯分布去拟合效果不好,需要使用高斯混合模型去估计其分布情况,右图即为使用含有三个高斯分布的高斯混合模型拟合的结果。拟合实际上就是根据样本去进行概率密度估计,也就是参数估计。

图模型表示

再从上图出发,任意取一个样本数据,即上图中的任意一个点,这个样本点属于哪个高斯分布呢?答案是它属于三个高斯分布都有可能,引入一个服从多项分布的隐变量z来表示样本服从那个分布。

z12......K
p(z=k)p_{1}p_{2}......p_{K}

p_{k}表示样本点是由第k个高斯分布生成的概率,并且满足\sum_{k=1}^{K}p_{k}=1。假设X是一维随机变量,在给定z=k的条件下,条件分布p(x|z=k)为高斯分布,

\displaystyle p(x|z=k) = N(x;\mu_{k},\sigma _{k})=\frac{1}{\sqrt{2\pi}\sigma_{k}}\exp(-\frac{(x-\mu_k)^{2}}{2\sigma_{k}^{2}})

XD维随机向量时,给定z=k的情况下,条件分布p(x|z=k)D元正态分布,

\begin{aligned} \displaystyle p(\mathbf{x}|z=k) &=N(\mathbf{x};\mathbf{\mu_k},\mathbf{\Sigma _{k}})\\ &=\frac{1}{(2\pi)^{\frac{D}{2}} \mathbf{|\Sigma_k} |^{\frac{1}{2}}} exp(-\frac{1}{2}(\mathbf{x}-\mathbf{\mu_k})^{T}\mathbf{\Sigma_k}^{-1}(\mathbf{x}-\mathbf{\mu_k})) \end{aligned}

其中,\mathbf{\mu_k}\in \mathbb{R}^{D}为多元正态分布的均值向量,\mathbf{\Sigma _k}\in \mathbb{R}^{D\times D}为多元正态分布的协方差矩阵,|\mathbf{\Sigma _k}|表示为\mathbf{\Sigma _k}的行列式。

GMM的图模型表示为

在参数估计完成后,从GMM里生成一个样本的步骤为:

1.先从多项式分布p(z)里采样,确定该样本服从第几个高斯分布。

2.假设取到第k个高斯分布,再从这个高斯分布N(x;\mu_{k},\sigma _{k})中采样得到样本值。

参数估计

笔者曾于上一篇文章EM算法及公式推导中提到了含隐变量的概率图模型的参数估计问题,通过直接最大化边际似然很难得出解析解,需要通过EM算法来得到近似解。

给定N个样本\mathbf{x}=(x^{(1)},x^{(2)}......x^{(N)}),希望能够学习到其中的参数p_k,\mu_k,\sigma _k。对于每个样本x^{(n)},其对数边际分布为

\begin{aligned} \log{p(x^{(n)})}&=\log{\underset{z^{(n)}}{\sum}p(z^{(n)}=k)p(x^{(n)}|z^{(n)}=k)}\\ &=\log{\sum_{k=1}^{K}p_kN(x^{(n)};\mu_k,\sigma_k)} \end{aligned}

对于数据集\mathbf{x},其对数边际似然为

\begin{aligned} \log{p(\mathbf{x})}&=\sum_{n=1}^{N}\log{\underset{z^{(n)}}{\sum}p(z^{(n)}=k)p(x^{(n)}|z^{(n)}=k)}\\ &=\sum_{n=1}^{N}\log{\sum_{k=1}^{K}p_kN(x^{(n)};\mu_k,\sigma_k)} \end{aligned}

由于在GMM里,p(z|x;\theta)可以求出,因此,采用狭义EM算法来进行参数估计,也因此,E步直接另q(z)=p(z|x;\theta_t),而M步公式可以写为(z,x均为向量,偷懒没有加粗)

\begin{aligned} \theta_{t+1}&= \underset{\theta}{argmax}\int_{z}p(z|x;\theta_{t})\log{\frac{p(x,z;\theta)}{p(z|x;\theta_{t})}}dz \\ &= \underset{\theta}{argmax}\int_{z}p(z|x;\theta_{t})\log{p(x,z;\theta)}dz-\int_{z}p(z|x;\theta_{t})\log{p(z|x;\theta_{t})}dz\\ &=\underset{\theta}{argmax}\int_{z}p(z|x;\theta_{t})\log{p(x,z;\theta)}dz \end{aligned}

\displaystyle Q(\theta,\theta_t) =\int_{\boldsymbol{\mathbf{z}}}p(\mathbf{z}|\mathbf{x};\theta_{t})\log{p(\mathbf{x},\mathbf{z};\theta)}dz,GMM中隐变量\mathbf{z}为一维离散变量,故

\begin{aligned} Q(\theta,\theta_t) &= \underset{\mathbf{z}}{\sum}\log{\prod_{n=1}^{N} p(x^{(n)},z^{(n)};\theta)}\prod_{n=1}^{N}p(z^{(n)}|x^{(n)};\theta_t)\\ &=\underset{z^{(1)},z^{(2)}......z^{(N)}}{\sum}\sum_{n=1}^{N}\log{p(x^{(n)},z^{(n)};\theta)}\prod_{n=1}^{N}p(z^{(n)}|x^{(n)};\theta_t)\\ &=\underset{z^{(1)},z^{(2)}......z^{(N)}}{\sum} [\log{p(x^{(1)},z^{(1)}};\theta) + \log{p(x^{(2)},z^{(2)}} ;\theta)+......+\log{p(x^{(N)},z^{(N)};\theta)} ]\prod_{n=1}^{N}p(z^{(n)}|x^{(n)};\theta_t)\\ \end{aligned}

先用\log{p(x^{(1)},z^{(1)}};\theta))\prod_{n=1}^{N}p(z^{(n)}|(x^{(n)};\theta_t)相乘,可得

\displaystyle \underset{z^{(1)},z^{(2)}......z^{(N)}}{\sum}\log{p(x^{(1)},z^{(1)}};\theta))\prod_{n=1}^{N}p(z^{(n)}|x^{(n)};\theta_t)\\

\displaystyle =\underset{z^{(1)}}{\sum}\log{p(x^{(1)},z^{(1)}};\theta))p(z^{(1)}|x^{(1)};\theta_t)\underset{z^{(2)}......z^{(N)}}{\sum}\prod_{n=2}^{N}p(z^{(n)}|x^{(n)};\theta_t) \\ =\underset{z^{(1)}}{\sum}\log{p(x^{(1)},z^{(1)}};\theta))p(z^{(1)}|x^{(1)};\theta_t)\prod_{n=2}^{N}\underset{z^{(2)}......z^{(N)}}{\sum}p(z^{(n)}|x^{(n)};\theta_t) \\ =\underset{z^{(1)}}{\sum}\log{p(x^{(1)},z^{(1)}};\theta))p(z^{(1)}|x^{(1)};\theta_t)[\underset{z^{(2)}}{\sum}p(z^{(2)}|x^{(2)})......\underset{z^{(N)}}{\sum}p(z^{(N)}|x^{(N)})]\\ =\underset{z^{(1)}}{\sum}\log{p(x^{(1)},z^{(1)}};\theta))p(z^{(1)}|x^{(1)};\theta_t)

同样将这种计算方式应用于Q(\theta,\theta_t),可得

\displaystyle Q(\theta,\theta_t) = \sum_{n=1}^{N}\underset{z^{(n)}}{\sum}\log{p(x^{(n)},z^{(n)}};\theta))p(z^{(n)}|x^{(n)};\theta_t)

之后将GMM中的概率密度函数代入,可得

\begin{aligned} Q(\theta,\theta_t) &=\sum_{n=1}^{N}\underset{z^{(n)}}{\sum}\log{p_{z^{(n)}}N(x^{(n)};\mu_{z^{(n)}},\sigma_{z^{(n)}})} \frac{p_{z^{(n)}}^{t}N(x^{(n)};\mu_{z^{(n)}}^{t},\sigma_{z^{(n)}}^{t})}{\sum_{k=1}^{K}p_{k}^{t}N(x^{(n)};\mu_{k}^{t},\sigma_{k}^{t})}\\ &=\sum_{n=1}^{N}\underset{z^{(n)}}{\sum}\log{p_{z^{(n)}}N(x^{(n)};\mu_{z^{(n)}},\sigma_{z^{(n)}})} p(z^{(n)}|x^{(n)};\theta_t)\\ &=\underset{z^{(n)}}{\sum}\sum_{n=1}^{N}\log{p_{z^{(n)}}N(x^{(n)};\mu_{z^{(n)}},\sigma_{z^{(n)}})} p(z^{(n)}|x^{(n)};\theta_t)\\ &=\sum_{k=1}^{K}\sum_{n=1}^{N}[\log{p_k}+\log{N(x^{(n)};\mu_k,\sigma_k)}] p(z^{(n)}=k|x^{(n)};\theta_t) \end{aligned}

\mathbf{p}^{t+1} =(p_{1}^{t+1},p_{2}^{t+1},.....p_{K}^{t+1}),先求p_{k}^{t+1}

\mathit{\displaystyle p_{k}^{t+1} = \underset{p_k}{argmax}\sum_{k=1}^{K}\sum_{n=1}^{N}[\log{p_k}+\log{N(x^{(n)};\mu_k,\sigma_k)}] p(z^{(n)}=k|x^{(n)};\theta_t) s.t.\sum_{k=1}^{K}p_k=1}

由于\log{N(x^{(n)};\mu_k,\sigma_k)}p_k无关,故可简化为

\mathit{\displaystyle p_{k}^{t+1} = \underset{p_k}{argmax}\sum_{k=1}^{K}\sum_{n=1}^{N}\log{p_k} p(z^{(n)}=k|x^{(n)};\theta_t) s.t.\sum_{k=1}^{K}p_k=1}

此为含约束条件的极值问题,采用拉格朗日乘数法,

\displaystyle L(p_k,\lambda)=\underset{p_k}{argmax}\sum_{k=1}^{K}\sum_{n=1}^{N}\log{p_k} p(z^{(n)}=k|x^{(n)};\theta_t)+\lambda(1-\sum_{k=1}^{K}p_k)

\displaystyle \frac{\partial L}{\partial p_k} = \sum_{n=1}^{N}\frac{1}{p_k}p(z^{(n)}=k|x^{(n)},\theta_t)+\lambda

\displaystyle \begin{aligned} \sum_{n=1}^{N}\frac{1}{p_k}p(z^{(n)}=k|x^{(n)},\theta_t)+\lambda&=0\\ \sum_{n=1}^{N}p(z^{(n)}=k|x^{(n)},\theta_t)+p_k\lambda&=0\\ \sum_{n=1}^{N}\sum_{k=1}^{K}p(z^{(n)}=k|x^{(n)},\theta_t)+\sum_{k=1}^{K}p_k\lambda&=0\\ N+\lambda &= 0 \end{aligned}

因此可得\displaystyle p_{k}^{t+1} = \frac{1}{N}p(z^{(n)}=k|x^{(n)},\theta_t)

接着求\mu_{k}^{t+1}

\begin{aligned} \mu_{k}^{t+1}&=\underset{\mu_k}{argmax}\sum_{k=1}^{K}\sum_{n=1}^{N}\log{N(x^{(n)};\mu_k,\sigma_k)}p(z^{(n)}=k|x^{(n)};\theta_t)\\ &=\underset{\mu_k}{argmax}\sum_{k=1}^{K}\sum_{n=1}^{N}\log{\frac{1}{\sqrt{2\pi}\sigma_k}exp(-\frac{(x^{(n)}-\mu_k)^{2}}{2\sigma_{k}^{2}})} p(z^{(n)}=k|x^{(n)};\theta_t)\\ &=\underset{\mu_k}{argmax}\sum_{k=1}^{K}\sum_{n=1}^{N}-\frac{(x^{(n)}-\mu_k)^{2}}{2\sigma_{k}^{2}}p(z^{(n)}=k|x^{(n)};\theta_t) \end{aligned}

\displaystyle f(\mu_k) =\sum_{k=1}^{K}\sum_{n=1}^{N}-\frac{(x^{(n)}-\mu_k)^{2}}{2\sigma_{k}^{2}}p(z^{(n)}=k|x^{(n)};\theta_t)

令其偏导数为0,可得

\displaystyle \frac{\partial f(\mu_k)}{\partial \mu_k} = \sum_{n=1}^{N}\frac{(x^{(n)}-\mu_k)}{\sigma_{k}^{2}}p(z^{(n)}=k|x^{(n)};\theta_t)=0

因此\displaystyle \mu_{k}^{t+1} = \frac{1}{\sum_{n=1}^{N}p(z^{(n)}=k|x^{(n)};\theta_t)}\sum_{n=1}^{N}x^{(n)}p(z^{(n)}=k|x^{(n)};\theta_t)

最后求\sigma_{k}^{t+1}

\begin{aligned} \sigma_{k}^{t+1} &=\underset{\sigma_k}{argmax}\sum_{k=1}^{K}\sum_{n=1}^{N}\log{N(x^{(n)};\mu_k,\sigma_k)}p(z^{(n)}=k|x^{(n)};\theta_t)\\ &=\underset{\sigma_k}{argmax} \sum_{k=1}^{K}\sum_{n=1}^{N}\log{\frac{1}{\sqrt{2\pi}\sigma_k}exp(-\frac{(x^{(n)}-\mu_k)^{2}}{2\sigma_{k}^{2}})} p(z^{(n)}=k|x^{(n)};\theta_t)\\ &=\underset{\sigma_k}{argmax}\sum_{k=1}^{K}\sum_{n=1}^{N}(\log{\frac{1}{\sigma_k}}-\frac{(x^{(n)}-\mu_k)^{2}}{2\sigma_{k}^{2}})p(z^{(n)}=k|x^{(n)};\theta_t) \end{aligned}

\displaystyle f(\sigma_k)=\sum_{k=1}^{K}\sum_{n=1}^{N}(\log{\frac{1}{\sigma_k}}-\frac{(x^{(n)}-\mu_k)^{2}}{2\sigma_{k}^{2}})p(z^{(n)}=k|x^{(n)};\theta_t)

令其偏导数为0,可得

\displaystyle \frac{\partial f(\sigma_k) }{\partial \sigma_k} = \sum_{n=1}^{N}(-\frac{1}{\sigma_k }+\frac{(x^{(n)}-\mu_k)^{2}}{\sigma_{k}^{3}})p(z^{(n)}=k|x^{(n)};\theta_t)=0

因此

\displaystyle \sigma_{k}^{t+1} =\sqrt{\frac{1}{\sum_{n=1}^{N}p(z^{(n)}=k|x^{(n)};\theta_t)}\sum_{n=1}^{N}(x^{(n)}-\mu_k)^{2}p(z^{(n)}=k|x^{(n)};\theta_t)}

最后,p_k,\mu_k,\sigma _k均已估计完毕。

参考资料

白板推导系列之GMMhttps://www.bilibili.com/video/BV1aE411o7qd?p=66&vd_source=ae87fac745d78042d477bc11e9bf41b0神经网络与深度学习https://nndl.github.io/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值