机器学习——EM算法

1 数学基础

  在实际中,最小化的函数有几个极值,所以最优化算法得出的极值不确实是否为全局的极值,对于一些特殊的函数,凸函数与凹函数,任何局部极值也是全局极致,因此如果目标函数是凸的或凹的,那么优化算法就能保证是全局的。

  凸集:在凸几何中,凸集(convex set)是在凸组合下闭合的仿射空间的子集。更具体地说,在欧氏空间中,凸集是对于集合内的每一对点,连接该对点的直线段上的每个点也在该集合内。例如,立方体是凸集,但是任何中空的或具有凹痕的例如月牙形都不是凸集。特别的,凸集,实数R上(或复数C上)的向量空间中,如果集合S中任两点的连线上的点都在S内,则称集合S为凸集。

  直线:设$x_1 e x_2$为 $R^n$ 空间中的两个点,若满足 $y= heta x_1+(1- heta)x_2 , heta in R$,则 $y$ 是一条直线。

  

  线段:设$x_1 e x_2$为 $R^n$ 空间中的两个点,若满足 $y= heta x_1+(1- heta)x_2 ,0le heta le 1$,则 $y$ 是一条线段。

  

  凸函数定义1:集合$R_csubset E^n$是凸集,如果对每对点$ extbf{x}_1, extbf{x}_2subset R_c$,每个实数 $alpha,0<alpha<1$,点$ extbf{x}in R_c$。

    $ extbf{x}=alpha extbf{x}_1+(1-alpha) extbf{x}_2$

   

  凸函数定义2:我们称定义在凸集 $R_c$ 上的函数 $f(x)$ 为凸的,如果对每对 $ extbf{x}_1, extbf{x}_2 in R_c$与每个实数 $lambda ,0<lambda<1$,则满足不等式
    $f[lambda extbf{x}_1+(1-lambda ) extbf{x}_2]leq lambda f( extbf{x}_1)+(1-lambda)f( extbf{x}_2)$
  如果$ extbf{x}_1 eq extbf{x}_2$,则$f(x)$是严格凸的
    $f[lambda extbf{x}_1+(1-lambda) extbf{x}_2]<lambda f( extbf{x}_1)+(1-lambda)f( extbf{x}_2)$

  

  Jensen不等式:定义:若 $f(x)$ 为区间 $X$ 上的凸函数,则 $forall n in mathbb N, n ge 1,$, 若$forall i in mathbb N, 1 le i le n, x_i in X, lambda_i in mathbb R,$,且$sum limits ^n_{i=1}lambda_i=1$, 则:
    $f(sum_ limits {i=1}^{n} lambda_i x_i) le sum_ limits{i=1}^{n} lambda_i f(x_i)$
  推论:若 $f(x)$ 为区间 $R$ 上的凸函数,$g(x): R ightarrow R$为一任意函数,$X$ 为一取值范围有限的离散变量,$E [f(g(X))]$与$E[g(X)]$都存在,则:
    $E [f left ( g(X) ight ) ] ge f left (E[g(X)] ight )$

2 问题引出

  概率模型有时既含有观测变量(observable variable),又含有隐变量或潜在变量(latent variable),如果仅有观测变量,那么给定数据就能用极大似然估计或贝叶斯估计来估计模型参数;但是当模型含有隐变量时,需要一种含有隐变量的概率模型参数估计的极大似然方法估计——EM算法。

  例子:有两个硬币,但是两个硬币的材质不同导致其出现正反面的概率不一样,目前只有一组观测数据,要求出每一种硬币投掷时正面向上的概率。总共投了五轮,每轮投掷五次。

  Part1:现在先考虑一种简单的情况,假设知道这每一轮用的是哪一个硬币去投掷的:

  

  从上述数据很容易得出硬币A和硬币B出现正面的概率。(后文当作隐变量的真实值)
    $P(A)=(3+1+2)/15=0.4$
    $P(B)=(2+3)/10=0.5$
  Part2:常见问题是,一般不知道投掷使用的是哪一种硬币,但是依旧知道结果,现在等于在问题上加了应该隐变量,就是硬币种类。

   

   Part3:解决办法:把每一次硬币的种类设为 $Z$ ,则这五次实验生成了一个 $5$ 维的向量 $(z_1,z_2,z_3,z_4,z_5)$ 。现在问题来了,如果要根据观测结果去求出 $P(A),P(B)$ ,那么首先需要知道  $Z$,但是如果用最大似然估计去估计 $Z$,又要先求出$P(A ),P(B )$,就产生了一个循环。

  为解决这个问题 EM算法 的作用就体现出来了,EM算法的基本思想是:先初始化一个 $P(A ),P(B )$,然后拿这个初始化的 $P(A ),P(B )$  用最大似然概率估计出 $Z$,接下来有了 $Z$ 之后就用 $Z$ 去计算出在当前z的情况下的 $P(A ),P(B )$ 是多少,然后不断地重复这两个步骤直到收敛。

  使用上述思想,假设初始状态下 $P(A )=0.2,   P(B )=0.7$,然后根据这个概率去估计出 $Z$:
  看看第一轮抛掷最可能是哪个硬币。
  如果是硬币 $A$,得出 $3$ 正 $2$ 反的概率为 $0.2*0.2*0.2*0.8*0.8 = 0.00512$
  如果是硬币 $B$,得出 $3$ 正 $2$ 反的概率为 $0.7*0.7*0.7*0.3*0.3=0.03087$

  

  按照最大似然法则:
  第 1 轮中最有可能的是硬币$B$
  第 2 轮中最有可能的是硬币$A$
  第 3 轮中最有可能的是硬币$A$
  第 4 轮中最有可能的是硬币$B$
  第 5 轮中最有可能的是硬币$A$
  我们就把概率更大,即更可能是 $A$ 的,即第 $2$ 轮、第 $3$ 轮、第 $5$ 轮出现正的次数$2、1、2$相加,除以 $A$ 被抛的总次数 $15$ ($A$抛了三轮,每轮$5$次),作为 $Z$ 的估计值,$B$ 的计算方法类似。然后便可以按照最大似然概率法则来估计新的 $P(A )$ 和 $P(A )$。
    $P(A ) =(2+1+2)/15 = 0.33$
    $P(B ) =(3+3)/10 = 0.6$

  设想知道每轮抛掷时的硬币的类型,那么,$P(A )$ 和 $P(B )$ 的最大似然估计就是 $0.4$ 和 $0.5$ (下文中将这两个值称为$P(A )$ 和 $P(B )$的真实值)。那么对比下我们初始化的 $P(A )$ 和 $P(B )$ 和新估计出的$P(A )$ 和 $P(B )$:

  

  可以看到 $P(A )$,$P(B )$ 的值已经更新,假设 $P(A )$,$P(B )$ 的真实值 $0.4$ 和 $0.5$ ,那么在不断地重复这两步会发现 $P(A )$,$P(B )$ 在不断地靠近这两个真实值。反复迭代下去,就可以最终得到$P(A )=0.4$,$P(B )=0.5$,此时无论怎样迭代,$P(A )$和$P(B )$的值都会保持 $0.4$ 和 $0.5$ 不变,于是乎,就找到了 $P(A )$ 和 $P(B )$ 的最大似然估计。

  附:实列视频讲解

3 EM算法

  一般地,用 $Y$ 表示观测随机变量的数据,$Z$ 表示隐随机变量的数据。$Y$ 和 $Z$ 连在一起称为完全数据,观测数据 $Y$ 又称为不完全数据。假设给定观测数据 $Y$,其概率分布是 $P(Y| heta)$,其中 $ heta$ 是需要估计的模型参数,那么不完全数据 $Y$ 的似然函数是 $P(Y| heta)$,对数似然函数 $L( heta)=logP(Y| heta)$; 假设 $Y$ 和 $Z$ 的联合概率分布是 $P(Y,Z| heta)$ ,那么完全数据的对数似然函数是 $logP(Y,Z| heta)$ 。EM算法通过迭代求$L( heta)=logP(Y| heta)$ 的极大似然估计。每次迭代包括两步:E步求期望;M步求极大化。

  EM算法:
  输入:观测随机变量数据 $Y$,隐随机变量数据 $Z$,联合分布 $P(Y,Z| heta)$,条件分布 $P(Z|Y, heta)$。
  输出:模型参数 $ heta$。
  (1) 选择参数的初值 $ heta^{(0)}$ ,开始迭代;
  (2) $E$ 步:记 $ heta^{(i)}$ 为第 $i$ 次迭代参数 $ heta$ 的估计值,在第 i+1 次迭代的 E步,计算

    $Q( heta, heta^(i))=E_{Z}[log P(Y,Z| heta)|Y, heta^{(i)}] $

    $= sum_ limits {Z} log P(Y,Z| heta ) cdot P(Z|Y, heta^{(i)})$

  这里,$P(Z|Y, heta^{(i)})$ 是在给定观测数据 $Y$ 和当前的参数估计 $ heta^{(i)}$ 下隐变量数据 $Z$ 的条件概率分布;

  (3) $M$ 步:求使 $Q( heta, heta^{(i)})$ 极大化的 $ heta$ ,确定第 i+1 次迭代的参数的估计值 $ heta^{(i+1)}$ 

    $ heta^{( i+1 )} = arg max Q( heta, heta^{(i)})$

  (4) 重复第(2)步和第(3)步,直到收敛。

   式中的函数 $Q( heta, heta^{(i)})$ 是 EM算法的核心,称为 $Q$ 函数。只有知道 $Q$ 函数,才知道怎样进行迭代。

  $Q$函数:完全数据的对数似然函数 $P(Y,Z| heta)$ 关于在给定观测数据 $Y$ 和当前参数 $ heta^{( i )}$ 下对未观测数据 $Z$ 的条件概率分布 $P( Z | Y, heta^{( i )} )$ 的期望
    $Q ( heta, heta^{( i )} ) = E_{Z} [ log P ( Y, Z | heta ) | Y , heta^{( i )} ] $

  EM算法说明:

  1. 步骤(1) 参数的初值可以任意选择,但需注意EM算法对初值是敏感的。
  2. 步骤(2) E步求 $Q( heta, heta^{(i)})$ 。 $Q$ 函数式中 $Z$是未观测数据,$Y$是观测数据。注意,$Q( heta, heta^{(i)})$的第1个变元表示要极大化的参数,第2个变元表示参数的当前估计值。每次迭代实际在求Q函数及其极大。
  3. 步骤(3) M步求$Q( heta, heta^{(i)})$的极大化,得到$ heta^{(i+1)}$,完成一次迭代$ heta^{(i)} o heta^{(i+1)}$。后面将证明每次迭代使似然函数增大或达到局部极值。
  4. 步骤(4) 给出停止迭代的条件,一般是对较小的正数$varepsilon_1$,$varepsilon_2$,若满足$|| heta^{(i+1)}- heta^{(i)} ||<varepsilon_1 或   ||Q( heta^{(i+1)}, heta^{(i)})-Q( heta^{(i)}, heta^{(i)}) ||<varepsilon_2   $ 则停止迭代。

4 EM 算法的导出

  Q函数是怎么得出来的?为什么极大化Q函数就可以了?
  面对一个含有隐变量的概率模型,目标是极大化观测数据 $Y$ 关于参数 $ heta$ 的对数似然函数,即最大化

    $L( heta )=logP(Y| heta)=logsum_ limits {Z} P(Y,Z| heta)=log(sum_ limits {Z}P(Y|Z, heta)P(Z| heta))$

  事实上,EM算法是通过迭代逐步近似极大化$L( heta)$的。假设在第$i$次迭代后$ heta$的估计值是$ heta^{(i)}$。我们希望新估计值$ heta$能使$L( heta)$增加,即$L( heta)>L( heta^{(i)})$,并逐步达到极大值。为此考虑两者的差:

    $L ( heta ) - L ( heta^{( i )} ) = log ( sum_{Z}  P ( Y|Z, heta ) P ( Z| heta ) ) - log P ( Y| heta^{ ( i )}  )$

  利用Jensen不等式得到下界  

egin{align*} & L ( heta ) - L ( heta^{( i )} ) = log ( sum_{Z} P ( Y|Z, heta ) P ( Z| heta ) ) - log P ( Y| heta^{ ( i )} ) \ & = log ( sum_{Z} P ( Z | Y , heta^{( i )} ) dfrac { P ( Y|Z, heta ) P ( Z| heta )} {P ( Z | Y , heta^{( i )} )} ) - log P ( Y| heta^{ ( i )} )\ &geq sum_{Z} P ( Z | Y , heta^{( i )} ) log dfrac {P ( Y | Z, heta ) P (Z| heta)}{P ( Z | Y , heta^{( i )} )} - log P ( Y| heta^{ ( i )} ) \ & = sum_{Z} P ( Z | Y , heta^{( i )} ) log dfrac {P ( Y | Z, heta ) P (Z| heta)} {P ( Z | Y , heta^{( i )} ) P (Y| heta^{( i )} )}end{align*}

  PS:这里用到的是$logsum_ limits {j}lambda _jy_jge sum_ limits {j}lambda _jlogy_j$,其中$lambda _j ge0,sum_ limits {j}lambda _j=1$。
  令
    $B ( heta , heta^{ ( i )} ) = L ( heta^{ ( i )} ) + sum_{Z} P ( Z | Y , heta^{( i )} ) log dfrac {P ( Y | Z, heta ) P (Z| heta)} {P ( Z | Y , heta^{( i )} ) P (Y| heta^{( i )} )}$

  则

    $L ( heta ) geq B ( heta, heta^{( i )} ) $

  即函数 $B( heta, heta^{(i)})$ 的一个下界,而且由式 $B ( heta , heta^{ ( i )} ) $可知,

     $L ( heta^{(i)}) = B( heta, heta^{( i )})$

  因此,任何可以使$B( heta, heta^{(i)})$增加的$ heta$,也可以使$L( heta)$增大。为了使$L( heta)$尽可能大的增长,选择$ heta^{(i+1)}$是$B( heta, heta^{(i)})$达到极大,即

     $ heta^{(i+1)}= arg   underset{ heta}{max} B( heta, heta^{(i)})$

  现在求 $ heta^{(i+1)}$ 的表达式。省去对 $ heta$ 的极大化而言是常数的项,有
egin{align*} & heta^{left( i+1 ight)}= arg max B left( heta, heta^{left( i ight)} ight) \ & = arg max left( L left( heta^{left ( i ight)} ight) + sum_{Z} P left( Z | Y , heta^{left( i ight)} ight) log dfrac {P left( Y | Z, heta ight) P left(Z| heta ight)} {P left( Z | Y , heta^{left( i ight)} ight) P left(Y| heta^{left( i ight)} ight)} ight) \ & = arg max left( sum_{Z} P left( Z | Y, heta^{left( i ight)} ight) log left( P left( Y | Z, heta ight) ight) P left( Z | heta ight) ight) \ & = arg max left( sum_{Z} P left( Z | Y, heta^{left( i ight)} ight) log P left( Y, Z | heta ight) ight) \ & = arg max Q left( heta, heta^{left( i ight)} ight) end{align*}

  上式等价于EM算法的一次迭代,即求Q函数及其最大化。EM算法是通过不断求解下界的极大化逼近求解对数似然函数极大化的算法。

  下图给出EM算法的直观解释。图中上方曲线为 $L( heta)$ ,下方曲线为 $B( heta, heta^{(i)})$ 。由式 $B( heta, heta^{(i)})$ 是对数似然函数 $L( heta)$ 的下界。两个函数在点 $ heta = heta^{(i)}$ 处相等。

  

  由上述两式,EM算法找到下一个点$ heta^{(i+1)}$使函数$B( heta, heta^{(i)})$极大化,也使函数$Q( heta, heta^{(i)})$极大化。这时由于$L( heta) geq B( heta, heta^{(i)})$,函数$B( heta, heta^{(i)})$的增加,保证对数似然函数
$L( heta)$在每次迭代中也是增加的($L( heta^{(i)})=B( heta^{(i)}, heta^{(i)})$)。EM算法在点$ heta^{(i+1)}$重新计算Q函数值,进行下一次迭代。在这个过程中,对数似然函数$L( heta)$不断增加。从图可以推出EM算法不能保证找到全局最优值。

5 EM算法的收敛性

  极大化Q函数合理吗?
  EM算法得到的估计序列是否收敛?如果收敛,是否收敛到全局最大值或局部最大值?

  定理9.1 设 $P(Y| heta)$ 为观测数据的似然函数,$ heta^{(i)}(i= 1,2,….)$ 为EM算法得到的参数估计序列,$P(Y| heta^{(i)})(i= 1,2,…)$为对应的似然函数序列,则$P(Y| heta)$是单调递增的,即
    $P(Y| heta^{(i+1)}) ge P(Y| heta^{(i)}) (9.18) $
  证明:由于
    $P(Y| heta^{(i+1)} ) ge P(Y| heta^{(i))}$
  取对数有
    $log P(Y| heta) =log P(Y,Z| heta)-log P(Z|Y, heta)$
  由式子
    $Q( heta, heta^{(i)})= sum_ limits {Z} log P(Y,Z| heta ) cdot P(Z|Y, heta^{(i)})$
  令
    $H( heta, heta^{(i)})= sum_ limits {Z} log P(Y,Z| heta ) P(Z|Y, heta^{(i)}) (9.19)$
  于是对数似然函数可以写成
    $log P(Y| heta )=Q( heta , heta ^{(i)})-H( heta , heta ^{(i)}) (9.20)$
  在上式中取 $ heta$ 为 $ heta^{(i)}$和$ heta^{(i+1)}$ 并相减,有
    $log P(Y| heta^{(i+1)})-log P(Y| heta^{(i)})$
    $=[Q( heta^{(i+1)}, heta^{(i)})-Q( heta^{(i)}, heta^{(i)})]-[H( heta^{(i+1)}, heta^{(i)})-H( heta^{(i)}, heta^{(i)})] (9.21) $
  为证式(9.18),只需证式(9.21)右端是非负的。式(9.21)右端的第1项,由于 $ heta^{(i+1)}$ 使 $Q( heta, heta^{(i)})$ 达到极大,所以有
    $Q( heta ^{(i+1)} , heta ^{(i)})-Q( heta^{(i)} , heta ^{(i)}) ge 0 (9.22) $
  其第2项,由式(9.19)可得:

    $H( heta ^{(i+1)} , heta ^{(i)})-H( heta^{(i)} , heta ^{(i)})$
    $=sum limits _{Z}(logfrac{P(Z|Y, heta ^{(i+1)})}{P(Z|Y, heta ^{(i)})} )P(Z|Y, heta^{(i)})$
    $le sum limits _{Z}(frac{P(Z|Y, heta ^{(i+1)})}{P(Z|Y, heta ^{(i)})} )P(Z|Y, heta^{(i)})$
    $=log( sum limits _{Z}P(Z|Y, heta^{(i+1)}))=0 (9.23) $
  这里的不等号是由Jensen不等式得到。

  定理9.2 设 $L( heta) = log P(Y| heta)$ 为观测数据的对数似然函数,$ heta^{(i)}(i= 1,2,….)$ 为EM算法得到的参数估计序列,$L( heta^{(i)})(i= 1,2,…)$ 为对应的对数似然函数序列。
  (1)如果$P(Y| heta)$有上界,则$L( heta^{(i)}) = log P(Y| heta^{(i)})$收敛到某一值$L^*$;
  (2)在函数 $Q( heta, heta^{'})$与$L( heta)$ 满足一定条件下,由EM算法得到的参数估计序列 $ heta{(i)}$ 的收敛值 $ heta^{*}$是$L( heta)$ 的稳定点。
  证明:
  (1)由 $L( heta) = log P(Y| heta^{(i)})$ 的单调性及 $P(Y| heta)$ 的有界性立即得到。
  (2)证明从略
  定理9.2关于函数 $Q( heta, heta^{'})$ 与 $L( heta)$ 的条件在大多数情况下都是满足的。EM算法的收敛性包含关于对数似然函数序列 $L( heta^{(i)})$ 的收敛性和关于参数估计序列 $ heta^{(i)}$ 的收敛性两层意思,前者并不蕴涵后者。此外,定理只能保证参数估计序列收敛到对数似然函数序列的稳定点,不能保证收敛到极大值点。所以在应用中,初值的选择变得非常重要,常用的办法是选取几个不同的初值进行迭代,然后对得到的各个估计值加以比较,从中选择最好的。

参考文献

1 EM算法-数学基础

2 [机器学习基础]EM算法

3 EM算法及其推广

4 EM算法(1)——基本算法

因上求缘,果上努力~~~~ 作者:每天卷学习,转载请注明原文链接:https://www.cnblogs.com/BlairGrowing/p/14876457.html

原文地址:https://www.cnblogs.com/BlairGrowing/p/14876457.html