博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EM算法
阅读量:7100 次
发布时间:2019-06-28

本文共 1938 字,大约阅读时间需要 6 分钟。

期望极大算法(expectation maximization algorithm),简称EM算法,是一种迭代算法,可以用于含义隐变量(hidden variable) 的概率模型参数的极大似然估计,或极大后验概率估计. 期望极大算法(expectation maximization algorithm),简称EM算法,是一种迭代算法,可以用于含义隐变量(hidden variable) 的概率模型参数的极大似然估计,或极大后验概率估计.

延森不等式

在介绍EM算法之前,首先介绍一个重要的不等式——延森不等式(Jensen's Inequality)

  • x_1< x_2 , f(x) 是一个凸函数,且如果它有二阶导数,其二阶导数恒大于等于0,那么有:
    tf(x_1) + (1-t)f(x) \ge f(tx_1+(1-t)x_2) \quad 0\le t\le1\tag{1}

​ 如果我们在此条件下,假设 x 为随机变量,则有:

E[f(x)] \ge f[E(x)] \tag{2}
  • 同理,当 f(x) 为凹函数时,有:

    E[f(x)] \le f[E(x)] \tag{3}
  • 进一步,如果函数的二阶导数大于0,那么:

    \begin{align} E[f(x)] = f[E(x)]  &\Leftrightarrow x为常量 \\ &\Leftrightarrow x = E(x) \end{align}\tag{4}

EM算法

问题定义

假设训练集 \{x^{(1)},x^{(2)},...,x^{(m)}\} 是由m个独立的无标记样本构成。我们有这个训练集的概率分布模型 p(x,z;θ) ,但是我们只能观察到 x 。我们需要使参数 θ 的对数似然性最大化,即:

\begin{align} arg \max_\theta l(\theta) &= arg \max_\theta \sum_{i=1}^m \log P(x^{(i)};\theta) \\ &= arg \max_\theta \sum^m_{i=1} \log \sum_z P(x^{(i)},z^{(i)};\theta) \end{align} \tag{5}

形式化过程

具体来说,我们需要每次为函数\log P(x;\theta)上的点\theta,找到一个凹函数 g(\theta) \le \log P(x;\theta), 每次取 g(\theta) 的最大值点为下一个 \theta ,迭代直到目标函数 logP(x;\theta) 达到局部最大值.

如下图所示:

推导

我们假设每一个 z^{(i)} 的分布函数为 Q_i,所以有 \sum_ZQ_i(z)=1, Q_i(z) \ge0,有:

\begin{align} l(\theta) &= \sum_i\log\sum_{z^{(i)}}p(x^{(i)},z^{(i)};\theta) \\ &= \sum_i \log \sum_{z^{(i)}}Q_i(z^{(i)})\frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} \\ &\ge \sum_i \sum_{z^{(i)}}Q_i(z^{(i)})\log \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} \end{align} \tag{6}

我们知道 \log 是一个凹函数,如果把 Q_i(z^{(i)}) 看作随机变量,\sum_{z^{(i)}}Q_i(z^{(i)}) \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}看作随机变量的概率分布函数 \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} 的期望,则由延森不等式(3)可得到上述不等式.

这样以来,\theta 的对数似然函数 l(\theta) 便有了一个下界,但我们希望得到一个更加紧密的下界,也就是使等号成立的情况. 那么有:

\frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} = c \quad(c为常数) \tag{7}

则:

Q_i(z^{(i)}) = c*p(x^{(i)},z^{(i)};\theta) \tag{8}

\sum_ZQ_i(z)=1, Q_i(z) \ge0,所以:

\sum_ZQ_i(z^{(i)})= \sum_Z c*p(x^{(i)},z^{(i)};\theta)=1 \tag{9}

所以:

c = \frac{1}{\sum_Z p(x^{(i)},z^{(i)};\theta)} \tag{10}

那么再由式(8),有:

\begin{align} Q_i(z^{(i)}) &= \frac{p(x^{(i)},z^{(i)};\theta)}{\sum_Z p(x^{(i)},z^{(i)};\theta)}\\ & = \frac{p(x^{(i)},z^{(i)};\theta)}{p(x^{(i)};\theta)} \\ &= p(z^{(i)}| x^{(i)};\theta) \end{align} \tag{11}

算法流程

repeat

(E step) for each i

Q_i(z^{(i)}) := p(z^{(i)}| x^{(i)};\theta)

end for

(M step)

\theta := arg\max_\theta\sum_i \sum_{z^{(i)}}Q_i(z^{(i)})\log \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}

until 似然函数达到最大值

参考资料

[1] danerer-CSDN. Andrew Ng机器学习课程笔记(十三)之无监督学习之EM算法[EB/OL] , https://blog.csdn.net/danerer/article/details/80282612#expectation-maximization-algorithm, 2018-5-11/2018-7-30.

[2] 维基百科. Jensen's inequality[DB/OL], https://en.wikipedia.org/wiki/Jensen%27s_inequality, 2018-06-06/2018-7-30.

延森不等式

在介绍EM算法之前,首先介绍一个重要的不等式——延森不等式(Jensen's Inequality)

  • x_1< x_2 , f(x) 是一个凸函数,且如果它有二阶导数,其二阶导数恒大于等于0,那么有:
    tf(x_1) + (1-t)f(x) \ge f(tx_1+(1-t)x_2) \quad 0\le t\le1\tag{1}

​ 如果我们在此条件下,假设 x 为随机变量,则有:

E[f(x)] \ge f[E(x)] \tag{2}
  • 同理,当 f(x) 为凹函数时,有:

    E[f(x)] \le f[E(x)] \tag{3}
  • 进一步,如果函数的二阶导数大于0,那么:

    \begin{align} E[f(x)] = f[E(x)]  &\Leftrightarrow x为常量 \\ &\Leftrightarrow x = E(x) \end{align}\tag{4}

EM算法

问题定义

假设训练集 \{x^{(1)},x^{(2)},...,x^{(m)}\} 是由m个独立的无标记样本构成。我们有这个训练集的概率分布模型 p(x,z;θ) ,但是我们只能观察到 x 。我们需要使参数 θ 的对数似然性最大化,即:

\begin{align} arg \max_\theta l(\theta) &= arg \max_\theta \sum_{i=1}^m \log P(x^{(i)};\theta) \\ &= arg \max_\theta \sum^m_{i=1} \log \sum_z P(x^{(i)},z^{(i)};\theta) \end{align} \tag{5}

形式化过程

具体来说,我们需要每次为函数\log P(x;\theta)上的点\theta,找到一个凹函数 g(\theta) \le \log P(x;\theta), 每次取 g(\theta) 的最大值点为下一个 \theta ,迭代直到目标函数 logP(x;\theta) 达到局部最大值.

如下图所示:

推导

我们假设每一个 z^{(i)} 的分布函数为 Q_i,所以有 \sum_ZQ_i(z)=1, Q_i(z) \ge0,有:

\begin{align} l(\theta) &= \sum_i\log\sum_{z^{(i)}}p(x^{(i)},z^{(i)};\theta) \\ &= \sum_i \log \sum_{z^{(i)}}Q_i(z^{(i)})\frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} \\ &\ge \sum_i \sum_{z^{(i)}}Q_i(z^{(i)})\log \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} \end{align} \tag{6}

我们知道 \log 是一个凹函数,如果把 Q_i(z^{(i)}) 看作随机变量,\sum_{z^{(i)}}Q_i(z^{(i)}) \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}看作随机变量的概率分布函数 \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} 的期望,则由延森不等式(3)可得到上述不等式.

这样以来,\theta 的对数似然函数 l(\theta) 便有了一个下界,但我们希望得到一个更加紧密的下界,也就是使等号成立的情况. 那么有:

\frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})} = c \quad(c为常数) \tag{7}

则:

Q_i(z^{(i)}) = c*p(x^{(i)},z^{(i)};\theta) \tag{8}

\sum_ZQ_i(z)=1, Q_i(z) \ge0,所以:

\sum_ZQ_i(z^{(i)})= \sum_Z c*p(x^{(i)},z^{(i)};\theta)=1 \tag{9}

所以:

c = \frac{1}{\sum_Z p(x^{(i)},z^{(i)};\theta)} \tag{10}

那么再由式(8),有:

\begin{align} Q_i(z^{(i)}) &= \frac{p(x^{(i)},z^{(i)};\theta)}{\sum_Z p(x^{(i)},z^{(i)};\theta)}\\ & = \frac{p(x^{(i)},z^{(i)};\theta)}{p(x^{(i)};\theta)} \\ &= p(z^{(i)}| x^{(i)};\theta) \end{align} \tag{11}

算法流程

repeat

(E step) for each i

Q_i(z^{(i)}) := p(z^{(i)}| x^{(i)};\theta)

end for

(M step)

\theta := arg\max_\theta\sum_i \sum_{z^{(i)}}Q_i(z^{(i)})\log \frac{p(x^{(i)},z^{(i)};\theta)}{Q_i(z^{(i)})}

until 似然函数达到最大值

参考资料

[1] danerer-CSDN. Andrew Ng机器学习课程笔记(十三)之无监督学习之EM算法[EB/OL] , https://blog.csdn.net/danerer/article/details/80282612#expectation-maximization-algorithm, 2018-5-11/2018-7-30.

[2] 维基百科. Jensen's inequality[DB/OL], https://en.wikipedia.org/wiki/Jensen%27s_inequality, 2018-06-06/2018-7-30.

转载于:https://juejin.im/post/5b6b11986fb9a04fd93e5c06

你可能感兴趣的文章
在Linux命令行下令人惊叹的惊叹号(!)
查看>>
深一层看依赖注入
查看>>
【原创】erlang 模块之 os
查看>>
开发工具,编译器控件
查看>>
11g RAC的卸载
查看>>
linux驱动之ioctl
查看>>
redhat nginx 安装
查看>>
Spark 2.x kafka LocationStrategies 的几种方式
查看>>
把非透明swf动画dreamweaver做成透明背景flash动画方法
查看>>
solr相关查询参数
查看>>
PHP设计模式学习笔记: 模版方法
查看>>
实现虚拟机linux共享上网(利用NAT)
查看>>
阿里云的maven代理,比较快
查看>>
浅谈finally使用坑。
查看>>
Python协程深入理解
查看>>
【iphone游戏开发】iphone-Cocos2D游戏开发之一:游戏术语大解析
查看>>
JavaRebel的简单配置
查看>>
获取Extjs文本域中的内容
查看>>
man who
查看>>
Git详解之六 Git工具
查看>>