• 【机器学习笔记】EM算法及其应用


    极大似然估计

    考虑一个高斯分布(p(mathbf{x}mid{ heta})),其中( heta=(mu,Sigma))。样本集(X={x_1,...,x_N})中每个样本都是独立的从该高斯分布中抽取得到的,满足独立同分布假设。

    因此,取到这个样本集的概率为:

    [egin{aligned} p(Xmid{ heta}) &= prod_{i=1}^Np(x_imid heta) end{aligned}]

    我们要估计模型参数向量( heta)的值,由于现在样本集(X)已知,所以可以把(p(Xmid{ heta}))看作是参数向量( heta)的函数,称之为样本集(X)下的似然函数(L( hetamid{X}))

    [egin{aligned} L( hetamid{X}) &= prod_{i=1}^Np(x_imid heta) end{aligned}]

    极大似然估计要做的就是最大化该似然函数,找到能够使得(p(Xmid{ heta}))最大的参数向量( heta),换句话说,就是找到最符合当前观测样本集(X)的模型的参数向量( heta)

    为方便运算,通常我们使用似然函数的对数形式(可以将乘积运算转化为求和形式),称之为“对数似然函数”。由于底数大于1的对数函数总是单调递增的,所以使对数似然函数达到最大值的参数向量也能使似然函数本身达到最大值。故,对数似然函数为:

    [egin{aligned} L( hetamid{X}) &= logBig(prod_{i=1}^Np(x_imid heta)Big) \ &= sum_{i=1}^Nlog{p(x_imid heta)} end{aligned}]

    参数的估计值 (hat{ heta}=argunderset{ heta}{max}L( hetamid{X}))

    混合高斯模型及其求解困境

    混合高斯模型是指由(k)个高斯模型叠加形成的一种概率分布模型,形式化表示为:

    [p(mathbf{x}mid{Theta}) = sum_{l=1}^{k}alpha_lp_l(mathbf{x}mid{ heta_l}) ]

    其中,参数 (Theta=(alpha_1,...,alpha_k, heta_1,..., heta_k)),并且有(Sigma_{l=1}^{k}alpha_l=1)(alpha_l)代表单个高斯分布在混合高斯模型中的权重。

    现在我们假设观测样本集(X=(x_1,...x_N)) 来自于该混合高斯模型,满足独立同分布假设。为了估计出该混合高斯模型的参数(Theta),我们写出这n个数据的对数似然函数:

    [egin{aligned} L(Thetamid{X}) &= logBig(p(Xmid{Theta})Big) \ &= logBig(prod_{i=1}^{N}p(x_imid{Theta})Big) \ &= sum_{i=1}^{N}logBig(p(x_imid{Theta})Big) \ &= sum_{i=1}^{N}logBig(sum_{l=1}^{k}alpha_lp_l(x_imid{ heta_l})Big) end{aligned}]

    我们的目标就是要通过最大化该似然函数从而估计出混合高斯模型的参数 (Theta)

    观察该式,由于对数函数中还包含求和式,因此如果仿照极大似然估计单个高斯分布参数的方法来求解这个问题,是无法得到解析解的。所以我们要寻求更好的方式来解决这个问题。

    EM算法

    基本过程

    考虑一个样本集(X)是从某种分布(参数为(Theta))中观测得到的,我们称之为不完全数据(incomplete data)。我们引入一个无法直接观测得到的随机变量集合(Z),叫作隐变量。X和Z连在一起称作完全数据。我们可以得到它们的联合概率分布为:

    [p(X,Zmid{Theta})=p(Zmid{X,Theta})p(Xmid{Theta}) ]

    我们定义一个新的似然函数叫作完全数据似然:

    [L(Thetamid{X,Z})=p(X,Zmid{Theta}) ]

    我们可以通过极大化这样一个似然函数来估计参数Theta。然而Z是隐变量,其分布未知上式无法直接求解,我们通过计算完全数据的对数似然函数关于Z的期望,来最大化已观测数据的边际似然。我们定义这样一个期望值为Q函数:

    [egin{aligned} Q(Theta,Theta^{g}) &= mathbb{E}_ZBig[log{p(X,ZmidTheta)}mid{X,Theta^g}Big]\ &= sum_Zlog{p(X,Zmid{Theta})p(Zmid{X,Theta^g})} end{aligned}]

    其中,(Theta^g)表示当前的参数估计值,X是观测数据,都作为常量。(Theta)是我们要极大化的参数,(Z)是来自于分布(p(Zmid{X,Theta^g}))的随机变量。(p(Zmid{X,Theta^g}))是未观测变量的边缘分布,并且依赖于观测数据(X)和当前模型参数(Theta^g)

    EM算法中的E-setp就是指上面计算期望值的过程。

    M-step则是极大化这样一个期望,从而得到能够最大化期望的参数(Theta)

    [egin{aligned} Theta^{g+1} &= argunderset{ heta}{max}Q(Theta,Theta^{g}) \ &= argunderset{ heta}{max}sum_Zlog{p(X,Zmid{Theta})p(Zmid{X,Theta^g})} end{aligned}]

    重复执行E-step和M-step直至收敛。

    收敛性证明

    (略)

    EM算法应用于高斯混合模型

    回到高斯混合模型的参数估计问题,我们将样本集(X)看作不完全数据,考虑一个无法观测到的随机变量(Z={z_i}_{i=1}^{N}),其中(z_iin{1,...,k}),用来指示每一个数据点是由哪一个高斯分布产生的,(可以类比成一个类别标签,这个标签我们是无法直接观测得到的)。比如,(z_i=k) 表示第(i)个样本点是由混合高斯模型中的第(k)个分量模型生成的。

    那么完全数据((X,Z))的概率分布为:

    [egin{aligned} p(X,Zmid{Theta}) &= prod_{i=1}^{N}p(x_i,z_imid{Theta}) \ &= prod_{i=1}^{N}p(z_imid{Theta})p(x_imid{z_i,Theta}) \ &= prod_{i=1}^{N}alpha_{z_i}p_{z_i}(x_imid{ heta_{z_i}}) end{aligned}]

    在混合高斯模型问题中,(p(z_imidTheta)) 是指第(z_i)个模型的先验概率,也就是其权重(alpha_{z_i})。给定样本点来源的高斯分布类别后,(p(x_imid{z_i,Theta}))可以写成对应的高斯分布下的概率密度形式,即(p_{z_i}(x_imid{ heta_{z_i}}))

    根据贝叶斯公式,又可以得到隐变量的条件概率分布:

    [egin{aligned} p(Zmid{X,Theta}) &= prod_{i=1}^Np(z_imid{x_i,Theta}) \ &= prod_{i=1}^Nfrac{p(x_i,z_i,Theta)}{p(x_i,Theta)} \ &= prod_{i=1}^Nfrac{alpha_{z_i}p_{z_i}(x_imid{ heta_{z_i}})}{sum_{z_i=1}^kalpha_{z_i}p_{z_i}(x_imid{ heta_{z_i}})} end{aligned}]

    因此,我们可以写出相应的(Q)函数:

    [egin{aligned} Q(Theta,Theta^{g}) &= sum_Zlog{p(X,Zmid{Theta})p(Zmid{X,Theta^g})} \ &= sum_Zlog{prod_{i=1}^{N}alpha_{z_i}p_{z_i}(x_imid{ heta_{z_i}})}prod_{i=1}^Np(z_imid{x_i,Theta^g}) \ &= sum_Zsum_{i=1}^{N}logBig(alpha_{z_i}p_{z_i}(x_imid{ heta_{z_i}})Big)prod_{i=1}^Np(z_imid{x_i,Theta^g}) \ &= sum_{z_1=1}^ksum_{z_2=1}^k...sum_{z_N=1}^ksum_{i=1}^{N}logBig(alpha_{z_i}p_{z_i}(x_imid{ heta_{z_i}})Big)prod_{i=1}^Np(z_imid{x_i,Theta^g}) \ &= sum_{z_1=1}^ksum_{z_2=1}^k...sum_{z_N=1}^klogBig(alpha_{z_1}p_{z_1}(x_1mid{ heta_{z_1}})Big)prod_{i=1}^Np(z_imid{x_i,Theta^g}) \ &quad+ sum_{z_1=1}^ksum_{z_2=1}^k...sum_{z_N=1}^ksum_{i=2}^{N}logBig(alpha_{z_i}p_{z_i}(x_imid{ heta_{z_i}})Big)prod_{i=1}^Np(z_imid{x_i,Theta^g}) \ &= mathcal{A} + mathcal{B} end{aligned}]

    其中,

    [egin{aligned} mathcal{A} &= sum_{z_1=1}^ksum_{z_2=1}^k...sum_{z_N=1}^klogBig(alpha_{z_1}p_{z_1}(x_1mid{ heta_{z_1}})Big)prod_{i=1}^Np(z_imid{x_i,Theta^g}) \ &= sum_{z_1=1}^klogBig(alpha_{z_1}p_{z_1}(x_1mid{ heta_{z_1}})Big)p(z_1mid{x_1,Theta^g})underbrace{sum_{z_2=1}^k...sum_{z_N=1}^kprod_{i=2}^Np(z_imid{x_i,Theta^g})}_{result=1} \ &= sum_{z_1=1}^klogBig(alpha_{z_1}p_{z_1}(x_1mid{ heta_{z_1}})Big)p(z_1mid{x_1,Theta^g}) \ end{aligned}]

    (mathcal{B})式可以按照同样的操作技巧进行分解,故不赘述。

    并且,我们用(l)代替(z_i)来简化我们的表达式。

    因此,(Q)函数可以化简为:

    [egin{aligned} Q(Theta,Theta^{g}) &= sum_{i=1}^Nsum_{z_i=1}^klogBig(alpha_{z_i}p_{z_i}(x_imid{ heta_{z_i}})Big)p(z_imid{x_i,Theta^g}) \ &= sum_{i=1}^Nsum_{l=1}^klogBig(alpha_{l}p_{l}(x_imid{ heta_{l}})Big)p(lmid{x_i,Theta^g}) \ &= sum_{l=1}^ksum_{i=1}^NlogBig(alpha_{l}p_{l}(x_imid{ heta_{l}})Big)p(lmid{x_i,Theta^g}) \ &= sum_{l=1}^ksum_{i=1}^Nlog(alpha_l)p(lmid{x_i,Theta^g})+sum_{l=1}^ksum_{i=1}^NlogBig(p_l(x_imid{ heta_{l}})Big)p(lmid{x_i,Theta^g}) \ end{aligned}]

    这样,我们可以对包含参数(alpha_l) 和参数( heta_l) 的项分别进行最大化从而得到各自的估计值。

    估计参数(alpha_l)

    这个问题可以表示为下面的约束最优化问题:

    [egin{aligned} underset{alpha_l}{max}&quad sum_{l=1}^ksum_{i=1}^Nlog(alpha_l)p(lmid{x_i,Theta^g}) \ s.t.& quadsum_{l=1}^k{alpha_l}=1 end{aligned}]

    引入拉格朗日乘子(lambda),构建拉格朗日函数:

    [egin{aligned} mathcal{L}(alpha_1,...,alpha_2,lambda) &= sum_{l=1}^ksum_{i=1}^Nlog(alpha_l)p(lmid{x_i,Theta^g})-lambdaBig(sum_{l=1}^k{alpha_l}-1Big) \ &= sum_{l=1}^klog(alpha_l)sum_{i=1}^Np(lmid{x_i,Theta^g})-lambdaBig(sum_{l=1}^k{alpha_l}-1Big) end{aligned}]

    对参数(alpha_l)求偏导并令其为0:

    [frac{partialmathcal{L}}{partialalpha_l}=frac{1}{alpha_l}sum_{i=1}^{N}p(lmid{x_i,Theta^g})-lambda=0 ]

    得到:

    [alpha_l=frac{1}{lambda}sum_{i=1}^{N}p(lmid{x_i,Theta^g}) ]

    代回约束条件,有:

    [1-frac{1}{lambda}sum_{l=1}^{k}sum_{i=1}^{N}p(lmid{x_i,Theta^g})=0 ]

    在之前的推导中,我们得到过这样一个公式,即隐变量(z)的条件分布:

    [egin{aligned} p(z_imid{x_i,Theta}) &= frac{p(x_i,z_i,Theta)}{p(x_i,Theta)} \ &= frac{alpha_{z_i}p_{z_i}(x_imid{ heta_{z_i}})}{sum_{z_i=1}^kalpha_{z_i}p_{z_i}(x_imid{ heta_{z_i}})} end{aligned}]

    同样用(l)代替(z_i)来简化我们的表达式,得到:

    [egin{aligned} p(lmid{x_i,Theta}) &= frac{p(x_i,l,Theta)}{p(x_i,Theta)} \ &= frac{alpha_{l}p_{l}(x_imid{ heta_{l}})}{sum_{l=1}^kalpha_{l}p_{l}(x_imid{ heta_{l}})} end{aligned}]

    故将其代回之前的式子,得到:

    [egin{aligned} 1-frac{1}{lambda}sum_{l=1}^{k}sum_{i=1}^{N}frac{alpha_{l}p_{l}(x_imid{ heta_{l}})}{sum_{l=1}^kalpha_{l}p_{l}(x_imid{ heta_{l}})}&=0 \ 1-frac{1}{lambda}sum_{i=1}^{N}sum_{l=1}^{k}frac{alpha_{l}p_{l}(x_imid{ heta_{l}})}{sum_{l=1}^kalpha_{l}p_{l}(x_imid{ heta_{l}})}&=0 \ 1-frac{1}{lambda}sum_{i=1}^{N}(1)&=0 \ 1-frac{N}{lambda}&=0 \ lambda&=N end{aligned}]

    故,

    [alpha_l=frac{1}{N}sum_{i=1}^{N}p(lmid{x_i,Theta^g}) ]

    在估计剩下的参数之前,先补充一下一会要用到的线性代数知识。

    【知识点~Matrix Algebra】

    • 矩阵的迹等于矩阵的主对角线上元素之和,且有以下性质
      • [tr(A+B)=tr(A)+tr(B) ]

      • [tr(AB)=tr(BA) ]

      • [sum_ix_i^TAx_i=tr(AB) quad where quad B=sum_ix_ix_i^T ]

    • (|A|)表示矩阵(A)的行列式,当(A)可逆时,有以下性质
      • [|A^{-1}|=|A|^{-1} ]

    • (a_{i,j})表示矩阵(A)的第(i)行,(j)列的元素,给出矩阵函数求导的一些公式:
      • [frac{partial{x^TAx}}{partial{x}}=(A+A^T)x ]

      • [frac{partiallog|A|}{partial{A}}=2A^{-1}-diag(A^{-1}) ]

      • [frac{partial{tr(AB)}}{partial{A}}=B+B^T-diag(B) ]

    估计参数( heta_l)

    对于(d)维高斯分布来说,参数( heta=(mu,Sigma)),且:

    [p_l(xmid{mu_l,Sigma_l})=frac{1}{(2pi)^{d/2}vertSigma_lvert^{1/2}}expig[-frac{1}{2}(x-mu_l)^TSigma_l^{-1}(x-mu_l)ig] ]

    估计参数(mu_l)

    [egin{aligned} &quadsum_{l=1}^ksum_{i=1}^NlogBig(p_l(x_imid{mu_l,Sigma_l})Big)p(lmid{x_i,Theta^g}) \ &= sum_{l=1}^ksum_{i=1}^NBig(log(2pi^{-d/2})+log|Sigma_l|^{-1/2}-frac{1}{2}(x_i-mu_l)^TSigma_l^{-1}(x_i-mu_l)Big)p(lmid{x_i,Theta^g}) \ end{aligned}]

    忽略其中的常数项(因为常数项在求导之后为0),上式化简为:

    [sum_{l=1}^ksum_{i=1}^NBig(-frac{1}{2}log|Sigma_l|-frac{1}{2}(x_i-mu_l)^TSigma_l^{-1}(x_i-mu_l)Big)p(lmid{x_i,Theta^g}) ]

    关于(mu_l)求导,得到:

    [sum_{l=1}^ksum_{i=1}^NBigg(-frac{1}{2}Big(Sigma_l^{-1}+(Sigma_l^{-1})^TBig)Big(x_i-mu_lBig)Big(-1Big)Bigg)p(lmid{x_i,Theta^g}) ]

    因为协方差矩阵Sigma为对称阵,故(frac{1}{2}Big(Sigma_l^{-1}+(Sigma_l^{-1})^TBig)=Sigma_l^{-1}),因此,上式继续化简为:

    [sum_{l=1}^ksum_{i=1}^NSigma_l^{-1}(x_i-mu_l)p(lmid{x_i,Theta^g}) ]

    令该式为0,得到:

    [egin{aligned} sum_{l=1}^kSigma_l^{-1}sum_{i=1}^N{mu_l}p(lmid{x_i,Theta^g})&=sum_{l=1}^kSigma_l^{-1}sum_{i=1}^N{x_i}p(lmid{x_i,Theta^g}) \ sum_{i=1}^N{mu_l}p(lmid{x_i,Theta^g})&=sum_{i=1}^N{x_i}p(lmid{x_i,Theta^g}) \ mu_lsum_{i=1}^Np(lmid{x_i,Theta^g})&=sum_{i=1}^N{x_i}p(lmid{x_i,Theta^g}) \ mu_l&=frac{sum_{i=1}^N{x_i}p(lmid{x_i,Theta^g})}{sum_{i=1}^Np(lmid{x_i,Theta^g})} \ end{aligned}]

    估计参数(Sigma_l)

    [egin{aligned} &quadsum_{l=1}^ksum_{i=1}^NlogBig(p_l(x_imid{mu_l,Sigma_l})Big)p(lmid{x_i,Theta^g}) \ &= sum_{l=1}^ksum_{i=1}^NBig(log(2pi^{-d/2})+log|Sigma_l|^{-1/2}-frac{1}{2}(x_i-mu_l)^TSigma_l^{-1}(x_i-mu_l)Big)p(lmid{x_i,Theta^g}) \ end{aligned}]

    忽略其中的常数项(因为常数项在求导之后为0),上式化简为:

    [egin{aligned} &quadsum_{l=1}^ksum_{i=1}^NBig(-frac{1}{2}log|Sigma_l|-frac{1}{2}(x_i-mu_l)^TSigma_l^{-1}(x_i-mu_l)Big)p(lmid{x_i,Theta^g}) \ &= sum_{l=1}^ksum_{i=1}^NBig(frac{1}{2}log|Sigma_l^{-1}|p(lmid{x_i,Theta^g})-frac{1}{2}(x_i-mu_l)^TSigma_l^{-1}(x_i-mu_l)p(lmid{x_i,Theta^g})Big) \ &= sum_{l=1}^kBig(frac{1}{2}log|Sigma_l^{-1}|sum_{i=1}^{N}p(lmid{x_i,Theta^g})-frac{1}{2}Sigma_l^{-1}sum_{i=1}^{N}(x_i-mu_l)^T(I)(x_i-mu_l)p(lmid{x_i,Theta^g})Big) \ &= sum_{l=1}^kBigg(frac{1}{2}log|Sigma_l^{-1}|sum_{i=1}^{N}p(lmid{x_i,Theta^g})-frac{1}{2}trBig(Sigma_l^{-1}sum_{i=1}^{N}(x_i-mu_l)(x_i-mu_l)^Tp(lmid{x_i,Theta^g})Big)Bigg) \ end{aligned}]

    考虑方程(S(mu_l,Sigma_{l}^{-1}))为上式中(sum_{l=1}^k)内部的式子,即:

    [S(mu_l,Sigma_{l}^{-1})= frac{1}{2}log|Sigma_l^{-1}|sum_{i=1}^{N}p(lmid{x_i,Theta^g})-frac{1}{2}trBig(Sigma_l^{-1}underbrace{sum_{i=1}^{N}(x_i-mu_l)(x_i-mu_l)^Tp(lmid{x_i,Theta^g})}_{M_l}Big) ]

    (S)关于(Sigma_l^{-1})求导数,得到:

    [egin{aligned} frac{partial{S(mu_l,Sigma_l^{-1})}}{partial{Sigma_l^{-1}}} &= frac{1}{2}sum_{i=1}^{N}p(lmid{x_i,Theta^g})Big(2Sigma_l-diag(Sigma_l)Big)-frac{1}{2}frac{partial{tr(Sigma_l^{-1}M_l)}}{partialSigma_l^{-1}} \ &= frac{1}{2}sum_{i=1}^{N}p(lmid{x_i,Theta^g})Big(2Sigma_l-diag(Sigma_l)Big)-frac{1}{2}Big(2M_l-diag(M_l)Big) \ end{aligned}]

    令该导数值为0,得到:

    [egin{aligned} sum_{i=1}^{N}p(lmid{x_i,Theta^g})Big(2Sigma_l-diag(Sigma_l)Big) &= Big(2M_l-diag(M_l)Big) \ 2Big(underbrace{sum_{i=1}^{N}Sigma_lp(lmid{x_i,Theta^g})-M_l}_{mathcal{A}}Big) &= diagBig(underbrace{sum_{i=1}^{N}Sigma_lp(lmid{x_i,Theta^g})-M_l}_{mathcal{A}}Big) \ 2mathcal{A} &= diag(mathcal{A}) end{aligned}]

    解得(mathcal{A}=0),即:

    [egin{aligned} sum_{i=1}^{N}Sigma_lp(lmid{x_i,Theta^g}) &= M_l \ sum_{i=1}^{N}Sigma_lp(lmid{x_i,Theta^g}) &= sum_{i=1}^{N}(x_i-mu_l)(x_i-mu_l)^Tp(lmid{x_i,Theta^g}) \ Sigma_lsum_{i=1}^{N}p(lmid{x_i,Theta^g}) &= sum_{i=1}^{N}(x_i-mu_l)(x_i-mu_l)^Tp(lmid{x_i,Theta^g}) \ Sigma_l &= frac{sum_{i=1}^{N}(x_i-mu_l)(x_i-mu_l)^Tp(lmid{x_i,Theta^g})}{sum_{i=1}^{N}p(lmid{x_i,Theta^g})} end{aligned}]

  • 相关阅读:
    【转】Jmeter 定时器之Constant Timer
    资源变现资讯、自媒体、新闻、博客小程序带pc后台管理系统
    零基础搭建智能垃圾分类小程序
    当两个对象相互引用,在调用toString方法时产生StackOverflowError
    UML图解
    Canal监听数据库表的变化
    JVM总结
    微服务总结
    Netty总结
    Mysql总结
  • 原文地址:https://www.cnblogs.com/surfzjy/p/7785187.html
Copyright © 2020-2023  润新知