EM算法
主要解决含有隐变量(latent variable)的参数估计问题。
一般求解参数我们会使用极大似然估计(MLE),即对于条件概率
P
(
x
∣
θ
)
P(x| \theta)
P(x∣θ),通过
θ
M
L
E
=
arg max
θ
log
P
(
x
∣
θ
)
\theta_{MLE} = \argmax_{\theta}\log P(x|\theta)
θMLE=θargmaxlogP(x∣θ),来求解参数。但对于高斯混合模型这种带有隐变量的复杂的模型,无法直接通过MLE进行参数求解,需要通过EM算法进行迭代的更新,进而得到最优的
θ
\theta
θ。
EM算法主要公式:
θ
t
+
1
=
arg max
θ
∫
z
log
P
(
x
,
z
∣
θ
)
⋅
P
(
z
∣
θ
t
,
x
)
d
z
\theta^{t+1}=\argmax_\theta\int_z\log P(x,z|\theta)\cdot P(z|\theta^{t},x)dz
θt+1=θargmax∫zlogP(x,z∣θ)⋅P(z∣θt,x)dz
其中 z z z为隐变量, P ( z ∣ θ t , x ) P(z|\theta^{t},x) P(z∣θt,x)为其后验分布。上式右端亦可写作对期望 E z ∣ θ t , x ( log P ( x , z ∣ θ ) ) \mathbb{E}_{z|\theta^t,x}(\log P(x,z|\theta)) Ez∣θt,x(logP(x,z∣θ))进行最大化。
EM算法收敛性证明
要证明EM算法的收敛性,需证明每次迭代后
P
(
x
∣
θ
)
P(x|\theta)
P(x∣θ)均变大,即
log
P
(
x
∣
θ
t
+
1
)
⩾
log
P
(
x
∣
θ
t
)
\log P(x|\theta^{t+1})\geqslant \log P(x|\theta^t)
logP(x∣θt+1)⩾logP(x∣θt)。两边同时对变量
(
z
∣
x
,
θ
t
)
(z|x,\theta^t)
(z∣x,θt)积分,其中右端为:
∫
z
log
P
(
x
∣
θ
t
)
P
(
z
∣
x
,
θ
t
)
d
z
=
log
P
(
x
∣
θ
t
)
\int_z\log P(x|\theta^t)P(z|x,\theta^t)dz=\log P(x|\theta^t)
∫zlogP(x∣θt)P(z∣x,θt)dz=logP(x∣θt)
左端为:
∫
z
log
P
(
x
∣
θ
t
+
1
)
P
(
z
∣
x
,
θ
t
)
d
z
=
∫
z
log
P
(
x
,
z
∣
θ
t
+
1
)
P
(
z
∣
x
,
θ
t
)
−
log
P
(
z
∣
x
,
θ
t
+
1
)
P
(
z
∣
x
,
θ
t
)
d
z
\begin{aligned} \int_z\log P(x|\theta^{t+1})P(z|x,\theta^t)dz&=\int_z\log P(x,z|\theta^{t+1})P(z|x,\theta^t)-\log P(z|x,\theta^{t+1})P(z|x,\theta^t)dz & \end{aligned}
∫zlogP(x∣θt+1)P(z∣x,θt)dz=∫zlogP(x,z∣θt+1)P(z∣x,θt)−logP(z∣x,θt+1)P(z∣x,θt)dz
对于第一项,由EM算法公式显然有
∫
z
log
P
(
x
,
z
∣
θ
t
+
1
)
P
(
z
∣
x
,
θ
t
)
d
z
≥
∫
z
log
P
(
x
,
z
∣
θ
t
)
P
(
z
∣
x
,
θ
t
)
d
z
\int_z\log P(x,z|\theta^{t+1})P(z|x,\theta^t)dz\ge\int_z\log P(x,z|\theta^{t})P(z|x,\theta^t)dz
∫zlogP(x,z∣θt+1)P(z∣x,θt)dz≥∫zlogP(x,z∣θt)P(z∣x,θt)dz。
而对于第二项,我们希望证得
∫
z
log
P
(
z
∣
x
,
θ
t
+
1
)
P
(
z
∣
x
,
θ
t
)
d
z
≤
∫
z
log
P
(
z
∣
x
,
θ
t
)
P
(
z
∣
x
,
θ
t
)
\int_z\log P(z|x,\theta^{t+1})P(z|x,\theta^t)dz\le\int_z\log P(z|x,\theta^{t})P(z|x,\theta^t)
∫zlogP(z∣x,θt+1)P(z∣x,θt)dz≤∫zlogP(z∣x,θt)P(z∣x,θt)
左减右得
∫
z
P
(
z
∣
x
,
θ
t
)
log
P
(
z
∣
x
,
θ
t
+
1
)
P
(
z
∣
x
,
θ
t
)
=
−
KL
(
P
(
z
∣
x
,
θ
t
)
∣
∣
P
(
z
∣
x
,
θ
t
+
1
)
)
≤
0
\int_zP(z|x,\theta^t)\log\frac{P(z|x,\theta^{t+1})}{P(z|x,\theta^t)}=-\textbf{KL }(P(z|x,\theta^t)||P(z|x,\theta^{t+1}))\le0
∫zP(z∣x,θt)logP(z∣x,θt)P(z∣x,θt+1)=−KL (P(z∣x,θt)∣∣P(z∣x,θt+1))≤0
至此,收敛性得证。
公式导出
EM算法主要有两步:
E-step:
P
(
z
∣
x
,
θ
t
)
→
P(z|x,\theta^t)\rightarrow
P(z∣x,θt)→
E
z
∣
θ
t
,
x
(
log
P
(
x
,
z
∣
θ
)
)
\mathbb{E}_{z|\theta^t,x}(\log P(x,z|\theta))
Ez∣θt,x(logP(x,z∣θ))
即根据更新得到的
θ
t
\theta^t
θt重新计算期望。
M-step:
θ
t
+
1
=
arg max
θ
∫
z
log
P
(
x
,
z
∣
θ
)
⋅
P
(
z
∣
θ
t
,
x
)
d
z
\theta^{t+1}=\argmax_\theta\int_z\log P(x,z|\theta)\cdot P(z|\theta^{t},x)dz
θt+1=θargmax∫zlogP(x,z∣θ)⋅P(z∣θt,x)dz
我们需要最大化
log
P
(
x
∣
θ
)
\log P(x|\theta)
logP(x∣θ),即
log
P
(
x
∣
θ
)
=
log
P
(
x
,
z
∣
θ
)
q
(
z
)
−
log
P
(
z
∣
x
,
θ
)
q
(
z
)
\log P(x|\theta) =\log\frac{P(x,z|\theta)}{q(z)}-\log\frac{P(z|x,\theta)}{q(z)}
logP(x∣θ)=logq(z)P(x,z∣θ)−logq(z)P(z∣x,θ)
两端同时对
q
(
z
)
q(z)
q(z)积分,即
∫
z
q
(
z
)
log
P
(
x
∣
θ
)
d
z
=
∫
z
(
q
(
z
)
log
P
(
x
,
z
∣
θ
)
q
(
z
)
−
q
(
z
)
log
P
(
z
∣
x
,
θ
)
q
(
z
)
)
d
z
=
ELBO
+
KL
(
q
(
z
)
∣
∣
P
(
z
∣
x
,
θ
)
)
≥
ELBO
\begin{aligned} \int_z q(z)\log P(x|\theta)dz&=\int_z \left(q(z)\log\frac{P(x,z|\theta)}{q(z)}-q(z)\log\frac{P(z|x,\theta)}{q(z)}\right)dz \\ &=\textbf{ELBO}+\textbf{KL}(q(z)||P(z|x,\theta)) \\ &\ge \textbf{ELBO} \end{aligned}
∫zq(z)logP(x∣θ)dz=∫z(q(z)logq(z)P(x,z∣θ)−q(z)logq(z)P(z∣x,θ))dz=ELBO+KL(q(z)∣∣P(z∣x,θ))≥ELBO
因此我们需要最大化
ELBO
\textbf{ELBO}
ELBO,上式取等条件为
q
(
z
)
=
P
(
z
∣
x
,
θ
t
)
q(z)=P(z|x,\theta^t)
q(z)=P(z∣x,θt),(此处先固定
θ
\theta
θ为上一次迭代的结果
θ
t
\theta^t
θt。则此时
EBLO
=
∫
z
P
(
z
∣
x
,
θ
t
)
log
P
(
x
,
z
∣
θ
)
P
(
z
∣
x
,
θ
t
)
d
z
\textbf{EBLO}=\int_zP(z|x,\theta^t)\log\frac{P(x,z|\theta)}{P(z|x,\theta^t)}dz
EBLO=∫zP(z∣x,θt)logP(z∣x,θt)P(x,z∣θ)dz
那么有
θ
t
+
1
=
arg max
θ
∫
z
log
P
(
x
,
z
∣
θ
)
⋅
P
(
z
∣
x
,
θ
t
)
d
z
\theta^{t+1} = \argmax_{\theta}\int_z\log P(x,z|\theta)\cdot P(z|x,\theta^t)dz
θt+1=θargmax∫zlogP(x,z∣θ)⋅P(z∣x,θt)dz
从而有EM算法的表达式。
广义EM
EM算法中 P ( z ∣ x , θ t ) P(z|x,\theta^t) P(z∣x,θt)可能无解析式,所以不能直接将 q ( z ) = P ( z ∣ x , θ t ) q(z)=P(z|x,\theta^t) q(z)=P(z∣x,θt),而在 θ \theta θ固定是情况下, p ( x ∣ θ ) p(x|\theta) p(x∣θ)也固定,因此我们需要降低 KL ( q ( z ) ∣ ∣ P ( z ∣ x , θ ) ) \textbf{KL}(q(z)||P(z|x,\theta)) KL(q(z)∣∣P(z∣x,θ))从而使得 EBLO \textbf{EBLO} EBLO变大。即先固定 θ \theta θ,令 q ( z ) = arg min q KL ( q ∣ ∣ p ) = arg max q ELBO q(z)=\argmin_q\textbf{KL}(q||p)=\argmax_q\textbf{ELBO} q(z)=qargminKL(q∣∣p)=qargmaxELBO
而后固定
q
q
q,令
θ
=
arg max
θ
ELBO
\theta=\argmax_{\theta}\textbf{ELBO}
θ=θargmaxELBO
故广义EM算法的形式为:
E-step:
q
t
+
1
=
arg max
q
ELBO
(
q
,
θ
t
)
q^{t+1}=\argmax_q\textbf{ELBO}(q,\theta^t)
qt+1=qargmaxELBO(q,θt)
M-step
p
t
+
1
=
arg max
q
ELBO
(
q
t
,
θ
)
p^{t+1}=\argmax_q\textbf{ELBO}(q^t,\theta)
pt+1=qargmaxELBO(qt,θ)