Expectation Maximization (EM) Algorithm
Maximum Likelihood Estimation (MLE)
- Estimate the
parameters
of a probability distribution by maximizing alikelihood function
.- Under the assumed statistical model, the
observed data
is most probable.
- Under the assumed statistical model, the
已知:
- 概率分布\(D\)的概率密度函数(模型),如\(f(\mu,\sigma^2)\),但是
两个参数未知
。 - 采样样本数据\(x_1,x_2,\cdots, x_n\)。
求解:
- 模型参数\(\mu,\sigma^2\)估计值。
利用\(f(\mu,\sigma^2)\),计算样本似然函数
:
where \(f_{\mu,\sigma^2}(x_1,x_2,\cdots,x_n) = \prod_{i=1}^n f_{\mu,\sigma^2}(x_i)\)为样本数据联合分布的概率密度函数,表示在模型参数已知的情况下,得到这组样本数据的概率。
求解使似然函数
最大的参数值\(\hat{\mu},\hat{\sigma}^2\),即为最大似然估计值
:
为了方便计算,对似然函数
取对数:
- 对其求导,导数为0,得到似然方程;
- 解似然方程,得到模型参数估计值。
EM Algorithm
- 通过
样本数据
,估计样本的模型参数
,最常用的是MLE
。 - 但是,当样本数据中有
未知的隐含变量
时,无法直接用MLE得到模型参数,此时,需要用EM
算法。
思路:
- 猜想隐含变量(EM中的E)。
- 基于样本数据和猜测的隐含变量,利用MLE,求解模型参数(EM中的M)。
- 由于隐含变量是猜测的,所以得到的模型参数并不理想。
- 基于当前得到的模型参数,继续猜测隐含变量(E)。
- 以此类推,迭代,直到模型参数无变化,算法收敛。
推导
已知样本数据\(X = \{x_1,x_2,\cdots,x_n\}\),求解样本的模型参数\(\theta\),极大化对数似然函数:
\[\hat{\theta} = \arg\max_\theta\sum_{i=1}^n\log f(x_i;\theta).\]假设样本数据中有隐含变量\(Z = \{z_1,z_2,\cdots,z_n\}\),此时:
\[\begin{aligned} \hat{\theta} & = \arg\max_\theta\sum_{i=1}^n\log f(x_i;\theta) \\ & = \arg\max_\theta\sum_{i=1}^n\log \sum_Z f(x_i,z_i;\theta). \end{aligned}\]上式无法直接求解\(\theta\),对其缩放:
\[\begin{aligned} \sum_{i=1}^n\log \sum_Z f(x_i,z_i;\theta) & = \sum_{i=1}^n\log \sum_Z Q_i(z_i) \frac{f(x_i,z_i;\theta)}{Q_i(z_i)} \\ & \ge \sum_{i=1}^n \sum_Z Q_i(z_i)\log \frac{f(x_i,z_i;\theta)}{Q_i(z_i)}. \end{aligned}\]其中,利用了Jensen Inequality,因为\(\log\)函数为凹函数,因此\(f(\mathbb{E}[x])\ge \mathbb{E}[f(x)]\),即:
\[\log\sum_j \lambda_j y_j \ge \sum_j \lambda_j \log y_j, \lambda_j\ge 0, \sum_j \lambda_j = 1.\]当等号成立时:
\[Q_i(z_i) = \frac{f(x_i,z_i;\theta)}{\sum_Z f(x_i,z_i;\theta)} = \frac{f(x_i,z_i;\theta)}{f(x_i;\theta)} = f(z_i\vert x_i;\theta).\]因此,
\[\arg\max_\theta \sum_{i=1}^n \sum_Z Q_i(z_i)\log \frac{f(x_i,z_i;\theta)}{Q_i(z_i)}.\]去掉常数部分,则:
\[\arg\max_\theta \sum_{i=1}^n \sum_Z Q_i(z_i)\log f(x_i,z_i;\theta).\]算法
- Input:
- 样本数据\(X = {x_1,x_2,\cdots,x_n}\)
- 联合分布\(f(x,z\vert\theta)\)
- 条件分布\(f(z\vert x;\theta)\)
- 最大迭代次数\(J\)
- 随机初始化模型参数\(\theta_0\)
- 开始EM迭代(\(j: 1\to J\)):
- E:计算联合分布的条件概率期望:
- \(Q_i(z_i) = f(z_i\vert x_i;\theta_j)\).
- \(L(\theta,\theta_j) = \sum_{i=1}^n \sum_Z Q_i(z_i)\log f(x_i,z_i;\theta)\).
- M:极大化\(L(\theta,\theta_j)\):
- \(\theta_{j+1} = \arg\max L(\theta,\theta_j)\).
- 如果\(\theta_{j+1}\)收敛,算法结束.
- E:计算联合分布的条件概率期望:
- Output: 模型参数\(\theta\).