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

EM算法公式推导

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

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

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

参数估计与EM算法

EM算法解决的其实是一个参数估计的问题。在普通的参数估计中
我们要做的其实是
θ = arg max P ( X θ ) \theta=\argmax P(X| \theta)
其中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)
log L ( X ; θ ) = i = i n log ( x i θ ) \log L(X;\theta) =\sum_{i=i}^n \log (x_i|\theta)
最后对 θ \theta 进行求导并为0,可以得到 θ ^ \hat{\theta} 关于 X X 的表达式。

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

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

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

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

所以在EM算法的整个过程大致就是:
先计算 Z Z 的期望 E z x , θ ( t ) [ log P ( X , Z θ ) ] E_{z|x,\theta^{(t)}}[\log P(X, Z | \theta)] ,也就是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)] ,也就是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

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

EM算法的收敛性证明

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

现在我们令 f ( x ) = log P ( x θ ) f(x)=\log P(x|\theta)
也即是要证明:
f ( θ ( t ) ) f ( θ ( t + 1 ) ) 0 f(\theta^{(t)})- f(\theta^{(t+1)})\leq 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}

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

一共有四项加减,我们证明第一项和第三项和小于等于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
所以
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

要注意 θ \theta θ ( t ) \theta^{(t)} 是不一样的, θ \theta 是一个变量,而在计算 θ ( t + 1 ) \theta^{(t+1)} θ ( t ) \theta^{(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

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

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

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

发布了9 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Code_Tookie/article/details/104245731