EM算法

EM 算法的目标

先考虑著名的三硬币问题:

假设三枚硬币 A, B, C,其正面朝上的概率分别为 \(\pi,p,q\)

先抛 A,若正面朝上抛 B,反之则抛 C。

只记录抛 B,C 的结果,得到一个 01 序列。

要求给出此模型的参数 \(\theta=(\pi,p,q)\)

抽象出问题实质:

给出观测数据 \(Y=[Y_1,\dots,Y_n]^T\) 以及隐变量 \(Z=[Z_1,\dots,Z_n]^T\),则给出似然估计: \[ P(Y|\theta) =\sum_Z P(Y|Z,\theta) P(Z|\theta) \]

此问题中可以化简为:

\[ P(Y|\theta) =\prod_{j=1}^n \left[\pi p^{y_j} (1-p)^{1-y_j} +(1-\pi) q^{y_j} (1-q)^{1-y_j} \right] \] 希望给出

\[ \hat{\theta}=\arg \max_{\theta} \log(P(Y|\theta)) \]

下面给出一个用语的约定:

  • 观测数据/不完全数据 \(Y=[Y_1,\dots,Y_n]^T\)

  • 隐变量/未观测数据/ \(\text{Latent Variables}\) \(Z=[Z_1,\dots,Z_n]^T\)

  • 完全数据:\(P(Y,Z|\theta)\)

  • 完全数据的对数似然函数:\(\log P(Y,Z|\theta)\)

EM 算法的导出

\[ \begin{align} L(\theta) &=P(Y|\theta)=\sum_Z P(Y|Z,\theta) P(Z|\theta) \\ &=\log \left( \sum_Z P(Y|Z,\theta) P(Z|\theta) \right) \end{align} \]

我们逐步迭代去求出最优化的 \(\theta\),设第 \(i\) 次求出的解是 \(\theta^{(i)}\),则: \[ \begin{align} L(\theta)-L(\theta^{(i)})&=\log \left( \sum_Z P(Y|Z,\theta) P(Z|\theta) \right)-\log P(Y|\theta^{(i)}) \\ &= \log \left(\sum_Z P(Z|Y,\theta^{(i)}) \dfrac{ P(Y|Z,\theta) P(Z|\theta) } {P(Z|Y,\theta^{(i)})} \right)-\log P(Y|\theta^{(i)})\\ &\geq \sum_Z P(Z|Y,\theta^{(i)})\log \left( \dfrac{ P(Y|Z,\theta) P(Z|\theta) } {P(Z|Y,\theta^{(i)})} \right)-\log P(Y|\theta^{(i)})\\ &= \sum_Z P(Z|Y,\theta^{(i)})\log \left( \dfrac{ P(Y|Z,\theta) P(Z|\theta) } {P(Z|Y,\theta^{(i)}) P(Y|\theta^{(i)})} \right)\\ \end{align} \]

不等号是Jensen不等式给出的

\(B(\theta,\theta^{(i)})\hat{=}L(\theta^{(i)})+\sum_Z P(Z|Y,\theta^{(i)})\log \left( \dfrac{ P(Y|Z,\theta) P(Z|\theta) }{P(Z|Y,\theta^{(i)}) P(Y|\theta^{(i)})} \right)\)

显然有 \(L(\theta)\geq B(\theta,\theta^{(i)})\),即 \(B\) 为原本函数的一个下界,且 \(\theta=\theta^{(i)}\) 时取等。 故可以考虑最大化 \(B\),从而使得 \(L\) 最大。

即: \[ \begin{align} \theta^{(i+1)} &= \arg \max _{\theta} B(\theta,\theta^{(i)}) \\ &=\arg \max_{\theta} \left( L(\theta^{(i)})+\sum_Z P(Z|Y,\theta^{(i)})\log \left( \dfrac{ P(Y|Z,\theta) P(Z|\theta) }{P(Z|Y,\theta^{(i)}) P(Y|\theta^{(i)})} \right) \right) \\ &=\arg \max_{\theta} \left( \sum_Z P(Z|Y,\theta^{(i)})\log \left( P(Y|Z,\theta) P(Z|\theta) \right) \right)\\ &=\arg \max_{\theta} \sum_Z P(Z|Y,\theta^{(i)})\log P(Y,Z|\theta) \end{align} \] 上面的等号都是去掉了常数项(上面的变量只有 \(\theta\)\(\theta^{(i)}\)固定) 令 \(Q(\theta,\theta^{(i)})=\sum_Z P(Z|Y,\theta^{(i)})\log P(Y,Z|\theta)\),则 Q 函数即为:

完全似然函数 \(\log P(Y,Z|\theta)\) 关于在给定观测数据 \(Y\) 和当前参数估计\(\theta^{(i)}\) 下,对于未观测数据 \(Z\) 的条件概率分布 \(P(Z|Y,\theta^{(i)})\) 的期望。

EM 算法实质上就是找一个凸函数 \(B/Q\),让它在 \(\theta^{(i)}\) 处严格等于对数似然函数 \(\log P(Y,Z|\theta)\),但始终在似然函数下方。我们通过不断增大 B 函数,迫使似然函数上升。

关于 Q 函数更直观的认知,见 Qwen

EM 算法的流程

  1. 初始化 \(\theta^{(0)}\)
  2. E(Expectation): 求出 Q 函数
  3. M(Maximization): 最大化 Q 函数,求出下一轮的 \(\theta^{(i+1)}\)
  4. 重复 E-M 步,直到收敛为止

GMM

GMM,即 Gaussian Mixture Model,刻画了如下的问题:

有 K 个 Gaussian,分别服从 \(\theta_k=(\mu_k,\sigma_k)\);第 \(k\) 个模型被选择的概率是 \(\alpha_k\)

\(P(y)=\sum_{k=1}^K \alpha_k \phi(\mu_k,\sigma_k)\)

现在你既不知道各个Gaussian的具体参数,也不知道选择的概率 \(\alpha_k\),任务就是根据观测的序列 \(y=(y_1,\dots,y_N)\) 求出 \(\theta=(\alpha_1,\dots,\alpha_K;\theta_1,\dots,\theta_K)\)

使用 EM 算法完成这个任务,逐步分析:

明确隐变量

\[ \gamma_{jk}= \begin{cases} 1 & 第 j 个观测来自第 k 个模型\\ 0 & 反之 \end{cases} \]

有了观测数据 \(y_j\) 之后,那么完全数据就是

\[ (y_j,\gamma_{j1},\dots,\gamma_{jk}) \]

后面整体算作上文的 \(Z\)

写出似然函数:

$$ \[\begin{align} P(y,\gamma|\theta) &= \prod_{j=1}^N P(y_j,\gamma_{j1}\dots,\gamma_{jk})\\ &= \prod_{j=1}^N \prod_{k=1}^K [\alpha_k \phi(y_j|\theta_k)]^{\gamma_{jk}}\\ \end{align}\] $$