EM 算法
EM 算法用于求解含隐变量的极大似然估计,先根据当前参数估计隐变量的分布,然后极大化该分布下似然函数的期望,以此得到新的参数估计。
1. Notations
- 观测数据:$X=(x_1,x_2,\dots ,x_n)$
- 参数:$\theta$
- 隐变量:$Z$
- 对数似然:$L(\theta;X)=\log P\left( X\mid \theta \right)$
2. Introduction
对于已知的观测数据 $X$,我们想要一个生成模型来描述 $X$ 的分布,这个分布 $P(X\mid \theta)$ 的结构通常是给定的,那么我们只需估计出一个合适的参数 $\theta$ 即可。
2.1. 极大似然估计
对于简单模型,最常用的方法是极大似然估计:寻找参数 $\theta$ 使得对数似然 $L(\theta;X)=\log P\left( X\mid \theta \right)$ 最大化。
\[\begin{aligned} L(\theta;X)&=\log P\left( X\mid \theta \right)\\ &=\log \prod_{i=1}^{n}P(x_i\mid \theta)\\ &=\sum_{i=1}^{n}\log P(x_i\mid \theta) \end{aligned}\] \[\theta^{\star}=\mathop{\arg \max}_{\theta}\sum_{i=1}^{n}\log P(x_i\mid \theta)\]2.2. 隐变量
但是有的模型中会存在隐变量,这是一些不在观测数据中但非常重要的变量。
如果存在隐变量 $Z$,那么对数似然重新写成:
\[\begin{aligned} L(\theta;X)&=\log P\left( X\mid \theta \right)\\ &=\log \sum_{Z}P(X\mid Z,\theta)P(Z\mid \theta)\\ &=\log \sum_{Z}\prod_{i=1}^{n}P(x_i\mid Z,\theta)P(Z\mid \theta) \end{aligned}\]这种形式很难直接求出极值,因为我们不仅要估计 $\theta$, 还要同时估计 $Z$ 的分布 $P(Z\mid \theta)$。
3. EM 算法
3.1. 基本思想
EM 算法的思想是:
- 在参数 $\theta$ 已知的情况下,我们可以推断出隐变量 $Z$ 的分布;
- 在 $Z$ 分布已知的情况下,我们可以通过极大似然估计得到参数 $\theta$。
- 两者交替迭代,最终收敛到局部最优解。
3.2. 理论推导
我们可以先假设 $Z$ 服从的分布为 $Z\sim q\left( Z\mid \theta \right)$,于是有:
\[\begin{aligned} \log P\left( X\mid \theta \right) &=\log P\left( X,Z\mid \theta \right) -\log P\left( Z\mid X,\theta \right)\\ &=\log \frac{P\left( X,Z\mid \theta \right)}{q\left( Z\mid \theta \right)}-\log \frac{P\left( Z\mid X,\theta \right)}{q\left( Z\mid \theta \right)}\\ \end{aligned}\]两端关于 $Z\sim q\left( Z\mid \theta \right)$ 同时计算期望:
\[\begin{aligned} \log P\left( X\mid \theta \right) &=\sum_Z{q\left( Z\mid \theta \right) \log \frac{P\left( X,Z\mid \theta \right)}{q\left( Z\mid \theta \right)}}\color{blue}{ -\sum_Z{q\left( Z\mid \theta \right) \log \frac{P\left( Z\mid X,\theta \right)}{q\left( Z\mid \theta \right)}}}\\ &=\mathop {\mathbb{E}} \limits_{Z\sim q\left( Z\mid \theta \right)}\left[ \log P\left( X,Z\mid \theta \right) \right] \color{green}{ -\sum_Z{q\left( Z\mid \theta \right) \log q\left( Z\mid \theta \right) +\color{blue}{ \mathrm{KL}\left( q\left( Z\mid \theta \right) \parallel P\left( Z\mid X,\theta \right) \right) }}}\\ &=\mathop {\mathbb{E}} \limits_{Z\sim q\left( Z\mid \theta \right)}\left[ \log P\left( X,Z\mid \theta \right) \right] +\color{green}{ H\left( q\left( Z\mid \theta \right) \right) }+\color{blue}{ \mathrm{KL}\left( q\left( Z\mid \theta \right) \parallel P\left( Z\mid X,\theta \right) \right) }\\ &=\color{red}{ELBO\left( q,\theta \mid X \right) }+\color{blue}{\mathrm{KL}\left( q\left( Z\mid \theta \right) \parallel P\left( Z\mid X,\theta \right) \right) }\\ \end{aligned}\]ELBO 是 evidence lower bound optimization(ELBO),是 $L\left( \theta \right) $ 的一个下界。
3.3. 具体流程
EM 算法重复下面两步:
-
寻找使得 KL 散度最小的 $q^{(t)}(Z) =P\left( Z\mid X,\theta ^{\left( t \right)} \right) $,使得 ELBO 进一步逼近 $L\left( \theta \right)$.
-
寻找 $ELBO\left( \theta \mid q^{(t)},X \right) $ 的极大值点作为新参数 $\theta^{(t+1)}$.
3.3.1. E 步
\[L( \theta ) -ELBO( q ,\theta\mid X ) =\color{blue}{ \mathrm{KL}\left( q \parallel P\left( Z\mid X,\theta\right) \right) }\]要使 ELBO 逼近 $L\left( \theta \right)$,就要让 KL 散度最小,先通过当前参数 $\theta^{(t)}$ 估计 $q^{(t)}$,得 $q^{(t)}(Z) =P\left( Z\mid X,\theta ^{\left( t \right)} \right)$,于是有:
\[\begin{aligned} L\left( \theta \right) &=\log P\left( X\mid \theta \right)\\ &=\mathop {\mathbb{E}} \limits_{Z\sim P\left( Z\mid X,\theta ^{\left( t \right)} \right)}\left[ \log P\left( X\mid \theta \right) \right]\\ &=Q\left( \theta ;\theta ^{\left( t \right)} \right) +\mathrm{KL}\left( P\left( Z\mid X,\theta ^{\left( t \right)} \right) \parallel P\left( Z\mid X,\theta \right) \right)\\ \end{aligned}\]这里我们将 $ELBO\left( \theta \mid q^{(t)},X \right)$ 记为 $Q\left( \theta ;\theta ^{\left( t \right)} \right)$:
\[Q\left( \theta ;\theta ^{\left( t \right)} \right)=\mathop {\mathbb{E}} \limits_{Z\sim P\left( Z\mid X,\theta ^{\left( t \right)} \right)}\left[ \log P\left( X,Z\mid \theta \right) \right] +H\left( P\left( Z\mid X,\theta ^{\left( t \right)} \right) \right)\]3.3.2. M 步
由于信息熵为常数项,因此最大化 $Q\left( \theta ;\theta ^{\left( t \right)} \right)$ 等价于将对数似然 $\log P ( X,Z\mid \theta )$ 的期望最大化。
\[\theta ^{\left( t+1 \right)}=\mathop {\mathrm{arg}\max} \limits_{\theta}\,Q\left( \theta ;\theta ^{\left( t \right)} \right) =\mathop {\mathrm{arg}\max} \limits_{\theta}\,\mathop {\mathbb{E}} \limits_{Z\sim P\left( Z\mid X,\theta ^{\left( t \right)} \right)}\left[ \log P\left( X,Z\mid \theta \right) \right]\]3.4. 收敛性
EM 算法的解是逐步更优的。
Proof:
\[L\left( \theta \right) =Q\left( \theta ;\theta ^{\left( t \right)} \right) +\mathrm{KL}\left( P\left( Z\mid X,\theta ^{\left( t \right)} \right) \parallel P\left( Z\mid X,\theta \right) \right)\\\]显然有 $L\left( \theta ^{\left( t+1 \right)} \right) \ge L\left( \theta ^{\left( t \right)} \right)$。
既然最优值是单调递增的,那么收敛性也不难理解了。
4. 思考
\[\begin{aligned} \log P\left( X\mid \theta \right) &=\color{red}{ELBO\left( q,\theta \mid X \right) }+\color{blue}{\mathrm{KL}\left( q\left( Z\mid \theta \right) \parallel P\left( Z\mid X,\theta \right) \right) }\\ &=\mathop {\mathbb{E}} \limits_{Z\sim q\left( Z\mid \theta \right)}\left[ \log P\left( X,Z\mid \theta \right) \right] +\color{green}{ H\left( q\left( Z\mid \theta \right) \right) }+\color{blue}{ \mathrm{KL}\left( q\left( Z\mid \theta \right) \parallel P\left( Z\mid X,\theta \right) \right) }\\ \end{aligned}\]EM 算法中先极小化 $\mathrm{KL}\left( q \parallel P\left( Z\mid X,\theta^{(t)} \right) \right)$,将得到的 $q^{(t)}$ 带入到期望中,然后极大化期望。
注意到 $q^{(t)}$ 信息熵那一项被忽略掉了,因为 EM 算法认为 $q^{(t)}$ 确定后其信息熵就是一个常数项。
但是我认为信息熵作为一个正则化项,应当和 KL 散度一起考虑: $q(Z \mid \theta)$ 是 $Z$ 的真实分布,由于没法直接获得,所以只能暂时用 $P(Z\mid X,\theta^{(t)})$ 来近似代替, 但同时也应该考虑过拟合的风险,加上一个信息熵约束让 $q$ 不至于太复杂,这个想法应该是非常合理的。
所以我们需要的 $q^{(t)}$ 应该使 $\mathrm{KL}\left( q\parallel P\left( Z\mid X,\theta ^{(t)} \right) \right) +\color{red}{ H\left( q \right) }$ 最小。
E 步:
\[q^{(t)}=\mathop{\arg \max}_{q}\,\mathrm{KL}\left( q\parallel P\left( Z\mid X,\theta ^{(t)} \right) \right) + H\left( q \right)\]M 步:
\[\theta ^{\left( t+1 \right)}=\mathop {\mathrm{arg}\max} \limits_{\theta}\,\mathop {\mathbb{E}} \limits_{Z\sim q^{(t)}} \left[ \log P\left( X,Z\mid \theta \right) \right]\]但这样会带来两个问题:
- 不能证明 $L(\theta^{(t+1)})$ 比 $L(\theta^{(t)})$ 更优。
- E 步中的 $q^{(t)}$ 难以求解。
关于第一个问题,加了正则项后泛化性更强,但的确没办法保证下一步一定会更优,目前也没法证明一定能收敛,但是从经验角度来说应该效果会更好。
对于问题 2,如果我们要寻找使得 $\mathrm{KL}\left( q\parallel p\right) +{ H\left( q \right) }$ 最小的 $q$,首先设拉格朗日函数:
\[L(q)=\int q(x)\log \frac{q(x)}{p(x)}\,\mathrm{d}x-\int q(x)\log q(x)\,\mathrm{d}x +\lambda \left(1-\int q(x)\,\mathrm{d}x)\right)\]计算偏导:
\[\frac{\partial L}{\partial q(x)}=-\log p(x)-\lambda\]可见这种形式没有极值,那么我们转而寻找使得$\mathrm{KL}\left( p\parallel q\right) +{ H\left( q \right) }$ 最小的 $q$。
\[L(q)=\int p(x)\log \frac{p(x)}{q(x)}\,\mathrm{d}x-\int q(x)\log q(x)\,\mathrm{d}x +\lambda \left(1-\int q(x)\,\mathrm{d}x)\right)\] \[\frac{\partial L}{\partial q(x)}= -\frac{p(x)}{q(x)}-1-\log q(x)-\lambda\]让偏导为0,得:
\[p(x)=-q(x)\left(\log q(x)+\lambda+1 \right)\]两端积分得:
\[\lambda = H(q)-2\]代入得:
\[p(x)=-q(x)\left(\log q(x)+H(q)-1 \right)\]虽然等式关系得到了,但这个似乎解不出来,好吧,那就算了。。。
5. 补充更新
[Updated on 2021-08-30]
在 VAE 和 GAN 中一般都默认 $q(Z)$ 为正态分布,从某种角度来说,这也算是考虑了信息熵约束,因为在均值和方差确定的情况下,正态分布的信息熵是最小的。
[Updated on 2021-09-01]
看了李航的《统计学习方法》,里面提到了一个 F 函数:
\[F(q,\theta)=\mathop {\mathbb{E}} \limits_{Z\sim q\left( Z\right)}\left[ \log P\left( X,Z\mid \theta \right) \right] + H\left( q\left( Z\right) \right) \\\]可以证明,对于固定的 $\theta$,存在唯一的 $q$ 使得 F 函数极大化。
\[L(q)=\mathop {\mathbb{E}} \limits_{Z\sim q\left( Z\right)}\left[ \log P\left( X,Z\mid \theta \right) \right] + H\left( q\left( Z\right) \right)+\lambda \left(1-\int q(z)\,\mathrm{d}z)\right)\] \[\frac{\partial L}{\partial q(Z)}= \log P\left( X,Z\mid \theta \right)-1-\log q(Z)-\lambda=0\] \[\frac{P\left( X,Z\mid \theta \right)}{q(Z)}=\mathrm{e}^{1+\lambda}\] \[q(Z)=\frac{P\left( X,Z\mid \theta \right)}{P\left( X\mid \theta \right)}=P(Z\mid X,\theta)\]也就是说其实信息熵那一项其实考虑到里面去了,恰好就是 EM 的最优解,真是非常神奇。