EM(Expectation Maximization) 算法推导(一)

EM算法公式推导

最近一直在B站上看一个UP主的机器学习白板推导,感觉很有益处,因为之前看过的各种博客似乎都一直强调对EM算法的感性认识,缺少了很多的推导过程。我想,要完全理性地了解这个算法,还是要一步一步地通过推导。

主要参考资料:白板推导视频

以下所有推导公式都是latex手打。

参数估计与EM算法

EM算法解决的其实是一个参数估计的问题。在普通的参数估计中
我们要做的其实是
θ = arg max ⁡ P ( X ∣ θ ) \theta=\argmax P(X| \theta) θ=argmaxP(Xθ)
其中X是现有的已知数据(观测变量),而 θ \theta θ则是参数,这个参数代表的可以只有一个参数,也可以是很多参数。

在概率统计中其实我们学过参数估计的方法,也就是矩估计法估计和极大似然估计。我们在实际中用的更多的是极大似然估计,在及算法的过程中常常有一个技巧,将连乘后的结果取log为底,这也就有了对数似然的这个概念。如下图所示:
L ( X ; θ ) = P ( x 1 ∣ θ ) ⋅ P ( x 2 ∣ θ ) ⋯ P ( x n ∣ θ ) L(X;\theta)=P(x_1|\theta)\cdot P(x_2|\theta) \cdots P(x_n|\theta) L(X;θ)=P(x1θ)P(x2θ)P(xnθ)
log ⁡ L ( X ; θ ) = ∑ i = i n log ⁡ ( x i ∣ θ ) \log L(X;\theta) =\sum_{i=i}^n \log (x_i|\theta) logL(X;θ)=i=inlog(xiθ)
最后对 θ \theta θ进行求导并为0,可以得到 θ ^ \hat{\theta} θ^关于 X X X的表达式。

回到EM算法,EM算法要解决的也就是一个参数估计的问题,但很多参数估计问题,你所知道的仅仅是观测变量,也就是 X X X,有很多问题还有隐变量(latent variables),这里用 Z Z Z来表示。

举个例子,在高斯分布中,如果要估计 μ \mu μ σ \sigma σ其实很简单,根据刚刚所给出的极大似然估计公式,可以得到 μ ^ = X ˉ \hat{\mu}=\bar{X} μ^=Xˉ σ ^ 2 = ∑ i = 1 n ( x i − X ˉ ) 2 \hat{\sigma}^2=\sum_{i=1}^{n}(x_i-\bar{X})^2 σ^2=i=1n(xiXˉ)2

但在也就是高斯混合模型 GMM中,我们得到了由这个分布生成了诸多数据X,求的是各个单独高斯模型的均值和方差,也就是 θ \theta θ但还有一个隐变量 Z Z Z我们是不知道的,也是生成 X X X这组数据的关键:每个点( x i x_i xi)到底是由哪一个高斯分布生成的。

所以,我们看似求的是 θ = arg max ⁡ P ( X ∣ θ ) \theta=\argmax P(X| \theta) θ=argmaxP(Xθ)
实际上求的是 θ = arg max ⁡ P ( X , Z ∣ θ ) \theta=\argmax P(X,Z| \theta) θ=argmaxP(X,Zθ)

所以在EM算法的整个过程大致就是:
先计算 Z Z Z的期望 E z ∣ x , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) ] E_{z|x,\theta^{(t)}}[\log P(X, Z | \theta)] Ezx,θ(t)[logP(X,Zθ)],也就是EM的E-step(Expectation)
再求得 θ ( t + 1 ) = arg max ⁡ θ E z ∣ x , θ ( t ) [ log ⁡ P ( X , Z ∣ θ ) ] \theta^{(t+1)}=\argmax _{\theta} E_{z|x,\theta^{(t)}} [\log P(X,Z | \theta)] θ(t+1)=θargmaxEzx,θ(t)[logP(X,Zθ)],也就是EM的M-step(Maximization)。
以此往复迭代,最后得到我们所要的 θ \theta θ

所以看出来了,EM是一个迭代算法,可以写出 θ \theta θ的迭代公式:

θ ( 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\left(z | x, \theta^{(t)}\right) d z θ(t+1)=θargmaxzlogP(x,zθ)P(zx,θ(t))dz

= arg max ⁡ θ E z ∣ x , θ ( t ) [ log ⁡ P ( x , z ∣ θ ) ] =\argmax_{\theta}E_{z|x,\theta^{(t)}}[\log P(x, z| \theta)] =θargmaxEzx,θ(t)[logP(x,zθ)]

EM算法的收敛性证明

实际上我们要证明的是下式,也就是说在不断迭代的过程中,对数似然在不断增加。
log ⁡ P ( x ∣ θ ( t ) ) ⩽ log ⁡ P ( x ∣ θ ( t + 1 ) ) \log P(x| \theta^{(t)}) \leqslant \log P\left(x | \theta^{(t+1)}\right) logP(xθ(t))logP(xθ(t+1))

现在我们令 f ( x ) = log ⁡ P ( x ∣ θ ) f(x)=\log P(x|\theta) f(x)=logP(xθ)
也即是要证明:
f ( θ ( t ) ) − f ( θ ( t + 1 ) ) ≤ 0 f(\theta^{(t)})- f(\theta^{(t+1)})\leq 0 f(θ(t))f(θ(t+1))0

f ( x ) = log ⁡ P ( x ∣ θ ) = log ⁡ P ( x , z ∣ θ ) P ( z ∣ x , θ ) = log ⁡ P ( x , z ∣ θ ) − log ⁡ P ( z ∣ x , θ ) ∫ z f ( x ) P ( z ∣ x , θ ( t ) ) d z = ∫ z [ log ⁡ P ( x , z ∣ θ ) ] P ( z ∣ x , θ ( t ) ) d z − ∫ z [ log ⁡ P ( z ∣ x , θ ) ] P ( z ∣ x , θ ( t ) ) d z \begin{aligned} f(x)=&\log P(x| \theta)=\log \frac{P(x,z|\theta)}{P(z|x,\theta)}\\ =&\log P(x,z|\theta)-\log P(z|x,\theta) \\ \int_zf(x)P(z|x,\theta^{(t)})dz =&\int_z[\log P(x,z|\theta)]P(z|x,\theta^{(t)})dz \\ -&\int_z [\log P(z|x,\theta)]P(z|x,\theta^{(t)})dz \\ \end{aligned} f(x)==zf(x)P(zx,θ(t))dz=logP(xθ)=logP(zx,θ)P(x,zθ)logP(x,zθ)logP(zx,θ)z[logP(x,zθ)]P(zx,θ(t))dzz[logP(zx,θ)]P(zx,θ(t))dz

最后一步是对左右两边同时求 E z ∣ x , θ E_{z|x,\theta} Ezx,θ期望。左边由于 f ( x ) f(x) f(x) z z z无关,所以积分后仍然为 f ( x ) f(x) f(x)

f ( θ ( t ) ) − f ( θ ( t + 1 ) ) = ∫ z [ log ⁡ P ( x , z ∣ θ ( t ) ) ] P ( z ∣ x , θ ( t ) ) d z − ∫ z [ log ⁡ P ( z ∣ x , θ ( t ) ) ] P ( z ∣ x , θ ( t ) ) d z − ∫ z [ log ⁡ P ( x , z ∣ θ ( t + 1 ) ) ] P ( z ∣ x , θ ( t ) ) d z + ∫ z [ log ⁡ P ( z ∣ x , θ ( t + 1 ) ) ] P ( z ∣ x , θ ( t ) ) d z \begin{aligned}f(\theta^{(t)})- f(\theta^{(t+1)})=&\int_z[\log P(x,z|\theta^{(t)})]P(z|x,\theta^{(t)})dz \\ -&\int_z [\log P(z|x,\theta^{(t)})]P(z|x,\theta^{(t)})dz \\ -&\int_z[\log P(x,z|\theta^{(t+1)})]P(z|x,\theta^{(t)})dz \\ +&\int_z [\log P(z|x,\theta^{(t+1)})]P(z|x,\theta^{(t)})dz \\ \end{aligned} f(θ(t))f(θ(t+1))=+z[logP(x,zθ(t))]P(zx,θ(t))dzz[logP(zx,θ(t))]P(zx,θ(t))dzz[logP(x,zθ(t+1))]P(zx,θ(t))dzz[logP(zx,θ(t+1))]P(zx,θ(t))dz

一共有四项加减,我们证明第一项和第三项和小于等于0,再证明第二项和第四项和小于等于0。
注意到 θ ( 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\left(z | x, \theta^{(t)}\right) d z θ(t+1)=θargmaxzlogP(x,zθ)P(zx,θ(t))dz
所以
∫ 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)}) \cdot P\left(z | x, \theta^{(t)}\right) dz \geq\int_{z} \log P(x, z | \theta^{(t)}) \cdot P\left(z | x, \theta^{(t)}\right) dz zlogP(x,zθ(t+1))P(zx,θ(t))dzzlogP(x,zθ(t))P(zx,θ(t))dz

要注意 θ \theta θ θ ( t ) \theta^{(t)} θ(t)是不一样的, θ \theta θ是一个变量,而在计算 θ ( t + 1 ) \theta^{(t+1)} θ(t+1) θ ( t ) \theta^{(t)} θ(t)是一个已知量(常量)。

再有
− ∫ z [ log ⁡ P ( z ∣ x , θ ( t ) ) ] P ( z ∣ x , θ ( t ) ) d z + ∫ z [ log ⁡ P ( z ∣ x , θ ( t + 1 ) ) ] P ( z ∣ x , θ ( t ) ) d z = ∫ z P ( z ∣ x , θ ( t ) ) log ⁡ P ( z ∣ x , θ ( t + 1 ) ) P ( z ∣ x , θ ( t ) ) d x = − K L ( P ( z ∣ x , θ ( t ) ) ∣ ∣ P ( z ∣ x , θ t + 1 ) ) ≤ 0 -\int_z [\log P(z|x,\theta^{(t)})]P(z|x,\theta^{(t)})dz +\int_z [\log P(z|x,\theta^{(t+1)})]P(z|x,\theta^{(t)})dz \\ =\int_zP(z|x,\theta^{(t)})\log \frac{P(z|x,\theta^{(t+1)})}{P(z|x,\theta^{(t)})}dx \\ =-KL(P(z|x,\theta^{(t)})||P(z|x,\theta^{t+1}))\leq0 z[logP(zx,θ(t))]P(zx,θ(t))dz+z[logP(zx,θ(t+1))]P(zx,θ(t))dz=zP(zx,θ(t))logP(zx,θ(t))P(zx,θ(t+1))dx=KL(P(zx,θ(t))P(zx,θt+1))0

也可以用Jensen Inequation来证明小于等于0。

综上,可以得到
f ( θ ( t ) ) − f ( θ ( t + 1 ) ) ≤ 0 f(\theta^{(t)})- f(\theta^{(t+1)})\leq 0 f(θ(t))f(θ(t+1))0
也就证明得到
log ⁡ P ( x ∣ θ ( t ) ) ⩽ log ⁡ P ( x ∣ θ ( t + 1 ) ) \log P(x| \theta^{(t)}) \leqslant \log P\left(x | \theta^{(t+1)}\right) logP(xθ(t))logP(xθ(t+1))

EM算法的收敛性证明到此。

你可能感兴趣的:(机器学习算法,机器学习,算法,人工智能,最大期望算法)