上一小节中,我们看到了使用极大似然估计的方法,我们根本就求不出最优参数θ的解析解。所以,我们使用迭代的方法来求近似解。
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=∑ZlogN∏i=1P(xi,zi|θ)⋅N∏i=1P(zi|xi,θ(t))dZ=∑z1,⋯,zNN∑i=1logP(xi,zi|θ)⋅N∏i=1P(zi|xi,θ(t))dZ=∑z1,⋯,zN[logP(x1,z1|θ)+logP(x2,z2|θ)+⋯logP(xN,zN|θ)]⋅N∏i=1P(zi|xi,θ(t))dZ为了简化推导,我们首先只取第一项来化简一下,
∑z1,⋯,zNlogP(x1,z1|θ)⋅N∏i=1P(zi|xi,θ(t))dZ=∑z1,⋯,zNlogP(x1,z1|θ)⋅P(z1|x1,θ(t))⋅N∏i=2P(zi|xi,θ(t))dZ=∑z1logP(x1,z1|θ)⋅P(z1|x1,θ(t))⋅∑z2,⋯,zNN∏i=2P(zi|xi,θ(t))dZ而:
∑z2,⋯,zNN∏i=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))=1⋅1⋯1=1所以,式(3)也就等于:
∑z1,⋯,zNlogP(x1,z1|θ)⋅N∏i=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))=N∑i=1∑ZilogP(xi,zi|θ)⋅P(zi|xi,θ(t))那么,下一步我们就是要找到,$P(x_i,z_i | \theta)和P(z_i | x_i,\theta^{(t)})$的表达方式了。其中: |
所以,我们将式(8)代入到式(6)中,就可以得到:
Q(θ,θ(t))=N∑i=1∑ZilogPZi⋅N(X|μZi,ΣZi)⋅Pθ(t)Zi⋅N(xi|μθ(t)Zi,Σθ(t)Zi)∑Kk=1Pθ(t)k⋅N(xi|μθ(t)k,Σθ(t)k)M-Step}
根据我们在E-Step中的推导,我们可以得到:
Q(θ,θ(t))=N∑i=1∑ZilogPZi⋅N(X|μZi,ΣZi)⋅Pθ(t)Zi⋅N(xi|μθ(t)Zi,Σθ(t)Zi)∑Kk=1Pθ(t)k⋅N(xi|μθ(t)k,Σθ(t)k)⏟P(Zi|Xi,,θ(t))=∑ZiN∑i=1log(PZi⋅N(X|μZi,ΣZi))⋅P(Zi|Xi,,θ(t))=K∑k=1N∑i=1log(Pk⋅N(X|μk,Σk))⋅P(Zi=Ck|Xi,,θ(t))(Zi=Ck)=K∑k=1N∑i=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$并没有什么关系。所以,可以被我们直接忽略掉。所以,求解问题,可以被我们描述为: |
使用拉格朗日算子法,我们可以写成:
L(P,λ)=K∑k=1N∑i=1logPk⋅P(Zi=Ck|Xi,θ(t))+λ(K∑k=1Pk−1)所以,我们可以轻易的得到λ=−N,所以有
P(t+1)K=1NN∑i=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算法里面我们就可以搞定了呢?我们来对比一下两个方法中,需要计算极值的公式。
K∑k=1N∑i=1(logPk+logN(Xi|μk,Σk))⋅P(Zi=Ck|Xi,θ(t))极大似然估计一开始计算的就是P(X),而EM算法中并没有出现有关P(X)的计算,而是全程计算都是P(X,Z)。而P(X)实际上就是P(X,Z)的求和形式。所以,每次单独的考虑P(X,Z)就避免了在log函数中出现求和操作。
-
Previous
Gaussian_Mixture_Model_02_Maximum_Likelihood_Estimation -
Next
Markov_Chain_Monte_Carlo_01_Sampling_Method