zoukankan      html  css  js  c++  java
  • EM算法

    EM算法(Expectation-Maximum)

    原理篇

    • 本质概率模型,去估计一个密度函数,最大化对数似然函数去估计参数。无法直接用极大化对数似然函数得到模型分布的参数,用启发式跌代法用于求解含有隐变量的最大似然估计、最大后延概率估计问题。

      1. 隐变量:对概率模型有一定的影响,但无法观测;

      ​ 观测数据X+隐变量 = 完全数据

      1. 无法用极大似然的两种情况:数据缺失、含有未知隐变量
    • 作用:经常存在数据缺失或者不可用的的问题,这时候直接处理数据比较困难,而数据添加办法有很多种,常用的有神经网络拟合、添补法、卡尔曼滤波法等等,但是EM算法之所以能迅速普及主要源于它算法简单,稳定上升的步骤能非常可靠地找到“最优的收敛值”。

    • ⽬标:是使包含隐变量的数据集的后验概率或似然函数最⼤化, 进⽽得到最优的参数估计

    • 思想:我们可以发现我们的算法里已知的是观察数据,未知的是隐含数据和模型参数,在E步,我们所做的事情是固定模型参数的值,优化隐含数据的分布,而在M步,我们所做的事情是固定隐含数据分布,优化模型参数的值。

    主要步骤:

    已知:概率分布、随机抽取的样本;

    未知:分类、模型参数

    • E-step:猜想隐含数据,更新隐含数据和模型参数

    • M-step:基于观察数据和猜测的隐含数据求极大对数似然,求解模型K

    • E-step:基于前面得到的模型K,继续猜测隐含数据,继续极大化对数似然

    • M-step:求模型参数

    • 直至模型分布无明显变化,算法收敛

      EM算法步骤如下:

      输入:观测变量数据X,隐变量Z,联合分布p(X,Z|Θ)

      输出:模型参数Θ

      (1) 选择初始参数Θ_0

      (2)E步:记Θi为第i次迭代参数Θ的估计值,在第i+1次迭代的E步,计算Q(Θ,Θg);

      (3)M步:确定第i+1次迭代的参数的估计值Θ(i+1),即为:

      [Θ^{(i+1)}=argmax_ΘQ(Θ,Θ^{(i)}) ]

      (4)重复(2)和(3)步,直至收敛

    EM算法的引入篇

    有三枚硬币A、B、C

    三枚硬币的模型:

    [p(y| heta) = sum_zP(y,z| heta) = sum_zp(z| heta)p(y|z, heta)\ =pi p ^y(1-p)^{1-y} + (1-pi)q^y(1-q)^{1-y} ]

    N枚硬币的模型:

    [P(Y|Theta) = sum_zP(Z|Theta)P(Y|Z,Theta)\ = prod_{j = 1}^n[pi p^{y_j}](1-p)^{1-y_j} + (1-pi)q^{y_j}(1-q)^{q-y_j} ]

    求模型的参数 Θ= (π,p,q)的极大似然估计,即目标函数为:

    [Theta = argmaxlogp(Y|Theta) = argmaxlogsum_zP(Y|Z,Theta)p(Z,Theta) ]

    面对含隐变量的概率模型,目标是极大化观测数据(不完全数据)Y关于参数Θ的对数似然函数,即极大化(取对数方便计算):

    [L(Theta) = logP(Y|Theta) = logsum_zP(Y,Z|Theta) \ = log(sum_zP(Y|Z,Theta)P(Z|Theta)) ]

    EM算法通过迭代逐步近似极大化L(θ)的 + Jensen不等式

    [L(Theta) - L(Theta^{i}) = log(sum_Z P(Y|Z,Theta)P(Z|Theta)) - logP(Y|Theta^{(i)})\ =log[sum_ZP(Z|Y,Theta^{(i)})frac{P(Y|Z)P(Z|Theta)}{P(Z|Y,Theta^{i})}] - logP(Y|Theta^{(i)})\ 由Jensen不等式且 sum_zP(Z|Y,Theta^{(i)}) = 1\ geq sum_ZP(Z|Y,Theta^{(i)})logfrac{P(Y|Z,Theta)P(Z|Theta)}{P(Z|Y,Theta^{(i)})} - frac{logP(Y|Theta^{(i)})*sum_ZP(Z|Y,Theta^{(i)})}{sum_ZP(Z|Y,Theta^{(i)})}\ = sum_Z P(Z|Y,Theta^{(i)})*logfrac{P(Y|Z,Theta)P(Z|Theta)}{P(Z|Y,Theta^{(i)})P(Y|Theta^{(i)})} ]

    即:

    [Theta^{(i+1)} = argmax [L(Theta^{(i)})+ sum_ZP(Z|Y,Theta^{(i)})*logfrac{P(Y|Z,Theta)P(Z|Theta)}{P(Z|Y,Theta^{(i)})P(Y|Theta^{(i)})}] ]

    去掉与Θ无关的变量的式子:

    [Theta^{(i+1)} = argmax [sum_ZP(Z|Y,Theta^{(i)})*logP(Y|Z,Theta)P(Z|Theta)]\ =argmaxQ(Theta,Theta^{(i)})= E[logP(Z|Y,Theta^{(i)})]....(1) ]

    观测数据 + 隐变量 = 完全数据

    Jensen不等式:

    [log(sum alpha_i varphi(x_i)) >= sumalpha_i logvarphi(x_i)\ sum alpha_i = 1 且 alpha_i >= 0 ]

    EM算法的收敛性

    证明:P(Y|θ)为观测数据的似然函数,且是递增的,即:

    [P(Y| heta^{(i+1)}) geq P(Y| heta^{(i)}) ]

    证明如下:

    [P(Y| heta) = frac{P(Y,Z| heta)}{P(Z|Y, heta)}......有贝叶斯公式展开得\ logP(Y| heta) = logP(Y.Z| heta) - logP(Z|Y, heta) ....取对数\ ]

    [Q( heta, heta^{(i)}) = sum_z logP(Y,Z| heta)P(Z|Y, heta^{(i)}) ...由(1)得\ ]

    构造下式(因为取对数方便相减和相除,同时构造了贝叶斯公式):

    [H( heta, heta^{(i)}) = sum_zlogP(Z|Y, heta)P(Z|Y, heta^{(i)})\ logP(Y| heta) = Q( heta, heta^{(i)}) - H( heta, heta^{(i)}).....(2) ]

    在式(2)中分别取θθi 和θ i+1,并相减

    [logP(Y| heta^{(i+1)}) - logP(Y| heta^{(i)}) = \ [Q( heta^{(i+1)}, heta^{(i)})- Q(( heta^{(i)}, heta^{(i)}))] - [H( heta^{(i+1)}, heta^{(i)}) - H(( heta^{(i)}, heta^{(i)}))] ]

    其中对H:

    [[H( heta^{(i+1)}, heta^{(i)}) - H(( heta^{(i)}, heta^{(i)}))] = sum_z(logP(Z|Y, heta^{(i+1})) =\ sum_z(logfrac{P(Z|Y, heta^{(i+1})}{P(Z|Y, heta^{(i)})}P(Z|Y, heta^{(i)})leq\ log(sum_Zfrac{P(Z|Y, heta^{(i+1})}{P(Z|Y, heta^{(i)})}P(Z|Y, heta^{(i)}))...Jensen不等式得\ log(sum_ZP(Z|Y, heta^{(i+1)}))=log1 = 0 ]

    对Q,由于Q的i+1项已经达到极大,所以有:

    [[Q( heta^{(i+1)}, heta^{(i)})- Q(( heta^{(i)}, heta^{(i)}))]geq0 ]

    最后证明得到:

    [logP(Y| heta^{(i+1)})geq logP(Y| heta^{(i)}) ]

    应用篇--GMM

    EM在GMM中的应用

    高斯分布分析

    图中可知:

    1. 单个高斯拟合效果差,均值应该分布在数据密集处

    2. 混合高斯模型中的隐变量,同时,隐变量在概率模型中不能改变边缘分布,即:

      [p(x_i)=int_{z_i}p(x_i|z_i)*p(z_i)dz_i = alpha_z = sum_{z_i=1}^kalpha_{z_i}N(x_i|mu_z,Sigma_z) ]

      每个数据都有一个隐变量,告诉你在哪个高斯模型中(由两个高斯扩展到n个高斯)

      [P(z_i = z_1|x_i,Theta^{g}) = frac{a}{a+b} ]

    [P(x) = sum_{l=1}^{k}alpha_l*N(X|mu_l,Sigma_l) quadquadquad sum^k_{l=1}alpha_l = 1 ]

    [Θ={α_1 ,…,α_k,μ_1,…,μ_k,Σ_1,…,Σ_{k-1}} ]

    1. 目标函数为:

      [Θ_{MLE}=argmax_{Θ}*L(Θ∣X) =argmax_Θ(sum_{l=1}^nlog*sum_{l=1}^kα_lN(X∣μ_l,Σ_l)) ]

      该式子包含和(或积分)的对数,不能像单个高斯模型那样直接求导,再令导数为0来求解。这时我们需要利用 EM 算法通过迭代逐步近似极大化L(Θ∣X)来求解

    EM算法在GMM中的应用:

    高斯混合模型的概率分布模型如下:

    [P(Y| heta) = sum^{K}_{K=1}alpha_kphi(Y| heta)\ 其中:sum_{K=1}^{K}alpha_k = 1 , heta_k = (mu_k,sigma_k^2)\ heta = (alpha_1,alpha_2,...,alpha_k, heta_1, heta_2,..., heta_k)\ phi(Y| heta) = frac{1}{sqrt{2pi}sigma_k}exp(-frac{(y-mu_k)^2}{2sigma_k^2}) ]

    γ 作为隐变量,去确定是哪个模型,γ =1/0.

    完整数据的似然函数为:

    [P(y,gamma| heta) = prod_{j=1}^NP(y_j,gamma_{j1},gamma_{j2},...,gamma_{jK}| heta)\ = prod_{K=1}^Kprod_{j=1}^N[alpha_kphi(y_j| heta_k)]^{gamma^{jK}}\ ]

    完全数据的对数似然为

    [logP(y,gamma| heta) = sum_{K=1}^K[sum_{j=1}^Nlogalpha_k + sum_{j=1}^Ngamma_{jk}[log(frac{1}{sqrt{2pi}})-logsigma_k - frac{1}{2sigma^2_K}(y_j-mu_k)^2]] ]

    EM算法中的E步:确定Q函数,对每一个隐变量求期望

    根据当前模型参数,计算分模型k对观测数据y_j的响应度

    [Q( heta, heta^{(i)}) = E[logP(y,gamma| heta)|y, heta^{(i)}]\ =E[sum_{K=1}^K[sum_{j=1}^Nlogalpha_k + sum_{j=1}^Ngamma_{jk}[log(frac{1}{sqrt{2pi}})-logsigma_k - frac{1}{2sigma^2_K}(y_j-mu_k)^2]]]\ =sum_{K=1}^K[sum_{j=1}^N(E_{gamma_{jk}})logalpha_K+sum_{j=1}^N(Egamma_{jk})[log(frac{1}{sqrt{2pi}})-logsigma_K-]frac{1}{2sigma_k^2}(y_j-mu_k)2] ]

    计算E

    [gamma_{jk} = E(gamma_{jk}|y, heta)\ =P(gamma_{jk}=1|y, heta)*1 + P(gamma_{jk}=0, heta)*0\ =frac{P(gamma_{jk}=1,y_j| heta)}{P(y_j| heta)} = frac{P(gamma_{jk}=1,y_j| heta)}{sum_{K=1}^KP(gamma=1,y_j| heta)}\ =...=frac{alpha_kphi(y_j| heta_k)}{sum_{K=1}^Kalpha_kphi(y_j| heta_k)} ]

    最终求得Q

    [Q( heta, heta^{(i)}) = sum_{K=1}^K[sum_{j=1}^Nlogalpha_k+sum_{j=1}^Ngamma_{jk}[log(frac{1}{sqrt{2pi}})-logsigma_k-frac{1}{2sigma_k^2}(y_j-mu_k)^2]] ]

    M步,进行迭代模型的参数

    [ heta^{(i+1)} = argmax_ heta Q( heta, heta^{(i)}) ]

    [mu_k = frac{sum_{j=1}^Ngamma_{jk}y_j}{sum_{j=1}^Ngamma_{jk}}\ \ sigma^2_k = frac{sum_{j=1}^Ngamma_{jk}(y_j-mu_k)^2}{sum_{j=1}^Ngamma_{jk}}\ \ alpha_k= frac{sum_{j=1}^Ngamma_{jk}}{N} ]

    参考1:知乎关于EM

    参考2:GMM应用

    参考3:EM九个境界

    参考4:统计学习方法

  • 相关阅读:
    MVVM架构~knockoutjs系列之表单添加(验证)与列表操作源码开放
    MVVM架构~knockoutjs系列之验证成功提示显示
    MVVM架构~knockoutjs系列之正则表达式使规则更灵活
    郁闷~win7无法进行局域网访问解决
    不合规范的html段落php处理细则
    备份一个通过拷贝来创建虚拟机镜像的脚本
    [置顶] ffmpg简介以及用它实现音频视频合并(java)
    [Java] HttpClient有个古怪的stalecheck选项
    POJ 1260 Pearls
    “AIR SDK 0.0: AIR SDK location “...devsdksAIRSDKWin” does not exist.”问题解决~
  • 原文地址:https://www.cnblogs.com/Towerb/p/13383743.html
Copyright © 2011-2022 走看看