最近一直在B站上看一个UP主的机器学习白板推导,感觉很有益处,因为之前看过的各种博客似乎都一直强调对EM算法的感性认识,缺少了很多的推导过程。我想,要完全理性地了解这个算法,还是要一步一步地通过推导。
主要参考资料:白板推导视频
以下所有推导公式都是latex手打。
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=i∑nlog(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(xi−Xˉ)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)] Ez∣x,θ(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)=θargmaxEz∣x,θ(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)=θargmax∫zlogP(x,z∣θ)⋅P(z∣x,θ(t))dz
= arg max θ E z ∣ x , θ ( t ) [ log P ( x , z ∣ θ ) ] =\argmax_{\theta}E_{z|x,\theta^{(t)}}[\log P(x, z| \theta)] =θargmaxEz∣x,θ(t)[logP(x,z∣θ)]
实际上我们要证明的是下式,也就是说在不断迭代的过程中,对数似然在不断增加。
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(z∣x,θ(t))dz=−logP(x∣θ)=logP(z∣x,θ)P(x,z∣θ)logP(x,z∣θ)−logP(z∣x,θ)∫z[logP(x,z∣θ)]P(z∣x,θ(t))dz∫z[logP(z∣x,θ)]P(z∣x,θ(t))dz
最后一步是对左右两边同时求 E z ∣ x , θ E_{z|x,\theta} Ez∣x,θ期望。左边由于 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(z∣x,θ(t))dz∫z[logP(z∣x,θ(t))]P(z∣x,θ(t))dz∫z[logP(x,z∣θ(t+1))]P(z∣x,θ(t))dz∫z[logP(z∣x,θ(t+1))]P(z∣x,θ(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)=θargmax∫zlogP(x,z∣θ)⋅P(z∣x,θ(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(z∣x,θ(t))dz≥∫zlogP(x,z∣θ(t))⋅P(z∣x,θ(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(z∣x,θ(t))]P(z∣x,θ(t))dz+∫z[logP(z∣x,θ(t+1))]P(z∣x,θ(t))dz=∫zP(z∣x,θ(t))logP(z∣x,θ(t))P(z∣x,θ(t+1))dx=−KL(P(z∣x,θ(t))∣∣P(z∣x,θ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算法的收敛性证明到此。