机器学习之 EM

什么都不要想,先来感受一个例子:

公司有男同事=[A,B,C],同时有很多漂亮的女职员=[小甲,小章,小乙]。(请勿对号入座)你迫切的怀疑这些男同事跟这些女职员有“问题”。为了科学的验证你的猜想,你进行了细致的观察。于是:

观察数据:

  • 1、A,小甲、小乙一起出门了;
  • 2、B,小甲、小章一起出门了;
  • 3、B,小章、小乙一起出门了;
  • 4、C,小乙一起出门了;

收集到了数据,你开始了神秘的EM计算。

初始化:你觉得三个同事一样帅,一样有钱,三个美女一样漂亮,每个人都可能跟每个人有关系。所以,每个男同事跟每个女职员“有问题”的概率都是1/3;

EM算法中的E步骤

  • 1、A跟小甲出去过了 1/2 * 1/3 = 1/6 次,跟小乙也出去了1/6次;
  • 2、B跟小甲,小章也都出去了1/6次;
  • 3、B跟小乙,小章又出去了1/6次;
  • 4、C跟小乙出去了1/3次;

总计:

  • A跟小甲出去了1/6次,跟小乙也出去了1/6次 ;
  • B跟小甲,小乙出去了1/6次,跟小章出去了1/3次;
  • C跟小乙出去了1/3。

EM算法中的M步骤 - 你开始更新你的八卦:

  • A跟小甲,小乙有问题的概率都是1/6 / (1/6 + 1/6) = 1/2;
  • B跟小甲,小乙有问题的概率是1/6 / (1/6+1/6+1/6+1/6) = 1/4;
  • B跟小章有问题的概率是(1/6+1/6)/(1/6 * 4) = 1/2;
  • C跟小乙有问题的概率是1。

EM算法中的E步骤 - 然后你又开始根据最新的概率计算了。

  • 1、A跟小甲出去了 1/2 * 1/2 = 1/4 次,跟小乙也出去 1/4 次;
  • 2、B跟小甲出去了1/2 * 1/4 = 1/8 次, 跟小章出去了 1/2 * 1/2 = 1/4 次;
  • 3、B跟小乙出去了1/2 * 1/4 = 1/8 次, 跟小章又出去了 1/2 * 1/2 = 1/4 次;
  • 4、C跟小乙出去了1次;

EM算法中的M步骤 - 重新反思你的八卦:

  • A跟小甲,小乙有问题的概率都是1/4/ (1/4 + 1/4) = 1/2;
  • B跟小甲,小乙是 1/8 / (1/8 + 1/4 + 1/4 + 1/8) = 1/6 ;
  • B跟小章是 2/3 ;
  • C跟小乙的概率是1。

你继续计算,反思,总之,最后,你得到了真相。

通过上面的计算我们可以得知,EM算法实际上是一个不停迭代计算的过程,根据我们事先估计的先验概率A,得出一个结果B,再根据结果B,再计算得到结果A,然后反复直到这个过程收敛。

可以想象饭店的后方大厨,炒了两盘一样的菜,现在,菜炒好后从锅中倒入盘,不可能一下子就分配均匀,所以先往两盘中倒入,然后发现B盘菜少了,就从A中匀出一些,A少了,从B匀.....

EM算法

EM算法(Expectation Maximization Algorithm,最大期望算法)是一种迭代类型的算法,是一种在概率模型中寻找参数最大似然估计或者最大后验估计的算法,其中概率模型依赖于无法观测的隐藏变量。

EM算法流程:

  • 初始化分布参数
  • 重复下列两个操作直到收敛:
  • E步骤:估计隐藏变量的概率分布期望函数
  • M步骤:根据期望函数重新估计分布参数

EM算法原理:

给定的m个训练样本 {x^{(1)}, x^{(2)}, \dots, x^{(m)}},样本间独立,找出样本的模型参数 θ ,极大化模型分布的对数似然函数如下:

                                                                \theta=\arg\max_{\theta}\sum_{i=1}^m\log(P(x^{(i)};\theta))

假定样本数据中存在隐含数据 z={z^{(1)}, z^{(2)}, \dots, z^{(k)}} ,此时极大化模型分布的对数似然函数如下:
                                                                      \begin{aligned}\theta&=\arg\max_{\theta}\sum_{i=1}^m\log(P(x^{(i)};\theta)) \\&=\arg\max_{\theta}\sum_{i=1}^m\log(\sum_{z^{(i)}}P(z^{(i)})P(x^{(i)}|z^{(i)};\theta)) \\&=\arg\max_{\theta}\sum_{i=1}^m\log(\sum_{z^{(i)}}P(x^{(i)},z^{(i)};\theta))\end{aligned}

令z的分布为 Q(z;θ) ,并且 Q(z;θ)≥0 ,那么有如下公式:

                                                               \begin{aligned}\sum_zQ(z;\theta)&=1 \\l(\theta)&=\sum_{i=1}^m\log\sum_zp(x,z;\theta) \\&=\sum_{i=1}^m\log\sum_zQ(z;\theta)\cdot\frac{p(x,z;\theta)}{Q(z;\theta)} \\&=\sum_{i=1}^m\log(E_Q(\frac{p(x,z;\theta)}{Q(z;\theta)})) \\&\ge\sum_{i=1}^mE_Q(\log(\frac{p(x,z;\theta)}{Q(z;\theta)})) \\&=\sum_{i=1}^m\sum_zQ(z;\theta)\log(\frac{p(x,z;\theta)}{Q(z;\theta)})\end{aligned}

Jensen不等式:

如果函数f为凸函数,那么存在下列公式:

                                                 f(\theta x+(1-\theta)y)\le\theta f(x)+(1-\theta)f(y)

如下图所示:

若 \theta_1, \theta_2, \dots, \theta_k\ge0 ,\theta_1 +\dots+\theta_k =1θ 则

                                                            \begin{aligned}f(\theta_1x_1+\dots+\theta_kx_k)&\le\theta_1f(x_1)+\dots+\theta_kf(x_k) \\f(E(x))&\le E(f(x))\end{aligned}

根据Jensen不等式的特性,当下列式子的值为常数的时候,l(θ) 函数才能取等号。

                                      \begin{aligned}\frac{p(x,z;\theta)}{Q(z;\theta)}&=c \\\sum_zQ(z;\theta)&=1 \\Q(z, \theta)&=\frac{p(x, z; \theta)}{c} \\&=\frac{p(x, z; \theta)}{c\cdot\sum_{z^i}Q(z^i;\theta)} \\&=\frac{p(x, z; \theta)}{\sum_{z^i}c\cdot Q(z^i;\theta)} \\&=\frac{p(x, z; \theta)}{\sum_{z^i}p(x, z^i; \theta)} \\&=\frac{p(x, z; \theta)}{p(x;\theta)} \\&=p(z|x;\theta) \\\theta&=\arg\max_{\theta}l(\theta) \\&=\arg\max_{\theta}\sum_{i=1}^m\sum_zQ(z;\theta)\log(\frac{p(x,z;\theta)}{Q(z;\theta)}) \\&=\arg\max_{\theta}\sum_{i=1}^m\sum_zQ(z|x;\theta)\log(\frac{p(x,z;\theta)}{Q(z|x;\theta)}) \\&=\arg\max_{\theta}\sum_{i=1}^m\sum_zQ(z|x;\theta)\log(p(x,z;\theta))\end{aligned}

EM算法流程:

样本数据 x={x_1, x_2, \dots, x_k} ,联合分布 p(x, z;\theta) ,条件分布p(z|x;\theta),最大迭代次数J。

随机初始化模型参数θ的初始值 \theta _0

开始EM算法的迭代处理:

E步:计算联合分布的条件概率期望

                                                         \begin{aligned}Q_j&=p(z|x;\theta_j) \\l(\theta)&=\sum_{i=1}^m\sum_zQ_j\log(p(x,z;\theta_j))\end{aligned}

M步:极大化L函数,得到 \theta _{j+1}
                                                        \theta_{j+1}=\arg\max_{\theta}l(\theta)

如果 \theta _{j+1} 已经收敛,则算法结束,输出最终的模型参数θ ,否则继续迭代处理

EM算法收敛证明

EM算法的收敛性只要我们能够证明对数似然函数的值在迭代的过程中是增加的即可,即证明下式成立:

                                                                       \sum_{i=1}^m\log(p(x^i; \theta_{j+1}))\ge\sum_{i=1}^m\log(p(x^i; \theta_j))

证明过程如下:

                \begin{aligned}L(\theta, \theta_j)&=\sum_{i=1}^m\sum_{z}p(z|x_i;\theta_j)\log p(x_i, z;\theta) \\H(\theta, \theta_j)&=\sum_{i=1}^m\sum_{z}p(z|x_i;\theta_j)\log p(z|x_i;\theta) \\L(\theta, \theta_j)-H(\theta, \theta_j)&=\sum_{i=1}^m\log(x_i;\theta) \\ \[L(\theta_{j+1}, \theta_j)-L(\theta_j, \theta_j)\]-[H(\theta_{j+1}, \theta_j)-H(\theta_j, \theta_j)]&=\sum_{i=1}^m\log(x_i;\theta_{j+1})-\sum_{i=1}^m\log(x_i;\theta_j) \\L(\theta_{j+1}, \theta_j)-L(\theta_j, \theta_j)&\ge 0 \\H(\theta_{j+1}, \theta_j)-H(\theta_j, \theta_j)&=\sum_{i=1}^m\sum_{z}p(z|x_i;\theta_j)\log({p(z|x_i;\theta_{j+1})}/{p(z|x_i;\theta_j)}) \\&\le\sum_{i=1}^m\log(\sum_zp(z|x_i;\thetaj)\cdot({p(z|x_i;\theta_{j+1})}/{p(z|x_i;\theta_j)})) \\\sum_{i=1}^m\log(x_i;\theta_{j+1})-\sum_{i=1}^m\log(x_i;\theta_j)&\ge0 \end{aligned}

 

高斯混合模型

GMM(Gaussian Mixture Model,高斯混合模型)是指该算法由多个高斯模型线性叠加混合而成。每个高斯模型称之为component。GMM算法描述的是数据的本身存在的一种分布。

GMM算法常用于聚类应用中,component的个数就可以认为是类别的数量。

假定GMM由k个Gaussian分布线性叠加而成,那么概率密度函数如下:

\begin{aligned}p(x)&=\sum_{k=1}^Kp(k)p(x|k) \\&=\sum_{k=1}^K\pi_kp(x;\mu_k, \Sigma_k)\end{aligned}

对数似然函数:

                                                                               l(\pi, \mu, \sigma)=\sum_{i=1}^N\log(\sum_{k=1}^K\pi_kp(x_i;\mu_k,\Sigma_k))

E step:

                                                                                           \begin{aligned}w_j^{(i)}&=Q_i(z^{(i)}=j) \\&=p(z^{(i)}=j|x^{(i)};\pi, \mu, \Sigma)\end{aligned}
 

M step:

                                                 \begin{aligned}l(\pi, \mu, \Sigma)&=\sum_{i=1}^m\sum_{z^{(i)}}Q_i(z^{(i)})\log(\frac{p(x^{(i)}, z^{(i)};\pi, \mu, \Sigma)}{Q_i(z^{(i)})}) \\&=\sum_{i=1}^m\sum_{j=1}^kQ_i(z^{(i)}=j)\log\frac{p(x^{(i)}|z^{(i)}=j;\mu, \Sigma)\cdot p(z^{(i)}=j;\pi)}{Q_i(z^{(i)}=j)} \\&=\sum_{i=1}^m\sum_{j=1}^kw_j^{(i)}\log\frac{(\frac{1}{(2\pi)^{\frac{n}{2}}|\Sigma_j|^{\frac{1}{2}}}e^{-\frac{1}{2}(x^{(i)}-\mu_j)^T\Sigma_j^{-1}(x^{(i)}-\mu_j)})\cdot\pi_j}{w_j^{(i)}}\end{aligned}
 

对均值求偏导:

                                                 \begin{aligned}l(\pi, \mu, \Sigma)&=\sum_{i=1}^m\sum_{j=1}^kw_j^{(i)}(-\frac{1}{2}(x^{(i)}-\mu_j)^T\Sigma_j^{-1}(x^{(i)}-\mu_j))+c \\ \frac{\partial l}{\partial\mu_l}&=-\frac{1}{2}\sum_{i=1}^mw_l^{(i)}(x^{(i)^T}\Sigma_l^{-1}x^{(i)}-x^{(i)^T}\Sigma_l^{-1}\mu_l-\mu_l^T\Sigma_l^{-1}x^{(i)}+\mu_l^T\Sigma_l^{-1}\mu_l) \\&=\frac{1}{2}\sum_{i=1}^mw_l^{(i)}((x^{(i)^T}\Sigma_l^{-1})^T+\Sigma_l^{-1}x^{(i)}-((\Sigma_l^{-1})^T+\Sigma_l^{-1})\mu_l) \\&=\sum_{i=1}^mw_l^{(i)}(\Sigma_l^{-1}x^{(i)}-\Sigma_l^{-1}\mu_l) \\&\underrightarrow{let \frac{\partial l}{\partial\mu_l}=0} \mu_l=\frac{\sum_{i=1}^mw_l^{(i)}x^{(i)}}{\sum_{i=1}^mw_l^{(i)}}\end{aligned}

对方差求偏导:

                                                  \begin{aligned}l(\pi, \mu, \Sigma)&=\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^kw_j^{(i)}(\log\Sigma_j^{-1}-(x^{(i)}-\mu_j)^T\Sigma_j^{-1}(x^{(i)}-\mu_j))+c \\\frac{\partial l}{\partial\Sigma_l}&=\frac{1}{2}\sum_{i=1}^mw_l^{(i)}(\Sigma_l-(x^{(i)}-\mu_j)(x^{(i)}-\mu_j)^T) \\&\underrightarrow{let \frac{\partial l}{\partial\Sigma_l}=0}\Sigma_l=\frac{\sum_{i=1}^mw_l^{(i)}(x^{(i)}-\mu_j)(x^{(i)}-\mu_j)^T}{\sum_{i=1}^mw_l^{(i)}}\end{aligned}

对概率使用拉格朗日乘子法求解:

                                                  \begin{aligned}l(\pi, \mu, \Sigma)&=\sum_{i=1}^m\sum_{j=1}^kw_j^{(i)}\log\pi_j+c \\s.t. \ \ \ \ &\sum_{j=1}^k\pi_j=1 \\L(\pi)&=\sum_{i=1}^m\sum_{j=1}^kw_j^{(i)}\log\pi_j+\beta(\sum_{j=1}^k\pi_j-1) \\\frac{\partial L}{\partial\pi_l}&=\sum_{i=1}^m\frac{w_l^{(i)}}{\pi_l}+\beta \\&\underrightarrow{let \frac{\partial L}{\partial\pi_l}=0}\begin{cases}\beta&=-\sum_{i=1}^m\sum_{j=1}^kw_j^{(i)}=-m \\\pi_l&=\frac{1}{m}\sum_{i=1}^mw_l^{(i)}\end{cases}\end{aligned}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值