美文网首页
PRML读书笔记(4) - 高斯混合模型(GMM) 及 EM 算

PRML读书笔记(4) - 高斯混合模型(GMM) 及 EM 算

作者: 捡个七 | 来源:发表于2018-11-23 23:04 被阅读0次

    这篇文章实在写的脑壳疼,不知道是不是使用方法不对,简书网页版 LaTex 排版感觉好丑。
    高斯混合模型的概念在 PRML 这本书的第 9 章介绍的。目前正在上的김동국 教授的人工神经网络纯理论课程非常适合研究生入门机器学习。但是由于没时间讲解全部内容,教授说正式的内容在第 5 章结束。后面几节课全部讲学生感兴趣的内容 - GMM,HMM 等。教授说没有讲解的内容不是不重要,而是在踏入机器学习这个研究领域,这些都是很重要且必备的知识。

    高斯混合模型

    高斯混合模型是聚类算法的一种。在 PRML读书笔记(1) - 深度理解机器学习之概率论(Probability Theory) 这篇文章中提到的是单一的高斯分布模型。而高斯混合模型,从名字上来说就很好理解,是多个高斯分布模型混合组成的模型,目的是为了提供更丰富的密度模型。其公式如下所示:p(\mathbf{x}) = \sum_{k=1}^{K}π_kN(\mathbf{x}|\mathbf{\mu_k, \mathbf{\Sigma_k}})
    其中 k 表示高斯模型的数量;π_{k} 表示混合权重(mixture weight),0\leqslantπ_{k}\leqslant1\sumπ_{k} = 1\mu_{k} 表示第 k 个高斯模型的均值,\Sigma_{k} 表示第 k 个高斯模型的协方差。

    在讲解具体的内容之前,先提一个新概念。这个概念就是:隐变量(latent variable)

    在统计学中,隐变量指的是不可观测的随机变量。

    其相反词是显变量(observation variable)。包含隐变量的模型称为隐变量模型(Latent Variable Models,简称 LVM),高斯混合模型(GMM)和隐马尔科夫模型(HMM)都是隐变量模型。这两种模型中包含的隐变量是离散的。

    现在假设 \mathit{z}是高斯混合模型中的隐变量,它表示高斯模型出现的索引值,即\mathit{z}\in\{1,2,3...k\},为整数。将其表示为 one-hot 向量,那么 z_k 中只有特定元素等于 1,其他所有元素都等于 0。所以有 z_k\in\{0,1\}\sum_{k}z_k = 1 。依据概率中的乘法法则,可以假设联合分布 p(x,z) 由边缘分布 p(z) 和条件分布 p(x|z) 相乘组成。关于变量 \mathit{z} 的边缘分布可以看成是由混合系数 π_k 组成:p(z_k = 1) = π_k 0\leqslantπ_{k}\leqslant1,\sum_{k=1}^{K}π_{k} = 1

    根据多元分类及其概率分布可以得到:p(\mathbf{z})=\prod_{k=1}^{K}π_{k}^{z_k}
    类似地,在给定一个特殊的 z_k 值,关于 \mathbf{x} 的条件分布为高斯分布:p(\mathbf{x}|z_k=1)=N(\mathbf{x}|\mathbf{\mu_k, \mathbf{\Sigma_k}})
    所以有:p(\mathbf{x}|\mathbf{z})=\prod_{k=1}^{K}N(\mathbf{x}|\mathbf{\mu_k, \mathbf{\Sigma_k}})^{z_k}
    又由概率中的乘法法则可以得到:p(\mathbf{x}) = \sum_{z}p(\mathbf{z})p(\mathbf{x}|\mathbf{z}) = \sum_{k=1}^{K}π_kN(\mathbf{x}|\mathbf{\mu_k, \mathbf{\Sigma_k}})
    这就是一开头给出的高斯混合模型的公式的推导过程。

    此时,也可以得到联合概率分布:p(\mathbf{x},\mathbf{z}) = p(\mathbf{z})p(\mathbf{x}|\mathbf{z})= \prod_{k=1}^{K}(π_kN(\mathbf{x}|\mathbf{\mu_k, \mathbf{\Sigma_k}}))^{z_k}

    接着由贝叶斯法则可以得到:p(z_k=1|\mathbf{x})=\frac{p(\mathbf{x}|z_k=1)p(z_k=1)}{p(\mathbf{x})}=\frac{π_kN(\mathbf{x}|\mathbf{\mu_k, \mathbf{\Sigma_k}}))}{\sum_{j=1}^{K}(π_kN(\mathbf{x}|\mathbf{\mu_j, \mathbf{\Sigma_j}}))^{z_j}}
    p(z_k=1|\mathbf{x})为后验概率,用 \gamma(z_k) 表示。

    极大似然估计

    当有了模型参数 \theta(在 GMM 中\theta=\{π_k,\mu_k,\Sigma_k\})分布的时候,我们可以根据这个参数分布来生成一系列的,例如:X_1,X_2...X_N 这样的数据。当有了一系列的数据,如 X_1,X_2...X_N 时,我们可以通过这些数据来预估参数 \theta。预估参数可以使用极大似然估计方法。GMM 的极大似然估计如下所示:

    首先得到,似然方程 L,公式如下:L = \prod_{n=1}^{N}p(\mathbf{X}|\mathbf{π},\mathbf{\mu},\mathbf{\Sigma})=\prod_{n=1}^{N}p(\mathbf{X}|\mathbf{\theta})
    对应的对数似然方程为:l=\sum_{n=1}^{N}lnp(\mathbf{X}|\mathbf{\theta})=\sum_{n=1}^{N}ln\{\sum_{k=1}^{K}π_kN(\mathbf{x_n}|\mathbf{\mu_k},\mathbf{\Sigma_k})\}

    为了预估参数,可以使用封闭解( closed-form solution)的方法来求出参数的值。但此种方法对于 GMM 来说是无解的。因为对于高斯混合模型,对数似然函数 l 显示了比单个高斯的情况更复杂的问题,其难点在于该函数中对数内出现的 k 求和,因此对数函数不再直接作用于高斯函数。如果将该对数似然方程的导数设置为 0,我们将不再得到一个 封闭解。所以封闭解的方法不适用 GMM。虽然第二种方法,即基于梯度的方法是可行的,但现在讨论一种更具广泛适用性的算法 - EM 算法。

    EM 算法

    EM 算法的全称是 Expectation-Maximization 算法。EM 算法是一种为包含隐变量的概率模型找到极大似然估计解的算法。

    假设我们有一些列的数据:\{\mathbf{x_1},\mathbf{x_2},...,\mathbf{x_N}\},用大写的 \mathbf{X} 来表示;又有隐变量 \{\mathbf{z_1},\mathbf{z_2},...,\mathbf{z_N}\},用大写的 \mathbf{Z} 表示。

    这时,似然方程可以表示为:p(\mathbf{X}|\theta)=\sum_{Z}p(X,Z|\theta)=\sum_{z_i}\prod_{i=1}^{N}p(x_i,z_i|\theta)=\prod_{i=1}^{N}p(x_i,z_i|\theta)
    对数似然方程为:l(\theta)=lnp(X|\theta)=\sum_{i=1}^{N}ln[\sum_{Z_i}p(x_i,z_i|\theta)]

    我们的目标是最大化对数似然方程 l(\theta)。如果直接从 p(X|\theta) 入手的话会比较困难,而从 p(X,Z|\theta) 入手的话,则会比较容易处理。

    根据乘法法则 p(X,Z|\theta) = p(Z|X,\theta)p(X|\theta),可以将 l(\theta) 分解:lnp(X,Z|\theta) = lnp(Z|X,\theta)+ lnp(X|\theta) = L(q,\theta) + KL(q||p)
    具体的推导过程如下所示[2](公式太多,懒得打了):

    其中 L(q,\theta)是类似熵(Entropy)的函数,它将一个函数作为输入并产生一个值作为输出。它包含 X 和 Z 的联合分布。KL(q||p)是 Kullback-Leibler Divergence 包含给定 X 时, Z 的条件分布。

    根据 KL 散度的特性,可以得到KL\geqslant 0,所以有l(\theta) \geqslant L(q,\theta),此时,就相当于L(q,\theta)l(\theta) 的下限(lower bound),如下图所示:

    此时分为两个阶段。第一个阶段就是 E-step,第二个阶段是 M-step。

    • E-step:此时的目标是最大化下限L(q,\theta)L(q,\theta)最大化的话,那么KL(q||p)就为 0,因此得到q(Z)= p(Z|X,\theta),在这一阶段,表示为q(Z)= p(Z|X,\theta^{old})

    • M-step:上一步得到q(Z)= p(Z|X,\theta^{old}),所以有L(q,\theta)= \sum_{Z}p(Z|X,\theta^{old})ln\frac{p(X,Z|\theta)}{p(Z|X,\theta^{old})}=\sum_{Z}p(Z|X,\theta^{old})lnp(X,Z|\theta) + constant。令Q(\theta,\theta^{old})= \sum_{Z}p(Z|X,\theta^{old})lnp(X,Z|\theta),这一阶段的目标就是找到\theta^{new},使得Q(\theta,\theta^{old})最大,以修正前面的\theta^{old}值。这样会造成 l(\theta)随着L(q,\theta)的增大而增大。

    而 EM 算法的整个过程如下所示:


    参考

    [1]. Bishop: Pattern Recognition and Machine Learning.
    [2]. Sargur Srihari: Introduction to Machine Learning Course 9.2-9.5
    [3]. 김동국 教授的人工神经网络纯理论课程

    相关文章

      网友评论

          本文标题:PRML读书笔记(4) - 高斯混合模型(GMM) 及 EM 算

          本文链接:https://www.haomeiwen.com/subject/fvolqqtx.html