前言
EM算法和MLE算法的相同点在于,两者都需要知道确定的概率密度函数形式。
若没有隐藏变量,则可以用MLE进行估计。若数据欠缺,或存在隐含变量,则无法使用直接使用MLE进行估计,因此需要使用EM算法。
所谓的隐藏变量,指的是1. 在整个数据集中,有些数据是不完备的。2. 或者一个数学模型可以通过引入未知变量来简化。如:高斯混合模型引入权重变量。
什么时候使用EM算法
实际上,即使有隐藏变量,我们只不过多加一个参数来估计而已,因此理论上也可以使用MLE的方法进行估计,即:先求对数似然函数 log likelihood, 然后求导最大化这个对数似然函数。
之所以引入EM算法,更重要的是因为多了隐变量之后,log-likelihood虽然能写出来,但是求导麻烦了,因此不好优化了。
由于加了隐变量,我们估计模型参数时需要知道隐变量;而隐变量是不知道的,要想估计隐变量,又需要知道模型参数。因此看起来像是个死锁。总结来说,当Q函数比似然函数l好优化时,就可以用EM算法来求。[1]
那么EM算法是如何迭代的呢?我们可以先初始化模型参数和隐变量中的一个,然后用这个初始化的参数去估计第二个参数。然后用这个估计的第二个参数再去估计第一个参数。不断迭代,得到最终结果,且这种策略的收敛性得到了证明。
核心思想
EM算法的核心思想是:根据给定数据,迭代地使用最大似然估计方法(MLE)求得未知参数
[1].
基本流程
EM算法的大概流程是:1. 先根据估计的参数来求得对数似然函数(log likelihood)的期望, 这个期望还是一个函数 2. 然后再计算使该期望最大时新的参数。3. 不断迭代前两步直至收敛
实例分析
推导过程
MLE回顾
回顾MLE,对数似然函数可以写成如下形式:
l ( θ ) = ∑ i = 1 n log p ( x i ∣ θ ) l(\theta) = \sum_{i=1}^{n}\log p(x_i|\theta) l(θ)=i=1∑nlogp(xi∣θ)
其中 X = { x 1 , x 2 , . . . , x n } X=\{x_1, x_2, ..., x_n\} X={ x1,x2,...,xn}是观察数据。
EM
定义似然函数
相比于MLE,EM由于增加了隐随机变量 Z = { z 1 , z 2 , . . . , z n } Z=\{z_1, z_2, ..., z_n\} Z={ z1,z2,...,zn},则对数似然函数需要表示成如下形式:
l ( θ ) = ∑ i = 1 n log p ( x i ∣ θ ) = ∑ i = 1 n log ∑ z i = 1 k p ( z i ∣ θ ) p ( x i ∣ z i , θ ) = ∑ i = 1 n log ∑ z i = 1 k p ( x i , z i ∣ θ ) \begin{aligned} l(\theta) &= \sum_{i=1}^{n}\log p(x_i|\theta) \\ &= \sum_{i=1}^{n} \log \sum_{z_i=1}^{k}p(z_i|\theta)p(x_i|z_i, \theta)\\ &= \sum_{i=1}^{n}\log \sum_{z_i=1}^{k} p(x_i, z_i|\theta) \\ \end{aligned} l(θ)=i=1∑nlogp(xi∣θ)=i=1∑nlogzi=1∑kp(zi∣θ)p(xi∣zi,θ)=i=1∑nlogzi=1∑kp(xi,zi∣θ)
似然函数的近似
背景: 如果没有隐变量 Z Z Z, 则上述似然函数可以直接用MLE求解了。问题是 log \log log函数里面还有个求和公式,因此很难直接求解这个似然函数。一种思路就是通过一种技巧把 log \log log里面的求和公式干掉。
知识回顾:
- 对于离散型随机变量 X X X, 其期望为 E ( X ) = ∑ x ∈ X x P ( x ) E(X) = \sum_{x\in X} xP(x) E(X)=∑x∈XxP(x)
- 设Y = g(X), 则 E ( Y ) = ∑ x ∈ X g ( x ) P ( x ) E(Y)=\sum_{x\in X}g(x)P(x) E(Y)=∑x∈Xg(x)P(x)
- 由于 log ( x ) \log(x) log(x)是个凹函数,有 l o g ( E ( X ) ) ≥ E ( l o g ( X ) ) log(E(X))\ge E(log(X)) log(E(X))≥E(log(X)), 如图:
方法: 去除 log \log log函数里面的求和公式需要用到一些近似,具体放缩方式如下:
l ( θ ) = ∑ i = 1 n log ∑ z i = 1 k p ( x i , z i ∣ θ ) = ∑ i = 1 n log ∑ z i = 1 k Q i ( z i ) p ( x i , z i ∣ θ ) Q i ( z i ) ≥ ∑ i = 1 n ∑ z i = 1 k Q i ( z i ) log p ( x i , z i ∣ θ ) Q i ( z i ) \begin{aligned} l(\theta) &= \sum_{i=1}^{n}\log \sum_{z_i=1}^{k} p(x_i, z_i|\theta) \\ &= \sum_{i=1}^{n}\log \sum_{z_i=1}^{k} Q_i(z_i) \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \\ &\ge \sum_{i=1}^{n}\sum_{z_i=1}^{k} Q_i(z_i) \log \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \\ \end{aligned} l(θ)=i=1∑nlogzi=1∑kp(xi,zi∣θ)=i=1∑nlogzi=1∑kQi(zi)Qi(zi)p(xi,zi∣θ)≥i=1∑nzi=1∑kQi(zi)logQi(zi)p(xi,zi∣θ)
推导: 根据要点回顾,我们引入了随机变量 z i z_i zi 的分布 Q i ( z i ) Q_i(z_i) Qi(zi)。然后设
g ( z ) = p ( x i , z i ∣ θ ) Q i ( z i ) g(z)=\frac{p(x_i, z_i|\theta)}{Q_i(z_i)} g(z)=Qi(zi)p(xi,zi∣θ)
则似然函数中第二行的 ∑ z i = 1 k Q i ( z i ) p ( x i , z i ∣ θ ) Q i ( z i ) \sum_{z_i=1}^{k} Q_i(z_i) \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} ∑zi=1kQi(zi)Qi(zi)p(xi,zi∣θ)可看作 E ( g ( z ) ) E(g(z)) E(g(z)), 即
E z i ( p ( x i , z i ∣ θ ) Q i ( z i ) ) E_{z_i}\left (\frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \right) Ezi(Qi(zi)p(xi,zi∣θ))又根据对数函数的性质,有 l o g ( E ( X ) ) ≥ E ( l o g ( X ) log(E(X))\ge E(log(X) log(E(X))≥E(log(X), 则:
∑ i n l o g ( E z i ( p ( x i , z i ∣ θ ) Q i ( z i ) ) ) ≥ ∑ i n E z i ( l o g ( p ( x i , z i ∣ θ ) Q i ( z i ) ) ) \sum_{i}^{n}log\left( E_{z_i}\left (\frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \right) \right) \ge \sum_{i}^{n} E_{z_i}\left( log \left( \frac{p(x_i, z_i|\theta)}{Q_i(z_i)}\right) \right) i∑nlog(Ezi(Qi(zi)p(xi,zi∣θ)))≥i∑nEzi(log(Qi(zi)p(xi,zi∣θ)))
即:
∑ i = 1 n log ∑ z i = 1 k Q i ( z i ) p ( x i , z i ∣ θ ) Q i ( z i ) ≥ ∑ i = 1 n ∑ z i = 1 k Q i ( z i ) log p ( x i , z i ∣ θ ) Q i ( z i ) \sum_{i=1}^{n}\log \sum_{z_i=1}^{k} Q_i(z_i) \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \ge \sum_{i=1}^{n}\sum_{z_i=1}^{k} Q_i(z_i) \log \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} i=1∑nlogzi=1∑kQi(zi)Qi(zi)p(xi,zi∣θ)≥i=1∑nzi=1∑kQi(zi)logQi(zi)p(xi,zi∣θ)
推导完成。
似然函数的求解
这个不等式右边被称为 l ( θ ) l(\theta) l(θ)的下界,我们还需要确定下 Q i ( z i ) Q_i(z_i) Qi(zi)才能求解这个下界的最大值。求解过程如下:
若取到等号时我们的下界函数最接近原始函数,此时有:
p ( x i , z i ∣ θ ) Q i ( z i ) = c ( 常 数 ) \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} = c(常数) Qi(zi)p(xi,zi∣θ)=c(常数)
又因为 Q i ( z i ) Q_i(z_i) Qi(zi)是概率分布,所以 ∑ z i = 1 k Q i ( z i ) = 1 \sum_{z_i=1}^{k}Q_i(z_i)=1 ∑zi=1kQi(zi)=1. 将 p ( x i , z i ∣ θ ) Q i ( z i ) = c \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} = c Qi(zi)p(xi,zi∣θ)=c 带入对数似然函数中的 ∑ z i = 1 k Q i ( z i ) p ( x i , z i ∣ θ ) Q i ( z i ) \sum_{z_i=1}^{k}Q_i(z_i) \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} ∑zi=1kQi(zi)Qi(zi)p(xi,zi∣θ), 得:
∑ z i = 1 k p ( x i , z i ∣ θ ) = c \sum_{z_i=1}^{k} p(x_i, z_i|\theta) = c zi=1∑kp(xi,zi∣θ)=c
所以有:
Q i ( z i ) = p ( x i , z i ∣ θ ) c = p ( x i , z i ∣ θ ) ∑ z i = 1 k p ( x i , z i ∣ θ ) = p ( x i , z i ∣ θ ) p ( x i ∣ θ ) = p ( z i ∣ x i , θ ) \begin{aligned} Q_i(z_i) &= \frac{p(x_i, z_i|\theta)}{c} \\ &= \frac{p(x_i, z_i|\theta)}{\sum_{z_i=1}^{k} p(x_i, z_i|\theta)} \\ &= \frac{p(x_i, z_i|\theta)}{p(x_i|\theta)} \\ &= p(z_i|x_i, \theta) \end{aligned} Qi(zi)=cp(xi,zi∣θ)=∑zi=1kp(xi,zi∣θ)p(xi,zi∣θ)=p(xi∣θ)p(xi,zi∣θ)=p(zi∣xi,θ)
一旦这个Q确定了,我们就可以求解 ( θ ) (\theta) (θ)的下界了。
我们再回顾下上述不等式,所谓E步骤,其实就是在计算一个期望,这个期望也就是 l ( θ ) l(\theta) l(θ)的下界,即:
∑ i n E z i ( l o g ( p ( x i , z i ∣ θ ) Q i ( z i ) ) ) = ∑ i = 1 n ∑ z i = 1 k Q i ( z i ) log p ( x i , z i ∣ θ ) Q i ( z i ) \sum_{i}^{n} E_{z_i}\left( log \left( \frac{p(x_i, z_i|\theta)}{Q_i(z_i)}\right) \right) = \sum_{i=1}^{n}\sum_{z_i=1}^{k} Q_i(z_i) \log \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} i∑nEzi(log(Qi(zi)p(xi,zi∣θ)))=i=1∑nzi=1∑kQi(zi)logQi(zi)p(xi,zi∣θ)
然后我们再计算:
a r g m a x ∑ i = 1 n ∑ z i = 1 k Q i ( z i ) log p ( x i , z i ∣ θ ) Q i ( z i ) argmax\sum_{i=1}^{n}\sum_{z_i=1}^{k} Q_i(z_i) \log \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} argmaxi=1∑nzi=1∑kQi(zi)logQi(zi)p(xi,zi∣θ)
这一步就被称为M步。
小结
通过上述分析,我们总结EM算法如下:
- 随机初始化模型参数 θ 0 \theta^{0} θ0
- (E步)计算联合分布的条件概率期望 ( j = 0 , 1 , 2 , 3... ) (j = 0, 1, 2, 3 ...) (j=0,1,2,3...)
Q i ( z i ) = p ( z i ∣ x i , θ j ) Q_i(z_i) = p(z_i|x_i, \theta^{j}) Qi(zi)=p(zi∣xi,θj)
l ( θ , θ j ) = ∑ i = 1 n ∑ z i = 1 k Q i ( z i ) log p ( x i , z i ∣ θ ) Q i ( z i ) l(\theta, \theta^{j}) = \sum_{i=1}^{n}\sum_{z_i=1}^{k} Q_i(z_i) \log \frac{p(x_i, z_i|\theta)}{Q_i(z_i)} \\ l(θ,θj)=i=1∑nzi=1∑kQi(zi)logQi(zi)p(xi,zi∣θ)
3. (M步)极大化 l ( θ , θ j ) l(\theta, \theta^{j}) l(θ,θj)
θ j + 1 = arg max l ( θ , θ j ) \theta^{j+1} = \argmax l(\theta, \theta^{j}) θj+1=argmaxl(θ,θj)
4. 重复2,3直至算法收敛
思考
参考文献
- R. O. Duda, P. E. Hart, and D. G. Stork, Pattern Classification. John Wiley & Sons, 2012.
- EM算法详解
- EM算法原理及推导
- 徐亦达机器学习:Expectation Maximization EM算法
- 如何感性地理解EM算法?
- 复旦-机器学习课程 第十讲 EM 算法