EM 算法简介, 含有一个例子的详细推导.

UTF8gbsn

今天我们讲一个算法, 这个算法就是EM(Expectation Maximization
Algorithm)算法. 这个算法是为了估计概率模型参数 θ \theta θ的.
到这里大家肯定想到了如果我们知道观察值 X X X.
就可以使用MLE(最大似然估计)来估计参数 θ \theta θ了啊. 为什么还需要EM算法呢?
的确如果问题是已知观察值 X X X, 求 θ \theta θ,那么我们的确只需要MLE就可以了.

θ = arg ⁡ max ⁡ θ L ( θ ; X ) \theta=\arg\max_{\theta}L(\theta;X) θ=argθmaxL(θ;X)

那么EM的存在是为了什么呢? 其实这是为了解决隐变量问题.
我们先来提出一个问题. 如果我们有A,B,C三个硬币, 我们先投掷A, 并观察A的值,
如果正面,则选择投掷B, 并纪录输出到最终观察序列里面,
如果A是反面,则投掷C,并纪录观察值到最终输出序列里面.
我们把A的输出记做随机变量Z, 而最后来自B或C的输出, 也就是我们的观察只为X.
可以得到类似于下面的这样一张表.

A(Z)1010
B1-0-
C-0-1
X1001

由此可见, Z的值,我们是观测不到的, 但是我们能够观测到X. 所以在这种情况下,
我们需要去估计参数 θ \theta θ. 这个时候就该EM算法登场了. 那么问题又来了,
这里为什么就不能使用MLE呢? 答案是肯定可以的, 只是你的估计会有偏差,
这里即然我们知道的整个数据产生的过程中有隐变量. 这本身就是一种信息,
如果你不好好利用好这个信息设置更为符合实际的参数 θ \theta θ,
那么估计出来的实际概率模型出现大的偏差就不奇怪了.

利用好信息

我们很直观的想法是使用全概率公式来求 θ \theta θ.

L ( θ ; X ) = p ( X ∣ θ ) = ∫ p ( X , Z ∣ θ ) d Z L(\theta;X)=p(X|\theta)=\int{p(X,Z|\theta)dZ} L(θ;X)=p(Xθ)=p(X,Zθ)dZ

可是, 这个公式有一个缺点, 就是在实际计算过程中基本不可能.
因为要想求出所有 Z , X Z, X Z,X的组合在序列数据里面非常庞大.我们无法穷举所有的组合结果.于是这个式子变得无法求解.
这样就有了EM的用武之地. 我们来看看EM的具体步骤.

  1. 随机初始化参数 θ 0 \theta^{0} θ0

  2. E步:计算函数
    Q ( θ ∣ θ t ) = E Z ∼ X , θ t [ L ( θ ; X , Z ) ] Q(\theta|\theta^t)=E_{Z\sim X, \theta^t}[L(\theta; X, Z)] Q(θθt)=EZX,θt[L(θ;X,Z)]

  3. M步:求 θ t + 1 \theta^{t+1} θt+1
    θ t + 1 = arg ⁡ max ⁡ θ Q ( θ ∣ θ t ) \theta^{t+1}=\arg\max_{\theta}Q(\theta|\theta^t) θt+1=argθmaxQ(θθt)

  4. 算法收敛, 得 θ \theta θ

以上, 就是EM算法的标准流程. 那么EM算法为什么可以求 θ \theta θ,
而且是否收敛. 这两个问题暂时不讲. 后面专门写文章来讲这个两个问题.
我们先来看看前面介绍的投掷硬币的列子.

例子

我们现在假设A,B,C硬币的参数位 π , p , q \pi, p, q π,p,q. 按照EM算法的第一步,
先设置 π = 0.5 , p = 0.5 , q = 0.5 \pi=0.5, p=0.5, q=0.5 π=0.5,p=0.5,q=0.5. 然后进行E步

  1. E step: 假设我们有了 θ t , x i \theta^t, x_i θt,xi,
    我们要计算它来自于B的概率 p ( z = 1 ∣ x i , θ t ) p(z=1|x_i, \theta^{t}) p(z=1xi,θt). P ( z = 1 ∣ x i , θ t ) = π t ( p t ) x i ( 1 − p t ) 1 − x i π t ( p t ) x i ( 1 − p t ) 1 − x i + ( 1 − π ) t ( q t ) x i ( 1 − q t ) 1 − x i P ( z = 0 ∣ x i , θ t ) = 1 − p ( z = 1 ∣ x i , θ t ) \left. \begin{aligned} P(z=1|x_i,\theta^t)&=\frac{\pi^t(p^{t})^{x_i}(1-p^t)^{1-x_i}}{\pi^t(p^{t})^{x_i}(1-p^t)^{1-x_i}+(1-\pi)^t(q^{t})^{x_i}(1-q^t)^{1-x_i}}\\ P(z=0|x_i, \theta^t)&=1-p(z=1|x_i,\theta^t)\\ \end{aligned} \right. P(z=1xi,θt)P(z=0xi,θt)=πt(pt)xi(1pt)1xi+(1π)t(qt)xi(1qt)1xiπt(pt)xi(1pt)1xi=1p(z=1xi,θt) 注意这上面的公式在已知 X X X, 和 θ t \theta^t θt的情况下,
    都是可以计算的. 计算结果就是一个确定的数值.

    另外,我们先来看看, P ( x i ∣ θ ) P(x_i|\theta) P(xiθ)的公式 p ( x i ∣ θ ) = π p x i ( 1 − p ) 1 − x i + ( 1 − π ) q x i ( 1 − q ) 1 − x i p ( x i , z i ∣ θ ) = π z i ( 1 − π ) 1 − z i p z i x i ( 1 − p ) z i ( 1 − x i ) q ( 1 − z i ) x i ( 1 − q ) ( 1 − z i ) ( 1 − x i ) \left. \begin{aligned} p(x_i|\theta)&=\pi p^{x_i}(1-p)^{1-x_i}+(1-\pi)q^{x_i}(1-q)^{1-x_i}\\ p(x_i,z_i|\theta)&=\pi^{z_i}(1-\pi)^{1-z_i}p^{z_ix_i}(1-p)^{z_i(1-x_i)}q^{(1-z_i)x_i}(1-q)^{(1-z_i)(1-x_i)} \end{aligned} \right. p(xiθ)p(xi,ziθ)=πpxi(1p)1xi+(1π)qxi(1q)1xi=πzi(1π)1zipzixi(1p)zi(1xi)q(1zi)xi(1q)(1zi)(1xi) 有了这两个东西, 我们在看如何计算 Q ( θ ∣ θ t ) Q(\theta|\theta^t) Q(θθt)
    Q ( θ ∣ θ t ) = E Z ∼ X , θ t [ L ( θ ; X , Z ) ] = ∑ Z l n ( X , Z i ∣ θ ) P ( Z i ∣ X , θ t ) = ∑ Z ∑ X l n P ( x i , z i ∣ θ ) P ( z i ∣ x i , θ t ) = ∑ Z ∑ X p ( z i ∣ x i , θ t ) [ z i l n π + ( 1 − z i ) l n ( 1 − π ) + z i x i l n p + z i ( 1 − x i ) l n ( 1 − p ) + ( 1 − z i ) x i l n q + ( 1 − z i ) ( 1 − x i ) l n ( 1 − q ) ] \left. \begin{aligned} Q(\theta|\theta^t)&=E_{Z\sim X, \theta^t}[L(\theta; X, Z)]\\ &=\sum_{Z}ln(X,Z_i|\theta)P(Z_i|X, \theta^{t})\\ &=\sum_{Z}\sum_{X}lnP(x_i,z_i|\theta)P(z_i|x_i,\theta^{t})\\ &=\sum_{Z}\sum_{X}p(z_i|x_i,\theta^t)[z_iln\pi+(1-z_i)ln(1-\pi)+z_ix_ilnp+z_i(1-x_i)ln(1-p)+(1-z_i)x_ilnq+(1-z_i)(1-x_i)ln(1-q)]\\ \end{aligned} \right. Q(θθt)=EZX,θt[L(θ;X,Z)]=Zln(X,Ziθ)P(ZiX,θt)=ZXlnP(xi,ziθ)P(zixi,θt)=ZXp(zixi,θt)[zilnπ+(1zi)ln(1π)+zixilnp+zi(1xi)ln(1p)+(1zi)xilnq+(1zi)(1xi)ln(1q)]

    首先对上面最后一个式子对 π \pi π求导可得
    ∑ Z ∑ X p ( z i ∣ x i , θ t ) [ z i 1 π − ( 1 − z i ) 1 1 − π ] = 0 \sum_{Z}\sum_{X}p(z_i|x_i,\theta^t)[z_i \frac{1}{\pi}-(1-z_i)\frac{1}{1-\pi}]=0 ZXp(zixi,θt)[ziπ1(1zi)1π1]=0
    求出 π \pi π可得
    π t + 1 = 1 N ∑ i = 1 N p ( z = 1 ∣ x i , θ t ) \pi^{t+1}=\frac{1}{N}\sum_{i=1}^{N}p(z=1|x_i,\theta^t) πt+1=N1i=1Np(z=1xi,θt) 设,
    p ( z = 1 ∣ x i , θ t ) = μ i p(z=1|x_i,\theta^t)=\mu_i p(z=1xi,θt)=μi

  2. 同理可以计算
    p ( t + 1 ) = ∑ j = 1 n μ j ( t + 1 ) x j ∑ j = 1 n μ j ( t + 1 ) p^{(t+1)}=\frac{\sum_{j=1}^{n} \mu_{j}^{(t+1)} x_{j}}{\sum_{j=1}^{n} \mu_{j}^{(t+1)}} p(t+1)=j=1nμj(t+1)j=1nμj(t+1)xj
    q ( t + 1 ) = ∑ j = 1 n ( 1 − μ j ( t + 1 ) ) x j ∑ j = 1 n ( 1 − μ j ( t + 1 ) ) q^{(t+1)}=\frac{\sum_{j=1}^{n}\left(1-\mu_{j}^{(t+1)}\right) x_{j}}{\sum_{j=1}^{n}\left(1-\mu_{j}^{(t+1)}\right)} q(t+1)=j=1n(1μj(t+1))j=1n(1μj(t+1))xj

剩下的就是一个简单的迭代了. 至此我们就初步的讲完了EM算法,
以及它的一个例子了. 注意EM算法只是一个指导性的算法.具体到某个具体问题,
还需要不同的推导来求概率模型参数. 通过上面的例子可见,
模型的推导有点儿繁琐, 所以请各位注意反复咀嚼这个例子. 未来有时间,
我们会写一个EM算法的另外一个例子,
高斯混合模型.它也是通过EM算法来求模型参数的.高斯混合模型的通用性要就要高很多.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值