深度学习-4-生成模型2-高斯混合模型

高斯混合模型(GMM)

  高斯混合模型(Gaussian Mixture Model, GMM)是一种常用的概率生成模型,其主要思想是通过多个高斯分布的加权组合来表示更为复杂的数据分布。早在19世纪末期,Kari Pearson 便提出了用高斯分布的混合来处理生物统计方面的问题,之后随着数理统计学科的发展,高斯混合模型的理论得到了很大的完善,但如何高效地进行参数估计一直是其面临的主要问题。直到1977年,Dempster, Laird和Rubin提出了EM算法,用于在含有隐变量的概率模型中进行参数估计。EM算法非常适合于GMM参数的估计问题,EM算法的提出大大推动了GMM的发展。

概率模型

  我们有一批训练数据:\(T_{train} = \{ x_1,x_2,\dotsb,x_{N} \}\),我们希望去估计数据的分布 \(p(x)\),现在我们对数据的分布做如下假设:

  • 混合高斯: 数据分布 \(p(x)\) 可以表示为多个高斯分布的混合(加权平均)。
  • 隐变量: 观测数据 \(x\) 的生成受隐变量 \(z\) 的影响,隐变量 \(z\) 决定了多个高斯分布是如何进行混合的(加权系数)。
Image1: 混合高斯假设

  图1展示了混合高斯模型的几何理解,黑色的点表示训练数据,左图是一维分布的情况,可以发现训练数据存在两个集中区域,我们便用两个高斯分布(绿色曲线)去表示这个两个区域的数据分布,而真实的数据分布(橙色曲线)可以用这两个高斯分布的加权平均表示。右图是二维分布的情况。
  我们假设训练数据 \(T_{train}\) 的分布 \(p(x)\) 是由 \(M\) 个高斯分布混合而成,则对于隐变量 \(z\),我们假设其先验分布为一个 \(M\) 维的离散分布(2):

\[\begin{equation} p(z = c_{k}) = p_{k}, \quad k = 1,\dotsb, M \end{equation}\]

  给定隐变量 \(z\), 观测变量 \(x\) 的条件分布为一个高斯分布(3):

\[\begin{equation} p(x | z) = N(x; \mu_{z}, \Sigma_{z}) \end{equation}\]

  通过(2)式与(3)式,训练数据 \(T_{train}\) 的分布 \(p(x)\) 可以表示为多个高斯分布的加权平均(4):

\[\begin{align} p(x) &= \int_{z} p(x, z)dz = \sum_{z} p(x, z) \tag{4}\\ &=\sum_{k=1}^{M} p(x, z = c_{k}) = \sum_{k=1}^{M} p(z = c_{k})p(x | z = c_{k}) \notag\\ &=\sum_{k=1}^{M} p_{k} N(x; \mu_{k}, \Sigma_{k}) \notag\\ \end{align}\]

  其中,隐变量的分布的概率值 \(p_{k}\) 即为高斯分布的加权系数。高斯混合模型的概率图可以表示为图2:

Image2: GMM 概率图

参数估计

  GMM的参数估计使用了EM算法,EM算法的迭代公式如下(5):

\[\begin{align} \theta^{(t+1)} = \argmax_{\theta}{E_{p(z|x, \theta^{(t)})} \left[ \log{p(x, z|\theta)} \right]} \tag{5} \end{align}\]

  在GMM中,待估参数 \(\theta\) 可以为:

\[\theta = \{ p_1,p_2,\dotsb,p_{M};(\mu_1,\Sigma_1),\dotsb,(\mu_{M},\Sigma_{M}) \}\]

  接下来我们使用EM算法来求解GMM的参数。
  E-step

\[\begin{align} Q(\theta, \theta^{(t)}) &= E_{p(z|x, \theta^{(t)})} \left[ \log{p(x, z|\theta)} \right] \tag{6} \\ & = \int_{z} p(z|x, \theta^{(t)})\log{p(x,z|\theta)}dz \notag \\ &= \sum_{z} \left[ \prod_{i=1}^{N}p(z_{i} | x_{i}, \theta^{(t)}) \log{\left( \prod_{i=1}^{N}p(x_i, z_i | \theta) \right)} \right] \notag \\ &= \sum_{z} \left[ \sum_{i=1}^{N}\log{p(x_i,z_i|\theta)}\prod_{i=1}^{N}p(z_{i} | x_{i}, \theta^{(t)}) \right] \tag{7} \\ \end{align}\]

  这里,我们需要对(7)式做一些简化,我们来看第1项如何处理:

\[\begin{align} & \quad \sum_{z} \left[ \log{p(x_1, z_1 | \theta)} \prod_{i=1}^{N}p(z_i | x_{i}, \theta^{(t)}) \right] \notag \\ &= \sum_{z_1} \left[ \log{p(x_1, z_1 | \theta)}p(z_{1} | x_1, \theta^{(t)} ) \right] \sum_{z_2, \dotsb, z_{N}} \left[ \prod_{i=2}^{N}p(z_i | x_{i}, \theta^{(t)}) \right ] \notag \\ &= \sum_{z_1} \left[ \log{p(x_1, z_1 | \theta)}p(z_{1} | x_1, \theta^{(t)} ) \right] \tag{8} \\ \end{align}\]

  将(7)式中的每一项用(8)式的形式进行替代,可以得到 \(Q(\theta, \theta^{(t)})\) 的化简形式(9):

\[\begin{align} Q(\theta, \theta^{(t)}) = \sum_{i=1}^{N}\sum_{z_i} p(z_i | x_i, \theta^{(t)}) \log{p(x_i, z_i | \theta)} \tag{9} \end{align}\]

  由前文(2)式,(3)式可知:

\[\begin{align} p(x_i, z_i |\theta) &= p(z_i | \theta)p(x_i | z_i, \theta) \notag \\ &= \boldsymbol{p}_{z} N(x_i; \mu_{z}, \Sigma_{z}) \tag{10} \\ \end{align}\]

  将(10)式带入(9):

\[\begin{align} Q(\theta, \theta^{(t)}) &= \sum_{i=1}^{N}\sum_{z_i} p(z_i | x_i, \theta^{(t)}) \log{\boldsymbol{p}_{z} N(x_i; \mu_{z}, \Sigma_{z})} \notag \\ &= \sum_{k=1}^{M}\sum_{i=1}^{N} \left[ \log{p_{k} + \log{N(x_i; \mu_{k}, \Sigma_{k})}} \right] p(z_i = c_k | x_i, \theta^{(t)}) \tag{11} \\ \end{align}\]

  在完成了期望的化简后,接下来对期望进行最大化以求解参数。

M-step
  首先对 隐变量 \(z\) 的分布的未知参数 \(p_k\) 进行求解:

\[\begin{align} p_{k} =& \argmax_{p_{k}} \sum_{k=1}^{M}\sum_{i=1}^{N} \log{p_{k}} \cdot p(z_i = c_k | x_i, \theta^{(t)}) \tag{12} \\ & s.t. \sum_{k=1}^{M}p_{k} = 1 \notag \end{align}\]

  优化问题(12)的拉格朗日函数:

\[\begin{align} \mathcal{L}(\boldsymbol{p}, \lambda) = \sum_{k=1}^{M}\sum_{i=1}^{N} \log{p_{k}} \cdot p(z_i = c_k | x_i, \theta^{(t)}) + \lambda(\sum_{k=1}^{M}p_{k} - 1) \tag{13} \end{align}\]

\[\begin{align} \frac{\partial{\mathcal{L}(\boldsymbol{p}, \lambda)}}{\partial{p_{k}}} = \sum_{i=1}^{N} \frac{p(z_i = c_k | x_i, \theta^{(t)})}{p_{k}} + \lambda := 0 \tag{14} \end{align}\]

\[\begin{split} & \Rightarrow \sum_{i=1}^{N} p(z_i = c_k | x_i, \theta^{(t)}) + \lambda p_{k} = 0 \\ & \Rightarrow \sum_{i=1}^{N}\sum_{k=1}^{M} p(z_i = c_k | x_i, \theta^{(t)}) + \lambda\sum_{k=1}^{M}p_{k} =0 \\ & \Rightarrow N+\lambda=0,\quad \lambda= -N \end{split}\]

  将 \(\lambda = -N\) 带入(14)式可以求得 \(p_{k}\) 的MLE,即更新后的值为:

\[\begin{align} p_{k}^{(t+1)} = \frac{1}{N}\sum_{i=1}^{N}p(z_i = c_k | x_i, \theta^{(t)}) \tag{15} \end{align}\]

  由(4)式与(10)式可得:

\[\begin{align} p(z_i = c_{k} | x_i, \theta^{(t)}) &= \frac{p(x_i, z_i=c_{k} | \theta^{(t)})}{p(x_i | \theta^{(t)})} \notag \\ &= \frac{p_{k}^{(t)}N(x_i; \mu_{k}^{(t)},\Sigma_{k}^{(t)})}{\sum_{k=1}^{M}p_{k}^{(t)}N(x_i; \mu_{k}^{(t)},\Sigma_{k}^{(t)})} \tag{16} \end{align}\]

  将(16)式带入(15)式得:

\[p_{k}^{(t+1)} = \frac{1}{N}\sum_{i=1}^{N} \frac{p_{k}^{(t)}N(x_i; \mu_{k}^{(t)},\Sigma_{k}^{(t)})}{\sum_{k=1}^{M}p_{k}^{(t)}N(x_i; \mu_{k}^{(t)},\Sigma_{k}^{(t)})},\quad \boldsymbol{p}^{(t+1)} = \begin{bmatrix} p_{1}^{(t+1)} \\ p_{2}^{(t+1)} \\ \vdots \\ p_{M}^{(t+1)} \\ \end{bmatrix}\]

  同理,可以求得 \(\boldsymbol{\mu}^{(t+1)}, \boldsymbol{\Sigma}^{(t+1)}\)

采样

  在对GMM的参数进行估计后,我们便可以使用GMM来进行采样,即生成新的样本 \(x'\)。GMM的生成过程非常简单,首先根据隐变量 \(z\) 的分布,确定进行采样的高斯分布,然后再从相应的高斯分布采样得到 \(x'\)

GMM的总结与启示

  从今天的角度来看,GMM是一个比较简单的生成模型,其生成的样本的效果也不尽人意,但我依然想首先介绍GMM是因为其对于生成模型的发展起到了不可忽视的启发作用,具体有如下几点:

  • 概率分布的混合思想: GMM的基本思想是通过多个高斯分布的加权组合来表示复杂的数据分布。这一思想为现代生成模型提供了起始,即通过组合简单的概率分布来表示复杂的概率分布。
  • 参数估计: GMM通过EM算法迭代优化似然函数,这一思想也被现代生成模型所采纳。在VAE、Diffusion Model中,参数的求解仍然是使用SGD等迭代算法对似然函数的下界(ELBO)进行优化。
  • 隐变量假设: GMM的一个重要特点是引入隐变量来解释观测数据,这为后来的生成模型提供了一个重要框架,现代生成模型几乎都采用了隐变量假设。

  当然,GMM本身也存在很多缺陷,主要有以下几个方面:

  • 固定的分布假设: GMM假设隐变量 \(z\) 的分布是一个简单的离散分布,这种假设不适应复杂的真实数据。
  • 局部最优解: GMM的参数估计通常使用EM算法,该算法容易收敛到局部最优解,尤其是在数据分布复杂或高维的情况下。
  • 计算性能: GMM在处理高维数据时,计算成本和参数估计的复杂性显著增加,难以适应大规模数据集。

  在之后,我们会介绍变分自编码模型(VAE),其继承了GMM的主要思想,同时一定程度上改善了GMM的部分缺陷。

References

[1] Book: 李航,统计学习方法(第2版)
[2] Video: bilibili,shuhuai008,高斯混合模型系列.


深度学习-4-生成模型2-高斯混合模型
http://example.com/2024/05/22/深度学习-4-生成模型2-高斯混合模型/
作者
喵老师
发布于
2024年5月22日
许可协议