• 3. EM算法-高斯混合模型GMM


    1. EM算法-数学基础

    2. EM算法-原理详解

    3. EM算法-高斯混合模型GMM

    4. EM算法-高斯混合模型GMM详细代码实现

    5. EM算法-高斯混合模型GMM+Lasso

    1. 前言

    GMM(Gaussian mixture model) 混合高斯模型在机器学习、计算机视觉等领域有着广泛的应用。其典型的应用有概率密度估计、背景建模、聚类等。

    2. GMM介绍

    高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况。
    image

    3. GMM原理解析

    根据我们之前EM算法-原理详解,我们已经学习了EM算法的一般形式:

    [Q_i(z^{(i)}) = P( z^{(i)}|x^{(i)}, heta^{j});;;;(1) ]

    [sumlimits_{z}Q_i(z^{(i)}) =1 ]

    [L( heta, heta^{j}) = sumlimits_{i=1}^msumlimits_{z^{(i)}}Q_i(z^{(i)})log{P(x^{(i)},z^{(i)}| heta)} ]

    现在我们用高斯分布来一步一步的完成EM算法。

    设有随机变量(oldsymbol{X}),则混合高斯模型可以用下式表示:

    [p(oldsymbol{x}|oldsymbol{pi},oldsymbol{mu},oldsymbol{Sigma})=sum_{k=1}^Kpi_kmathcal{N}(oldsymbol{x}|oldsymbol{mu}_k,oldsymbol{Sigma}_k) ]

    [sum_{k=1}^Kpi_k=1 ]

    [0<pi_k<1 ]

    其中(mathcal{N}(oldsymbol{x}|oldsymbol{mu}_k, oldsymbol{Sigma}_k))称为混合模型中的第(k)个分量(component)。可以看到(pi_k)相当于每个分量(mathcal{N}(oldsymbol{x}|oldsymbol{mu}_k, oldsymbol{Sigma}_k))的权重

    3.1 引入隐变量

    我们引入一个隐变量(z_{ik})(z_{ik})的含义是样本(x_i)来自第(k)个模型的数据分布。

    [z_{ik}= left {egin{array}{cc} 1, & if data item i comes from component k\ 0, & otherwises end{array} ight. ]

    则有

    [P(x,z|oldsymbol{mu}_k, oldsymbol{Sigma}_k) = prod_{k=1}^Kprod_{i=1}^N[pi_kmathcal{N}(oldsymbol{x}|oldsymbol{mu}_k, oldsymbol{Sigma}_k)]^{z_{ik}}=prod_{k=1}^Kpi_k^{n_k}prod_{i=1}^N[mathcal{N}(oldsymbol{x}|oldsymbol{mu}_k, oldsymbol{Sigma}_k)]^{z_{ik}};;;;(2) ]

    其中(n_k=sumlimits_{i=1}^Nz_{ik})(sumlimits_{k=1}^Kn_k=N)

    再对(2)进一步化简得到:

    [P(x,z|oldsymbol{mu}_k, oldsymbol{Sigma}_k)=prod_{k=1}^Kpi_k^{n_k}prod_{i=1}^N[frac{1}{sqrt{2pi}oldsymbol{Sigma_k}}exp(-frac{{(x_i-oldsymbol{mu}_k})^2}{2oldsymbol{Sigma}_k})]^{z_{ik}} ]

    取对数log后:

    [logP(x,z|oldsymbol{mu}_k, oldsymbol{Sigma}_k)=sum_{k=1}^Kn_klogpi_k+sum_{i=1}^Nz_{ik}[log(frac{1}{sqrt{2pi}})-log(oldsymbol{Sigma_k})-frac{{(x_i-oldsymbol{mu}_k})^2}{2oldsymbol{Sigma}_k}] ]

    3.2 确定E步极大似然函数

    计算最大似然估计(L( heta, heta^{(j)})),(j)是第(j)次EM的过程,下式子中的(E_Q)是(1)中(Q)函数的期望值

    [L( heta, heta^{(j)})=E_Q[logP(x,z|oldsymbol{mu}_k, oldsymbol{Sigma}_k)] ]

    [L( heta, heta^{(j)})=E_Q[sum_{k=1}^Kn_klogpi_k+sum_{i=1}^Nz_{ik}[frac{D}{2}log(2pi)-frac{1}{2}log(oldsymbol{Sigma_k})-frac{{(x_i-oldsymbol{mu}_k})^2}{2oldsymbol{Sigma}_k}]] ]

    [L( heta, heta^{(j)})=sum_{k=1}^K[sum_{i=1}^N(E_Q(z_{ik}))logpi_k+sum_{i=1}^NE_Q(z_{ik})[frac{D}{2}log(2pi)-frac{1}{2}log(oldsymbol{Sigma_k})-frac{{(x_i-oldsymbol{mu}_k})^2}{2oldsymbol{Sigma}_k}]] ]

    我们记(gamma_{ik}=E_Q(z_{ik}))(n_k=sumlimits_{i=1}^Ngamma_{ik})可以算出

    [L( heta, heta^{(j)})=sum_{k=1}^Kn_k[logpi_k+(frac{D}{2}log(2pi)-frac{1}{2}(log(oldsymbol{Sigma_k})-frac{{(x_i-oldsymbol{mu}_k})^2}{2oldsymbol{Sigma}_k})] ]

    因为(frac{D}{2}log(2pi))是常数,忽略不计

    [L( heta, heta^{(j)})=sum_{k=1}^Kn_k[logpi_k-frac{1}{2}(log(oldsymbol{Sigma_k})+frac{{(x_i-oldsymbol{mu}_k})^2}{oldsymbol{Sigma}_k})] ]

    [gamma_{ik}=frac{pi_kmathcal{N}(oldsymbol{x}|oldsymbol{mu}_k,oldsymbol{Sigma}_k)}{sum_{k=1}^Kpi_kmathcal{N}(oldsymbol{x}|oldsymbol{mu}_k,oldsymbol{Sigma}_k)} ]

    3.3 确定M步,更新参数

    M步的过程是最化大(L( heta, heta^{j})),求出( heta^{(j+1)})

    [ heta^{j+1} = arg max limits_{ heta}L( heta, heta^{j}) ]

    因为有

    [n_k=sum_{i=1}^Ngamma_{ik} ]

    通过(L( heta, heta^{j}))(mu_k)(Sigma_k)求偏倒等于0得到

    [mu_k=frac{1}{n_k}sum_{i=1}^Ngamma_{ik}x_i ]

    [Sigma_k=frac{1}{n_k}sum_{i=1}^Ngamma_{ik}(x_i-mu_k)^2 ]

    [pi_k=frac{n_k}{N} ]

    4. GMM算法流程

    输入:观测数据(x_1,x_2,x_3,...,x_N)

    输出:GMM的参数

    1. 初始化参数
    2. E步:根据当前模型,计算模型(k)(x_i)的影响

    [gamma_{ik}=frac{pi_kmathcal{N}(oldsymbol{x}|oldsymbol{mu}_k,oldsymbol{Sigma}_k)}{sum_{k=1}^Kpi_kmathcal{N}(oldsymbol{x}|oldsymbol{mu}_k,oldsymbol{Sigma}_k)} ]

    1. M步:计算(mu_{k+1},Sigma_{k+1}^2,pi_{k+1})

    [n_k=sum_{i=1}^Ngamma_{ik} ]

    [mu_{k+1}=frac{1}{n_k}sum_{i=1}^Ngamma_{ik}x_i ]

    [Sigma_{k+1}^2=frac{1}{n_k}sum_{i=1}^Ngamma_{ik}(x_i-mu_k)^2 ]

    [pi_{k+1}=frac{n_k}{N} ]

    1. 重复2,3两步直到收敛
  • 相关阅读:
    java-servlet
    oracle 函数
    List 集合的交集
    jsp中表格,表格中的文字根据表格的大小自动换行
    eclipse快捷键调试总结【转】
    Spring(Bean)4 配置数据源、连接池
    Spring(Bean)3
    前端实现表格基于游览器固定显示
    vue下谷歌浏览器的扩展程序(vue-devtools-master)
    前端vue如何下载或者导出word文件和excel文件
  • 原文地址:https://www.cnblogs.com/huangyc/p/10125117.html
Copyright © 2020-2023  润新知