EM算法

1,302 阅读3分钟

期望极大算法(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) 达到局部最大值.

如下图所示:

EM

推导

我们假设每一个 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) 达到局部最大值.

如下图所示:

EM

推导

我们假设每一个 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.