最大期望算法(EM)

1. 数学基础

1.1 最大似然估计

当我们从一个总体中拿到了 nn 个样本的时候,我们可以认为,我们之所以取到了它们,是因为它们出现的概率比较大. 并且,我们已知它的概率分布模型,但是不知道其中的一个参数 θ\theta.这时候我们可以把 θ\theta 设为变量,因为样本显然是独立同分布的(这跟废话一样,从同一个总体中取出的样本,肯定是同分布的),所以取到这个样本序列的概率理所当然地等于分别取到每一个值的概率之积,即

P=i=1nf(xi;θ)P = \prod_{i=1}^{n}f(x_i;\theta)

其中f(xi;θ)f(x_i;\theta) 表示当参数取值为 θ\theta 的时候,模型的概率密度函数在 xix_i 处的取值.

当我们把样本值(x1,x2,,xn)(x_1, x_2,\cdots, x_n)代入进去,那么 PP 就是关于 θ\theta 的一元函数. 但既然是函数,我们就要用函数的方法表示它.我们将这个函数记为 L(θ)L(\theta),叫做样本的 似然函数

刚才我们提到,我们认为取到这个样本序列的原因是它们出现的概率比较大.那么我们就干脆让上面这个样本序列的概率,也就是似然函数,达到最大值. 这个最大值的意义是,未知参数 θ\theta 的取值要能够让取到这个样本序列的概率尽可能地大

通过求一个函数导数的零点来求它的极值,这是坠吼的!所以我们对L(θ)L(\theta)求导,令dL(θ)dθ=0\frac{dL(\theta)}{d\theta}=0即可.但是前面也说过了,L(θ)L(\theta)是个连乘函数,一弄不好就搞个 nn 次方,实在是太坑爹了.如果能把乘法变成加法,那就好得多了.那么如何把乘法变加法呢?没错,取对数.然而问题来了,取了对数,又怎么保证取了对数的函数和原函数有相同的极值点呢?这个是可以推出来的:由复合函数的求导公式可得dlnL(θ)dθ=dlnθdθdL(θ)dθ=1θdL(θ)dθ\frac{d\ln L(\theta)}{d\theta} = \frac{d\ln \theta}{d\theta} \frac{dL(\theta)}{d\theta} = \frac{1}{\theta} \frac{dL(\theta)}{d\theta}, 因此 lnL(θ)\ln L(\theta)L(θ)L(\theta) 具有相同的增减性. 因此,问题转换为求方程 dlnL(θ)dθ=0\frac{d\ln L(\theta)}{d\theta} = 0 的解.解得的 θ\theta 就是要求的参数. 求得的估计量 θ^\hat{\theta} 叫做最大似然估计量.

当参数有多个时,比如正态分布有两个参数 μ\muσ\sigma,我们就把导数变成偏导数,方程变为方程组.当有 nn 个参数θ1,θ2,,θn\theta_1, \theta_2,\cdots,\theta_n 的时候,方程组变为

{lnL(θ)θ1=0lnL(θ)θ2=0lnL(θ)θn=0\begin{cases} \cfrac{\partial \ln L(\boldsymbol{\theta})}{\partial \theta_1} &= 0 \\ \cfrac{\partial \ln L(\boldsymbol{\theta})}{\partial \theta_2} &= 0 \\ &\vdots\\ \cfrac{\partial \ln L(\boldsymbol{\theta})}{\partial \theta_n} &= 0 \\ \end{cases}

解这个方程组即可.

1.2 琴生不等式

琴生不等式属于凸优化的领域.我们介绍一下它的内容:

如果一个函数f(x)f(x)是凸函数,那么

λ1,λ2,...λn>0,i=1nλi=1    f(i=1nλixi)i=1nf(λixi). \forall \lambda_1, \lambda_2, ... \lambda_n > 0,\\ \sum_{i=1}^{n} \lambda_i = 1 \implies f(\sum_{i=1}^{n} \lambda_i x_i) \le \sum_{i=1}^{n} f(\lambda_i x_i).

如果是在概率论领域,那么可以把XXf(x)f(x)看做离散型随机变量,xix_if(xi)f(x_i)是可以取到的值,而λi\lambda_i是取到xix_if(xi)f(x_i)的概率,那么上面的不等式就写成

f[E(X)]E[f(x)].f[E(X)] \le E[f(x)].

从几何角度来理解,不等式的含义是,过凸函数任意两点的线段,都包含在该凸函数的上境图中.(上境图是指函数曲线正上方的点集)

下面我们分别从数学分析和概率论的角度来证明这个不等式.

数学分析方法

如果f(x)二阶可导,那么先令x0=i=1nλixix_0 = \sum_{i=1}^{n}\lambda_i x_i,在x0x_0点进行泰勒展开可得

f(x)=10!f(x0)+11!f(x0)+12!f(ξ)(xx0)2=f(x0)+f(x0)(xx0)+12!f(ξ)(xx0)2\begin{aligned}f(x) &= \frac{1}{0!}f(x_0) + \frac{1}{1!}f'(x_0)+\frac{1}{2!}f''(\xi)(x-x_0)^2\\ &= f(x_0) + f'(x_0)(x-x_0) + \frac{1}{2!}f''(\xi)(x-x_0)^2 \end{aligned}

其中12!f(ξ)(xx0)2\frac{1}{2!}f''(\xi)(x-x_0)^2是拉格朗日余项,ξ\xixxx0x_0 之间.

凸函数的二阶导数大于零,所以 12!f(ξ)(xx0)20\frac{1}{2!}f''(\xi)(x-x_0)^2 \ge 0,因此有

f(x)f(x0)+f(x0)(xx0)f(xi)f(x0)+f(x0)(xix0)λif(xi)λif(x0)+λif(x0)(xix0)i=1nλif(xi)i=1nλif(x0)+i=1nλif(x0)(xix0)(注意i=1nλi=1)=f(x0)+f(x0)(i=1nλixii=1nλix0)=f(x0)+f(x0)(i=1nλixix0)先前定义了(x0=i=1nλixi)=f(x0)=f(i=1nλixi)\begin{aligned} f(x) &\ge f(x_0) + f'(x_0)(x-x_0)\\ f(x_i) &\ge f(x_0) + f'(x_0)(x_i-x_0)\\ \lambda_i f(x_i) &\ge \lambda_i f(x_0) + \lambda_i f'(x_0)(x_i-x_0)\\ \sum_{i=1}^{n} \lambda_i f(x_i) &\ge \sum_{i=1}^{n}\lambda_i f(x_0) + \sum_{i=1}^{n}\lambda_i f'(x_0)(x_i-x_0)\\ \begin{matrix}(\text{注意}\sum_{i=1}^{n}\lambda_i = 1)& & \end{matrix} & =f(x_0) + f'(x_0)(\sum_{i=1}^{n}\lambda_i x_i - \sum_{i=1}^{n} \lambda_i x_0)\\ &=f(x_0) + f'(x_0)(\sum_{i=1}^{n}\lambda_i x_i - x_0)\\ \begin{matrix}\text{先前定义了}(x_0 = \sum_{i=1}^{n}\lambda_i x_i) & & \end{matrix} & = f(x_0) = f(\sum_{i=1}^{n}\lambda_i x_i) \end{aligned}

证毕.

概率论方法

凸函数有一条性质:过凸函数一点的切线不在凸函数图象的上方.

已知XX的期望E(X)=i=1nλixiE(X) = \sum_{i=1}^{n}\lambda_i x_i,过(E(X),f[E(X)])(E(X),f[E(X)])做函数切线(x)=ax+b\ell(x)=ax+b,易得

f(x)(x)    E[f(X)]E[(X)]=aE(X)+b=[E(x)]=f[E(X)].\begin{aligned} f(x)\ge \ell(x) \iff E[f(X)] &\ge E[\ell(X)] = aE(X) + b = \ell[E(x)] = f[E(X)]. \end{aligned}

证毕.

2. 最大期望算法

2.1 引入

以三硬币模型为例,介绍最大期望算法的使用场景.

我们指定一个游戏规则:A,B,CA,B,C是三枚硬币,正面朝上的概率各不相同(π,p,q\pi, p, q).如果抛AA的结果是正面,则抛BB;否则抛CC. 正面记作 1,反面记作0. 用数学语言描述,是这样的:

AB(n,π),BB(n,p),CB(n,q).A\sim B(n,\pi), B\sim B(n, p), C\sim B(n,q).

根据以上的游戏规则,我们定义最终抛出来的正反面值随机变量为 YY,抛出硬币 AA 的正反面值随机变量是 ZZ,这个游戏的参数θ=(π,p,q)\theta=(\pi,p,q).

现在我们添加一个条件:ZZ的值和参数θ\theta都是不可见的,这好比另一个人在另一个屋子里抛硬币,每次只告诉你这次抛出 00 还是 11,却不告诉你他抛的是 BB 还是 CC.

这是我们生活中经常遇到的问题类型. 我们知道未知参数π\pi的分布模型(二项分布),但是我们不知道它的参数. 如果我们能拿到数据的话,就可以用最大似然估计来估计参数,但是我们连数据也没有,只有一些不由这个变量所唯一决定的数据(在这个模型中,就是我们最终抛出的结果). 另外,有些时候我们还需要知道 ppqq,但这些问题都可以归为一类.

现在我们想根据那个人给出的试验数据,来估计变量ZZ满足的分布模型(二项分布)中未知参数 π,p,q\pi,p,q ,也就是 θ\theta. 这是一个很复杂的过程,我们先从头开始分析.

首先,令 YY 的一个可以取到的值为 yy,则有

P(y;θ)=zP(y,z;θ)=zP(z;θ)P(yz;θ)=πpy(1p)(1y)+(1π)qy(1q)(1y)\begin{aligned} P(y;\theta) &= \sum_z P(y,z; \theta) = \sum_z P(z;\theta)P(y|z;\theta)\\ &= \pi p^y (1-p)^{(1-y)} + (1-\pi) q^y (1-q)^{(1-y)} \end{aligned}

解释一下这个公式. 因为我们不知道这一次试验的 zz 是多少,所以对于每一种可能取到的 zz 值,都要计算“取到 yy ”和“取到这个 zz ”两个事件同时发生的概率. 考虑到所有可能的 zz 的取值之后,再将这些计算出的概率求和.

从一个数据点推广到数据序列,也是一样的.

令观测数据Y=(Y1,Y2,,Yn)TY=(Y_1,Y_2,\cdots,Y_n)^T,隐藏的数据Z=(Z1,Z2,,Zn)TZ=(Z_1,Z_2,\cdots,Z_n)^T我们得到公式

P(Y;θ)=ZP(Z;θ)P(YZ;θ).P(Y;\theta) = \sum_Z P(Z;\theta)P(Y|Z;\theta).

显然似然函数

L(θ)=P(Y;θ)=j=1n[πpyj(1p)1yj+(1π)qyj(1q)1yj].L(\theta)=P(Y;\theta)=\prod_{j=1}^{n}\bigl[ \pi p^{y_j} (1-p)^{1-y_j}+(1-\pi) q^{y_j} (1-q)^{1-y_j} \bigr].

这个函数是没有解析解的.那么我们该怎么解决这个问题呢?此时就应该请出 EM 算法了.

世界上没有十全十美的事情.即使是EM算法,也算不出它的解析解.但是它可以通过迭代的方式使得解逐渐趋于局部最优.

2.2 算法需求及推导

EM,EM,顾名思义,一个 E(Expectation,期望) 一个 M(Maximization,最大化).算法的迭代部分也主要由这两步组成.

上面的方程里,如果θ\theta是已知的,那么求ZZ的期望就很容易;如果ZZ是已知的,那么用最大似然估计求θ\theta也很简单.所以EM算法的思想是:先选定一个初始的θ0\theta_0,用它来求ZZ期望,把它当作ZZ;然后用这个ZZ放到公式里求θ\theta最大似然估计,得到新θ\theta.周而复始,直到结果收敛为止.

还要说明一点,很多时候,我们不求ZZ的期望,而是去求ZZ基于θ\theta的概率分布P(ZY;θ)P(Z|Y;\theta)的期望.目的都是为了用它求θ\theta的最大似然估计.

下面我们主要说说为什么要用 P(ZY;θ)P(Z|Y;\theta) 的期望来估计 θ\theta

推导

现在我们把问题抽象一下:我们要求似然函数

L(θ)=log(Yθ)=logZP(Y,Z;θ)\begin{aligned} L(\theta) &= \log(Y|\theta) = \log\sum_Z P(Y,Z;\theta) \end{aligned}

的极大值,来进行极大似然估计.

要通过迭代的方法,使得新的θ\theta能让L(θ)>L(θ(i))L(\theta)>L(\theta^{(i)}),因此要求 argmaxθ(L(θ)L(θ(i))\arg \max_\theta \left(L(\theta) - L(\theta^{(i)}\right)

我们遇到的主要困难是上式中的隐变量ZZ,以及给求导造成困难的和(或积分)的对数.

先写出

(L(θ)L(θ(i))=logZP(Y,Z;θ)logP(Y;θ)P(ZY;θ(i)),变形.注意到ZP(ZY;θ(i))=1=log[ZP(ZY;θ(i))P(Y,Z;θ)P(ZY;θ(i))]logP(Y;θ)应用琴生不等式ZP(YZ;θ(i))logP(Y,Z;θ)P(ZY;θ(i))logP(Y;θ)=ZP(YZ;θ(i))logP(Y,Z;θ)P(ZY;θ(i))P(Y;θ(i))\begin{aligned} \left(L(\theta) - L(\theta^{(i)}\right) &= \log \sum_Z {\rm P}(Y,Z;\theta) - \log {\rm P}(Y;\theta)\\ \begin{matrix} \text{乘}{\rm P}(Z|Y;\theta^{(i)})\text{,变形.}\\ \text{注意到}\sum_ZP(Z|Y;\theta^{(i)})=1\text{.}& & \end{matrix} &=\log\left[\sum_ZP(Z|Y;\theta^{(i)})\frac{{\rm P}(Y,Z;\theta)}{{\rm P}(Z|Y;\theta^{(i)})}\right] - \log{\rm P}(Y;\theta)\\ \begin{matrix}\text{应用琴生不等式}& & \end{matrix} &\ge \sum_Z P(Y|Z;\theta^{(i)})\log\frac{{\rm P}(Y,Z;\theta)}{{\rm P}(Z|Y;\theta^{(i)})} - \log{\rm P}(Y;\theta)\\ &= \sum_Z P(Y|Z;\theta^{(i)})\log\frac{{\rm P}(Y,Z;\theta)}{{\rm P}(Z|Y;\theta^{(i)}){\rm P}(Y;\theta^{(i)})} \end{aligned}

所以我们找到了 L(θ)L(\theta) 的下界.令下界

B(θ,θ(i))=^L(θ(i))+ZP(YZ;θ(i))logP(Y,Z;θ)P(ZY;θ(i))P(Y;θ(i)).B(\theta,\theta^{(i)}) \hat{=} L(\theta^{(i)}) + \sum_Z P(Y|Z;\theta^{(i)})\log\frac{{\rm P}(Y,Z;\theta)}{{\rm P}(Z|Y;\theta^{(i)}){\rm P}(Y;\theta^{(i)})}.

另外把θ=θ(i)\theta=\theta^{(i)}带入B(θ,θ(i))B(\theta,\theta^{(i)})得到L(θ)=B(θ,θ(i))L(\theta)=B(\theta,\theta^{(i)})

所以对于任意的θ\theta满足B(θ,θ(i))B(\theta,\theta^{(i)}),都有L(θ)>L(θ(i))L(\theta) >L(\theta^{(i)}).也就是说,若θ\theta可以使B(θ,θ(i))B(\theta,\theta^{(i)})增大,则θ\theta也可以使 L(θ)L(\theta)增大.注意θ\theta可使B(θ,θ(i))B(\theta,\theta^{(i)})减小时,L(θ)L(\theta)不一定减小.

为了使L(θ)L(\theta)尽可能大,我们可以使B(θ,θ(i))B(\theta,\theta^{(i)})达到极大.求Bθ\frac{\partial B}{\partial \theta}时,θ(i)\theta^{(i)}可看作常数而被省去.故有

θ(i+1)=argmaxθB(θ,θ(i))=argmaxθ(L(θ(i))+ZP(YZ;θ(i))logP(Y,Z;θ)P(ZY;θ(i))P(Y;θ(i)))=argmaxθ(ZP(ZY;θ(i))logP(Y,Z;θ))=argmaxθEZ[logP(Y,Z;θ)Y;θ]\begin{aligned} \theta^{(i+1)} &= \arg\max_\theta B(\theta,\theta^{(i)})\\ &= \arg\max_\theta \left( L(\theta^{(i)}) + \sum_Z P(Y|Z;\theta^{(i)})\log\frac{{\rm P}(Y,Z;\theta)}{{\rm P}(Z|Y;\theta^{(i)}){\rm P}(Y;\theta^{(i)})} \right)\\ &= \arg\max_\theta \left( \sum_Z P(Z|Y;\theta^{(i)})\log P \left(Y,Z;\theta \right) \right)\\ &= \arg\max_\theta E_Z\left[\log P(Y,Z;\theta)|Y;\theta\right] \end{aligned}

Q(θ,θ(i))=EZ[logP(Y,Z;θ)Y;θ]Q(\theta,\theta^{(i)}) = E_Z\left[\log P(Y,Z;\theta)|Y;\theta\right]

则我们就求 argmaxθQ(θ,θ(i))\arg \max_\theta Q(\theta,\theta^{(i)}),即可得到新的 θ\theta

在该公式里面的Q(θ,θ(i))Q(\theta,\theta^{(i)})函数是这样的形式:

Q(θ(i),θ(i+1))=EZ[logP(Y,Z;θ)Y,θ(i)]Q(\theta^{(i)},\theta^{(i+1)}) = E_Z\bigl[\log P(Y,Z;\theta)|Y,\theta^{(i)}\bigr]

它的意思是:在给定观测数据YY和当前参数θ(i)\theta^{(i)}的情况下,logP(Y,Z;θ)\log P(Y,Z;\theta)的期望.

至于公式的展开,首先让我们复习一下离散随机变量的期望公式:E(X)=xXxp(x)E(X)=\sum_{x\in X} x\cdot p(x).所以

Zlog(P(Y,Z;θ)P(ZY;θ(i)))=EZ[logP(Y,Z;θ)Y;θ]\sum_Z \log \left(P(Y,Z;\theta)P(Z|Y;\theta^{(i)})\right) = E_Z\left[\log P(Y,Z;\theta)|Y;\theta\right]

也就是理所当然了.

总之,求Q(θ,θ(i))Q(\theta, \theta^{(i)})就是 E 步骤,求argmaxθQ(θ,θ(i))\arg \max_\theta Q(\theta,\theta^{(i)})就是 M 步骤.

2.3 算法描述

当结果不收敛时,循环以下两步

{

(当前步骤计数为ii,从00开始)

E 步骤: 以 θ(i)\theta^{(i)}YY 计算

Q(θ,θ(i))=EZ[logP(Y,Z;θ)Y,θ(i)]=Zlog(P(Y,Z;θ)P(ZY;θ(i))).\begin{aligned} Q(\theta,\theta^{(i)}) &= E_Z\bigl[\log P(Y,Z;\theta)|Y,\theta^{(i)}\bigr]\\ &= \sum_Z \log \left(P(Y,Z;\theta)P(Z|Y;\theta^{(i)})\right). \end{aligned}

其中P(ZY;θ(i))P(Z|Y;\theta^{(i)})是给定观测数据 YY 和 参数估计 θ(i)\theta^{(i)} 下,隐变量 ZZ 的条件概率分布;QQ函数的第一个变量是要求的参数,第二个变量是我们上一步估计的参数.

M 步骤: 求Q(θ,θ(i))Q(\theta,\theta^{(i)})关于参数θ\theta的最大似然估计,即

θ(i+1)=argmaxθQ(θ,θ(i)).\theta^{(i+1)}=\arg \max_\theta Q(\theta,\theta^{(i)}).

}

停止迭代的条件是,对较小的整数ε1,ε2\varepsilon_1, \varepsilon_2,满足 θ(i+1)θ(i)<ε1\lVert \theta^{(i+1)}-\theta^{(i)}\rVert<\varepsilon_1Q(θ(i+1),θ(i))Q(θ(i),θ(i))<ε2\lVert Q(\theta^{(i+1)},\theta^{(i)})-Q(\theta^{(i)},\theta{^(i)})\rVert<\varepsilon_2,则停止迭代.

2.4 算法分析

根据推导过程,我们只能保证当B(θ,θ(i))B(\theta,\theta^{(i)})增加时, L(θ)L(\theta) 一定增加.但是当 B(θ,θ(i))B(\theta,\theta^{(i)}) 达到极值,开始减小时,L(θ)L(\theta)不一定随之减小.换言之,二者同增不同减.也就是说,我们有可能忽略掉L(θ)L(\theta)的全局最优解,只选择了它的局部最优解.但其实这也是没办法的事情.如果可以在不穷举的情况下找到它的全局最优解,那也就证明了命题 P=NP{\rm P=NP}.然而人类到现在也没能证明或证伪这个命题.在数学家们摘取硕果之前,我们只能退而求其次了.


最大期望算法(EM)
http://blog.yotubird.club/posts/2017/27ca759e.html
作者
nqr
发布于
2017年11月4日
许可协议