研究笔记 / 机器学习

机器学习-由浅入深学EM算法

机器学习

1. 最大似然估计到EM算法

之前在介绍《最大似然估计》中提到,MLE估计的目标是产生样本集合可能性最大的参数。其核心思想是在已知结果情况下,然后寻求使该结果出现的可能性最大的条件,并以此作为估计值。假设:要根据iris数据中的花蕊长度来估计花瓣的长度,我们可以利用最小二乘来估计参数。根据极大似然估计的定义,我们要获得产生样本可能性最大的参数θ\theta,则似然函数可以记为:

(θ)=i=1m12πσexp((y(i)θx)22σ)\ell(\theta)=\prod^m_{i=1} \frac{1}{\sqrt{2\pi}\sigma} exp(- \frac{(y^{(i)}-\theta x)^2}{2 \sigma})

由于线性回归服从独立同分布的假设,因此,我们可以忽略σ\sigma的影响,直接估计θ\theta

但是,我们假设如果知道不仅花蕊的长度与花瓣的长度有关,同时,花的种类对花瓣的长度有影响,即不同种类花的花瓣长度可能服从不同分布,我们仍然在独立同分布的假设下采用极大似然估计求解是不合适的。因为,不同种类花的花瓣与花蕊长度的误差项不服从同一正态分布,即不同分布的sigmasigma不同,因此,我们无法忽略该参数对目标函数的影响,需要同时估计两个参数θ\thetaσ\sigma。但是假设我们如果无法获知各个样本隶属的花的类别,即无法通过参数σ\sigma的先验知识估计参数σ\sigma,那么我们如何来估计花瓣的长度呢?

总结上面的问题,我们发现,(1)我们不知道每个样本隶属于的花的类别;(2)我们也不知道花瓣与花蕊的线性关系是什么。从数学角度考虑这些问题,可以映射成:(1)抽样样本不知道是从哪个分布抽取的;(2)每个分布下的参数是什么。

可以确认的是,只有当我们知道每个样本属于哪个分布,我们才会准确的估计每个分布下花瓣与花蕊长度的线性关系。但是,各个类别之间的样本混在一起,我们无法获知哪个样本属于哪个类别,所以就无法准确估计各分布的参数。反之,只有当我们获得各个分布参数的准确估计下,我们才能计算出各样本隶属于哪个类别。因此,无法直接采用极大似然估计求解。这个问题在数学上是一个典型的循环依赖问题,即“鸡生蛋,蛋生鸡”的问题。想要解决循环依赖问题,我们可以先给定任意一个参数θ\theta初始值,这样,通过初始值来估计参数σ\sigma,然后再用估计出的参数σ\sigma再次估计参数θ\theta,通过多次的循环迭代,最终收敛到一个最优解。

EM算法(Expectation Maximization)的核心思想就是这样,假设我们要估计初始状态未知的两个参数,同时两个参数间存在依赖关系,那么我们就可以先赋予其中一个参数初始值,得到另一个参数的估计值,然后在另一个参数估计值的基础上,重新估计第一个参数,直至收敛。在上面的问题中,如果我们先给出每个花的类别下花瓣和花蕊长度间的线性关系(θ\theta),那么我们可以根据θ\theta值计算每个样本可能属于的花的类别(花瓣长度和花蕊长度的线性误差小的类别),这个过程在EM算法中属于Expectation步骤。通过Expectation步,每个样本都有所属类别,这样我们就可以将样本分成几部分,然后采用极大似然估计的思想,对每个部分中的样本重新估计参数,即估计各类别下花瓣和花蕊长度间的线性关系,这个就是EM算法中的Maximization步骤。如此迭代,直至各个参数不在发生变化即可停止迭代。

一般情况下,我们把每个样本隶属于哪种花对应的参数称为隐含变量,因为,如果没有隐含变量的话,我们可以很直观的求解待估计参数,当存在隐含变量后,本来很简单求解的问题变得复杂。因此,EM算法存在的意义就在于此,可用于包含隐含变量的参数估计。但是,按照最大似然的思想,我们每次估计会使得目标函数上升,最终达到极值,而EM算法怎样保证算法收敛?怎样保证可以获得目标函数的极值?这些问题就必须从数学角度进行推导了~

2. EM算法原理

假设给定训练集X=x(1),x(2),,x(m)X={x^{(1)}, x^{(2)}, \ldots, x^{(m)}},我们希望求解包含隐含变量Zz(1),z(2),,z(m)Z={z^{(1)}, z^{(2)}, \ldots, z^{(m)}}的目标函数f(x,z;θ)f(x,z;\theta)中的参数θ\theta。根据最大似然估计,我们可以获得:

θ=argmaxθ(θ;X)=argmaxθlogZf(X,Z;θ)argmaxθi=1mlogz(i)f(x(i),z(i);θ)\theta=arg max_{\theta} \ell (\theta;X)= arg max_{\theta} log \sum_Z f(X,Z;\theta)=arg max_{\theta} \sum_{i=1}^m log \sum_{z^{(i)}} f(x^{(i)},z^{(i)};\theta)

对于上述公式,想要求解logZf(X,Z;θ)log \sum_Z f(X,Z;\theta)形式的极值往往非常困难,如果我们可以观察到隐藏变量zz的话,则可以消除\sum符号,这样求解极值就容易的多(采用梯度下降算法)。但实际上我们没法获得zz的分布或者zz值,只可能通过给定θ\theta的情况下,通过求解后验概率P(zx;θ)P(z|x;\theta)获得参数zz的估计值。

我们令L(θ)=logZP(X,Z;θ)L(\theta)=log \sum_Z P(X,Z;\theta),其中ZZ为隐含变量。很明显,求解该log嵌套\sum形式的极值很麻烦,因此不妨引入概率分布Q(Z)Q(Z),其中ZQ(Z)=1\sum_{Z} Q(Z)=1,且Q(Z)0Q(Z) \geq 0,得到:

L(θ)=logZP(X,Z;θ)=logZQ(Z)P(X,Z;θ)Q(Z)L(\theta)=log \sum_{Z} P(X,Z;\theta)=log \sum_{Z} Q(Z) \frac{P(X,Z;\theta)}{Q(Z)}

a. 离散变量的期望

对于P(X,Z;θ)Q(Z)\frac{P(X,Z;\theta)}{Q(Z)}而言,隐含变量ZZ为离散变量,如果我们假定Q(Z)Q(Z)正好是离散随机变量ZZ的概率分布函数,且Y=g(Z)=P(X,Z;θ)Q(Z)Y=g(Z)=\frac{P(X,Z;\theta)}{Q(Z)}为连续函数,那么:

E(Y)=E[g(Z)]=Zg(Z)Q(Z)E(Y)=E[g(Z)]=\sum_Z g(Z)Q(Z)

如果ZZ是连续随机变量,那么:

E(Y)=E[g(Z)]=g(Z)Q(Z)dZE(Y)=E[g(Z)]=\int^{\infty}_{-\infty} g(Z)Q(Z)dZ

所以:

L(θ)=logZQ(Z)P(X,Z;θ)Q(Z)=logEZ[g(Z)]=logEZ[P(X,Z;θ)Q(Z)]L(\theta)=log \sum_{Z} Q(Z) \frac{P(X,Z;\theta)}{Q(Z)}=log E_Z[g(Z)]=log E_Z [\frac{P(X,Z;\theta)}{Q(Z)}]

b. Jensen不等式

如果任意函数ff为凸函数,XX为随机变量,则E[f(X)]f(E[X])E[f(X)] \geq f(E[X]),若上式取等号当且仅当XX为常数,若任意函数ff为凹函数,则不等式反向。因为log函数为严格凹函数,所以对于任意分布QQ

L(θ)=logEZ[P(X,Z;θ)Q(Z)]EZ[logP(X,Z;θ)Q(Z)]L(\theta)=log E_Z [\frac{P(X,Z;\theta)}{Q(Z)}] \geq E_Z[log \frac{P(X,Z;\theta)}{Q(Z)}]

c. 凹函数的下界函数

对于任意凹函数ff,假设我们想求argmaxθf(θ)arg max_{\theta} f(\theta),对于一般优化算法而言,我们需要保证每次迭代得到的f(θt+1)f(\theta_{t+1})一定比f(θt)f(\theta_t)要大,这样才能保证优化过程呈单调逼近于极大值。

因此,如果对于任意tt次迭代,我们能找到f(θ)f(\theta)的下界函数gθt(θ)g_{\theta_t}(\theta),满足f(θ)gθt(θ)f(\theta) \geq g_{\theta_t}(\theta),且f(θt)gθt(θt)f(\theta_t) \geq g_{\theta_t}(\theta_t)那么令θt+1:=argmaxθgθt(θ)\theta_{t+1}:=arg max_{\theta} g_{\theta_t}(\theta),此时,gθt(θt+1)maxθgθt(θt)g_{\theta_t}(\theta_{t+1}) = max_{\theta} g_{\theta_t}(\theta_t),即会满足每次迭代成单调趋势:

f(θt+1)gθt(θt+1)gθt(θt)=f(θt)f(\theta_{t+1}) \geq g_{\theta_t}(\theta_{t+1}) \geq g_{\theta_t}(\theta_t)=f(\theta_t)

对于t1t+1次迭代,我们仍然可以找到函数gθt+1(θ)g_{\theta_{t+1}}(\theta),满足f(θt+2)gθt+1(θt+2)gθt+1(θt+1)=f(θt+1)f(\theta_{t+2}) \geq g_{\theta_{t+1}}(\theta_{t+2}) \geq g_{\theta_{t+1}}(\theta_{t+1})=f(\theta_{t+1}),据此计算出θt+2\theta_{t+2}

再回到EM算法中,如果我们可以找到L(θ)L(\theta)的下界函数,并且让不等式在θt\theta_t处取等号,即可使得每次迭代的目标函数更优。我们已知L(θ)EZ[logP(X,Z;θ)Q(Z)]L(\theta) \geq E_Z[log \frac{P(X,Z;\theta)}{Q(Z)}],所以可以看出EZ[logP(X,Z;θ)Q(Z)]E_Z[log \frac{P(X,Z;\theta)}{Q(Z)}]为下界函数,但是我们还要让下界函数在θ=θt\theta=\theta_t处取等号,即要求P(X,Z;θ)Q(Z)\frac{P(X,Z;\theta)}{Q(Z)}为常数。若要使得Q(Z)P(X,Z;θt)Q(Z) \propto P(X,Z;\theta_t),且Q(Z)=1\sum Q(Z) = 1,则根据全概率公式可知,仅当Q(Z)=P(X,Z;θt)ZP(X,Z;θt)=P(ZX;θt)Q(Z)=\frac{P(X,Z;\theta_t)}{\sum_Z P(X,Z;\theta_t)}=P(Z|X;\theta_t)时,满足Q(Z)Q(Z)P(X,Z;θt)P(X,Z;\theta_t)呈正比关系。

因此,我们令Q(Z)=P(ZX;θt)Q(Z)=P(Z|X;\theta_t),此时:

L(θ)EZ[logP(X,Z;θ)Q(Z)]EZQ=ZX;θt[logP(X,Z;θ)P(ZX;θt)]L(\theta) \geq E_Z[log \frac{P(X,Z;\theta)}{Q(Z)}] = E_{Z \sim Q = Z|X;\theta_t} [log \frac{P(X,Z;\theta)}{P(Z|X;\theta_t)}]

显然,上式在θ=θt\theta = \theta_t时,L(θt)EZX;θt[logP(X,Z;θt)P(ZX;θt)]=EZX;θt[logZP(X,Z;θt)]L(\theta_t) = E_{Z|X;\theta_t} [log \frac{P(X,Z;\theta_t)}{P(Z|X;\theta_t)}] = E_{Z|X;\theta_t} [log \sum_Z P(X,Z;\theta_t)]可以取等号。

综上所述,EZX;θt[logP(X,Z;θ)P(ZX;θt)]E_{Z|X;\theta_t} [log \frac{P(X,Z;\theta)}{P(Z|X;\theta_t)}]L(θ)L(\theta)的下界函数,我们可以通过每次迭代计算找到满足

θt+1:=argmaxθEZX;θt[logP(X,Z;θ)P(ZX;θt)]\theta_{t+1} := arg max_{\theta} E_{Z|X;\theta_t} [log \frac{P(X,Z;\theta)}{P(Z|X;\theta_t)}]

d. θ\theta更新公式推导

找到目标函数的下界函数gθt(θ)g_{\theta_t}(\theta)后,我们可以通过更新θt+1:=argmaxθgθt(θ)\theta_{t+1}:=arg max_{\theta} g_{\theta_t}(\theta)实现每次的迭代,并可以保证迭代过程呈单调变化趋势,最终收敛。

我们可以再对更新公式进行变换,使得计算更为简便:

θt+1=argmaxgθt(θ)=argmaxEZX;θt[logP(X,Z;θ)P(ZX;θt)]=argmaxZP(ZX;θt)logP(X,Z;θ)P(ZX;θt)=argmaxZ[P(ZX;θt)logP(X,Z;θ)P(ZX;θt)logP(ZX;θt)](θ无关)=argmaxZ[P(ZX;θt)logP(X,Z;θ)=argmaxEZX;θtlogP(X,Z;θ)\theta_{t+1} = arg max g_{\theta_t} (\theta) \\ = arg max E_{Z|X;\theta_t} \, [log \frac{P(X,Z;\theta)}{P(Z|X;\theta_t)}] \\ = arg max \sum_Z P(Z|X;\theta_t) log \frac{P(X,Z;\theta)}{P(Z|X;\theta_t)} \\ = arg max \sum_Z [P(Z|X;\theta_t)logP(X,Z;\theta) - P(Z|X;\theta_t)log P(Z|X;\theta_t)] \, (\because 与 \theta无关) \\ = arg max \sum_Z [P(Z|X;\theta_t)logP(X,Z;\theta) \\ = arg max E_{Z|X;\theta_t} log P(X,Z;\theta) 。

3. EM算法过程

根据上面的推导过程,我们可以定义EM算法的Expectation步和Maximization步。

Repeat until converge{

  1. E-step:计算P(ZX;θt)P(Z|X;\theta_t)得到下界函数
L(θ)=EZX;θtlogP(X,Z;θ)=ZP(ZX;θt)logP(X,Z;θ)L(\theta)=E_{Z|X;\theta_t} \, \, log P(X,Z;\theta)=\sum_Z P(Z|X;\theta_t) log P(X,Z;\theta)
  1. M-step:更新θ\theta
θt+1:=argmaxθEZX;θtlogP(X,Z;θ)\theta_{t+1} := arg max_{\theta} E_{Z|X;\theta_t} \, \, log P(X,Z;\theta)

4. 总结

总的来说,Expectation Maximization算法是一个比较难懂的算法,中间的推导过程较为复杂,可能学习一遍两遍很难把这个算法吃透,需要比较深入的统计学知识才能搞明白,这篇博文也写了三天才把算法原理过程写完。

EM算法是用于对含有隐含变量的目标函数做最大似然估计的一种方法。EM算法的应用特别广泛,例如,Kmeans聚类,高斯混合模型,隐马尔可夫模型等。后面的博文我会专门撰写一篇EM算法实例,用于具体说明EM算法求解过程。