Gaussian_Mixture_Model_03_Expectation_Maximization

2022年10月

Posted by franztao on December 25, 2019

上一小节中,我们看到了使用极大似然估计的方法,我们根本就求不出最优参数θ的解析解。所以,我们使用迭代的方法来求近似解。

EM算法的表达式,可以被我们写为:

θ(t+1)=argmaxθEP(Z|X,θ(t))[logP(X,Z|θ)]Q(θ,θ(t))

经过一系列的迭代,我们可以得到θ0,θ1,,θ(t),迭代到一定次数以后我们得到的θ(N)就是我们想要得到的结果。EM算法大体上可以分成两个部分,E-step和M-step,

E-Step}

Q(θ,θ(t))=ZlogP(X,Z|θ)P(Z|X,θ(t))dZ=ZlogNi=1P(xi,zi|θ)Ni=1P(zi|xi,θ(t))dZ=z1,,zNNi=1logP(xi,zi|θ)Ni=1P(zi|xi,θ(t))dZ=z1,,zN[logP(x1,z1|θ)+logP(x2,z2|θ)+logP(xN,zN|θ)]Ni=1P(zi|xi,θ(t))dZ

为了简化推导,我们首先只取第一项来化简一下,

z1,,zNlogP(x1,z1|θ)Ni=1P(zi|xi,θ(t))dZ=z1,,zNlogP(x1,z1|θ)P(z1|x1,θ(t))Ni=2P(zi|xi,θ(t))dZ=z1logP(x1,z1|θ)P(z1|x1,θ(t))z2,,zNNi=2P(zi|xi,θ(t))dZ

而:

z2,,zNNi=2P(zi|xi,θ(t))=z2,,zNP(z2|x2,θ(t))P(z3|x3,θ(t))P(zN|xN,θ(t))=z2P(z2|x2,θ(t))z3P(z3|x3,θ(t))zNP(zN|xN,θ(t))=111=1

所以,式(3)也就等于:

z1,,zNlogP(x1,z1|θ)Ni=1P(zi|xi,θ(t))dZ=z1logP(x1,z1|θ)P(z1|x1,θ(t))

将式(5)中得到的结果,代入到式(2)中,我们就可以得到:

Q(θ,θ(t))=z1logP(x1,z1|θ)P(z1|x1,θ(t))++zNlogP(xN,zN|θ)P(zN|xN,θ(t))=Ni=1ZilogP(xi,zi|θ)P(zi|xi,θ(t))
那么,下一步我们就是要找到,$P(x_i,z_i \theta)P(z_i x_i,\theta^{(t)})$的表达方式了。其中:
P(X,Z)=P(Z)P(X|Z)=PZN(X|μZ,ΣZ)
P(Z|X)=P(X,Z)P(X)=PZN(X|μZ,ΣZ)Ki=1PZiN(X|μZi,ΣZi)

所以,我们将式(8)代入到式(6)中,就可以得到:

Q(θ,θ(t))=Ni=1ZilogPZiN(X|μZi,ΣZi)Pθ(t)ZiN(xi|μθ(t)Zi,Σθ(t)Zi)Kk=1Pθ(t)kN(xi|μθ(t)k,Σθ(t)k)

M-Step}

根据我们在E-Step中的推导,我们可以得到:

Q(θ,θ(t))=Ni=1ZilogPZiN(X|μZi,ΣZi)Pθ(t)ZiN(xi|μθ(t)Zi,Σθ(t)Zi)Kk=1Pθ(t)kN(xi|μθ(t)k,Σθ(t)k)P(Zi|Xi,,θ(t))=ZiNi=1log(PZiN(X|μZi,ΣZi))P(Zi|Xi,,θ(t))=Kk=1Ni=1log(PkN(X|μk,Σk))P(Zi=Ck|Xi,,θ(t))(Zi=Ck)=Kk=1Ni=1(logPk+logN(Xi|μk,Σk))P(Zi=Ck|Xi,θ(t))

我们的目的也就是进行不断迭代,从而得出最终的解,用公式表达也就是:

θ(t+1)=argmaxθQ(θ,θ(t))

我们需要求解的参数也就是,θ(t+1)=P(t+1)1,,P(t+1)k,μ(t+1)1,,μ(t+1)k,Σ(t+1)1,,Σ(t+1)k

首先,我们来展示一下怎么求解P(t+1)K

由于在等式(10),$\sum_{k=1}^K \sum_{i=1}^N \left( \log P_{k} + \log \mathcal{N}(X \mu_{k},\Sigma_{k}) \right) \cdot P(Z_i = C_k X_i,,\theta^{(t)})\log \mathcal{N}(X \mu_{k},\Sigma_{k})P_k$并没有什么关系。所以,可以被我们直接忽略掉。所以,求解问题,可以被我们描述为:
{argmaxPkKk=1Ni=1logPkP(Zi=Ck|Xi,θ(t))s.t.Kk=1Pk=1

使用拉格朗日算子法,我们可以写成:

L(P,λ)=Kk=1Ni=1logPkP(Zi=Ck|Xi,θ(t))+λ(Kk=1Pk1)
L(P,λ)Pk=Ni=11PkP(Zi=Ck|Xi,θ(t))+λ=0Ni=1P(Zi=Ck|Xi,θ(t))+Pkλ=0k=1,,KNi=1Kk=1P(Zi=Ck|Xi,θ(t))1+Kk=1Pk1λ=0N+λ=0

所以,我们可以轻易的得到λ=N,所以有

P(t+1)K=1NNi=1P(Zi=Ck|Xi,θ(t))

那么,我们所有想要求的参数也就是P(t+1)=(P(t+1)1,P(t+1)2,,P(t+1)k)

求解P(t+1)k是一个有约束的求最大值问题,由于带约束所以我们要使用拉格朗日乘子法。而且这里使用到了一个track,也就是将从1到k,所有的数据集做一个整合,非常的精彩,这样就直接消掉了Pk无法计算的问题。而至于θ的其他部分,也就是关于μ(t+1)1,,μ(t+1)k,Σ(t+1)1,,Σ(t+1)k的计算,使用的方法也是一样的,这个问题就留给各位了。

为什么极大似然估计搞不定的问题,放在EM算法里面我们就可以搞定了呢?我们来对比一下两个方法中,需要计算极值的公式。

Kk=1Ni=1(logPk+logN(Xi|μk,Σk))P(Zi=Ck|Xi,θ(t))
argmaxθNi=1logKk=1PkN(xi|μk,Σk)

极大似然估计一开始计算的就是P(X),而EM算法中并没有出现有关P(X)的计算,而是全程计算都是P(X,Z)。而P(X)实际上就是P(X,Z)的求和形式。所以,每次单独的考虑P(X,Z)就避免了在log函数中出现求和操作。