Reading Notes: MLAPP Chapter 10: Mixture Models and the EM Algorithm
EM Algorithm
我们用$z$表示latent variable,用$x$表示observed variable。
我们的原始目标是最大化log likelihood
\[l(\theta) = \log{p(x | \theta)} = \log{\sum_z{p(x, z | \theta)}}\]但是当$z$的维度很高时,将其marginalize是不现实的。EM的思路是将其表示为
\[Q(\theta, \theta^{(t-1)}) = \mathbb{E}_{\hat{z} \sim p(z | x, \theta^{(t-1)})}{[\log{p(x, \hat{z} | \theta)}]}\]EM算法不断重复两步操作:Expectation (E-step) 和Maximization (M-step). 在E-step中,我们按照已有的的参数猜测$z$的posterior,并以此计算expected complete-data log likelihood. 而在M-step中,我们计算最优化这个likelihood的参数,用它更新已有的的参数。
应用:Parameter Estimation in GMMs
下面举例EM如何应用在GMM中。GMM表示为
\[p(x | \theta) = \sum_{k}{\pi_k \mathcal{N}(x | \mu_k, \sigma_k)}\]对于mixture models,
\[\begin{align*} Q(\theta, \theta^{(t-1)}) &= \mathbb{E} \big[ \log{p(x, z | \theta)} \big] \\ &= \mathbb{E} \big[ \log{\prod_k{[\pi_k p(x | \theta_k)]^{\mathbb{I}(z=k)}}} \big] \\ &= \sum_k{\mathbb{E}[\mathbb{I}(z=k)] \log[\pi_k p(x | \theta_k)]} \\ &= \sum_k{p(z=k | x, \theta^{(t-1)}) \log[\pi_k p(x | \theta_k)]} \\ &= \sum_k{r_k \log[\pi_k p(x | \theta_k)]} \\ \end{align*}\]其中,可以把$r_k$理解为该$x$在计算$z$的expectation时分配给$z=k$的权重。E-step即是计算这个值。
E-step:根据Bayes theorem,有
\[r_k = p(z=k | x, \theta^{(t-1)}) = \frac{\pi^{(t-1)}_k p(x | \theta^{(t-1)}_k)}{\sum_{k'}{\pi^{(t-1)}_{k'} p(x | \theta^{(t-1)}_{k'})}}\]M-step:代入$r_k$,最大化$Q$,易得
\[\pi^{(t)}_k \leftarrow r_k\]直观的解释是,更新后的mixing weights等于在E-step中分配的权重,当有多组数据时,取权重的平均值。
延伸:K-means Algorithm
K-means其实是GMM的一种特殊情况,它作出了以下限制:
- $\pi_k = 1/K$:所有base model的prior均相等
- $\Sigma_k = \sigma^2 I_D$:所有Gaussian的covariance matrix均相同且为identity
- Hard EM:在E-step中,对posterior使用delta function approximation,使得给$z$的权重为one-hot。因为这一点,K-means退化为了一个non-probabilistic model,它不能用来计算data的likelihood。
应用:Topic Mining with Mixture of ULMs
Adapted from Text Mining and Analytics Week 3 by ChengXiang Zhai
Topic Mining即是从文档中提取话题,最简单的形式为从单一文档中提取单一话题。考虑使用由两个Unigram Language Model (ULM) 组成的mixture model对文档进行建模,其中一个ULM对文档$d$的话题进行建模,表示为$p(w \mid \theta_d)$;另一个ULM对background进行建模,表示为$p(w \mid \theta_B)$。Mixture weights为$\lambda_d, \lambda_B$,满足$\lambda_d +\lambda_B = 1$。这定义了一个generative process:生成文档的每个词时,首先根据mixture weights sample出一个base model,然后根据该model的ULM sample出一个词。
将background model提取出来的好处是,可以用它capture自然语言中通用的distribution,这样可以使topic model更有效地表示文档的独特特征。Topic model不必去capture那些本来出现频率就比较大的词语,避免了mixture model之间的competition。
在对这个mixture model进行estimation时,可以将文档中的每一个词看作observed variable $w$,对应的生成这个词的base model视为latent variable $z \in {d, B}$。我们假设$\lambda_d, \lambda_B$固定,background ULM可从large corpus估计得出,因而需要估计的参数为topic ULM $p(w \mid \theta_d)$。
由E-step可得每个词对所有base model的权重分布
\[p(z=d | w) = \frac{\lambda^{(t-1)}_d p^{(t-1)}(w | \theta_d)}{\lambda^{(t-1)}_d p^{(t-1)}(w | \theta_d) + \lambda^{(t-1)}_B p(w | \theta_B)}\]而由M-step可得topic ULM的更新规则
\[\begin{align*} p^{(t)}(w | \theta_d) &= \frac{\sum_{w' \in d}{\mathbb{I}(w'=w) p(z=d | w')}}{\sum_{w' \in d}{p(z=d | w')}} \\ &= \frac{c(w) p(z=d | w)}{\sum_{w' \in V}{c(w') p(z=d | w')}} \end{align*}\]其中$c(w)$为词$w$在文档中出现的频数。
延伸:Probabilistic Latent Semantic Analysis (PLSA)
PLSA将上面的问题扩展到:给定$n$个文档,我们的目标是寻找$k$个话题,并给出文档的topic coverage。我们保留background ULM,同时使用$k$个topic ULM对每个话题进行建模,表示为$p(w \mid \theta_1), \dots, p(w \mid \theta_k)$。Mixture weights为$\lambda_B, \pi_{d1}, \dots, \pi_{dk} \forall d \in C$,其中$\lambda_B$表示从background生成的概率,$\pi_{di}$表示在文档$d$中,在非background生成的前提下,从第$i$个topic生成的概率,满足$\forall d \in C, \sum_i{\pi_{di}} = 1$ 。$\pi_{di}$代表了topic $i$在文档$d$中的coverage。
在这个问题中,latent variable $z \in {1, \dots, k, B}$。同样,我们假设$\lambda_B$固定,因而需要估计的参数为topic ULM $p(w mid \theta_1), \dots, p(w \mid \theta_k)$以及mixture weights $\pi_{d1}, \dots, \pi_{dk} \forall d \in C$。
由E-step可得每个词对所有base model的权重分布
\[\begin{align*} p(z=i | w, d) &= \frac{\pi_{di} p(w | \theta_i)}{\sum_{j}{\pi_{dj} p(w | \theta_j)}} \\ p(z=B | w, d) &= \frac{\lambda_B p(w | \theta_B)}{\lambda_B p(w | \theta_B) + (1 - \lambda_B) \sum_j{\pi_{dj} p(w | \theta_j)}} \end{align*}\]而由M-step可得更新规则
\[\begin{align*} \pi_{di} &= \frac{\sum_{w \in V}{c(w, d) (1 - p(z=B | w, d)) p(z=i | w, d)}}{\sum_j{\sum_{w \in V}{c(w, d) (1 - p(z=B | w, d)) p(z=j | w, d)}}} \\ p(w | \theta_i) &= \frac{\sum_{d \in C}{c(w, d) (1 - p(z=B | w, d)) p(z=i | w, d)}}{\sum_{w' \in V}{\sum_{d \in C}{c(w', d) (1 - p(z=B | w', d)) p(z=i | w', d)}}} \end{align*}\]其中$c(w, d)$为词$w$在文档$d$中出现的频数。为了简洁,我们略去了角标$(t), (t-1)$。
如果想要控制提取的topic的内容,可以给topic models提供一些prior。这样我们就需要用MAP estimation做EM。其实唯一的变动就是在M-step中给topic model的更新规则加一个pseudo count
\[p(w | \theta_i) = \frac{\sum_{d \in C}{c(w, d) (1 - p(z=B | w, d)) p(z=i | w, d)} + \mu Pr(w | \theta_i)}{\sum_{w' \in V}{\sum_{d \in C}{c(w', d) (1 - p(z=B | w', d)) p(z=i | w', d)}} + \mu}\]其中$\mu$控制prior的强度。
Latent Dirichlet Allocation (LDA) 是PLSA的Bayesian版本,它给topic model和mixture weights都施加了Dirichlet Prior,使得模型的参数量更小。
其它
在机器翻译中,IBM Alignment Model用到了EM。https://courses.engr.illinois.edu/cs447/fa2018/Slides/Lecture22HO.pdf
HMM的forwards-backwards算法是EM的一种特殊情况。