1. EM算法
EM算法主要用来解决具有隐变量的混合模型的参数估计问题。做参数估计的时候,一般在比较简单的模型情况下,是直接可以得出解析解的。比如说常见的MLE问题,可通过直接求导得到结果:
\[\theta_{\mathrm{MLE}} = \arg \max_{\theta} p(x|\theta) = \arg \max_{\theta} \log p(x|\theta)
\]
其中,为简化运算引入了\(\log\)函数,称\(\log p(x|\theta)\)为“对数似然函数”。但是,对于含有隐变量的混合模型,直接求解析解是非常困难的,甚至没有解析解。
EM算法的迭代公式为:
\[\theta^{(t+1)} = \arg \max_{\theta} \mathbb{E}_{z|x, \theta^{(t)}}[\log p(x,z|\theta)]= \arg \max_{\theta} \int_{z} \log p(x,z|\theta) p(z|x, \theta^{(t)}) \text{ d}z
\]
其中,\(x\)是数据,\(z\)是隐变量,\(p(z|x, \theta^{(t)})\)是后验,\(\log p(x,z|\theta)\)称为对数联后概率or
对数完全数据。E-Step就是写出\(\mathbb{E}_{z|x, \theta^{(t)}}[\log p(x,z|\theta)]\)的表达式,M-Step就是让这个期望最大。
\[\begin{aligned}
\log p(x|\theta) = & \log \dfrac{p(x, \theta)}{p(\theta)} = \log \dfrac{p(x, \theta)p(z|x, \theta)}{p(\theta)p(z|x, \theta)}\\
= & \log \dfrac{p(x, \theta, z)}{p(\theta)p(z|x, \theta)} = \log \dfrac{p(x, z |\theta)p(\theta)}{p(\theta)p(z|x, \theta)}\\
= & \log p(x,z|\theta) - \log p(z|x,\theta)
\end{aligned}
\]
两边同时求期望:
\[\begin{aligned}
左边 &= \int_{z}\log p(x|\theta) \cdot p(z|x, \theta^{(t)}) \text{ d}z \\
&= \log p(x|\theta) \int_{z} p(z|x, \theta^{(t)}) \text{ d}z \\
&= \log p(x|\theta) = 左边什么都没做
\end{aligned}
\]
\[\begin{aligned}
右边 &= \int_{z} \log p(x,z|\theta) \cdot p(z|x, \theta^{(t)}) \text{ d}z - \int_{z} \log p(z|x,\theta) \cdot p(z|x, \theta^{(t)}) \text{ d}z\\
&= Q(\theta, \theta^{(t)}) - H(\theta, \theta^{(t)})
\end{aligned}
\]
则由定义直接可得:\(Q(\theta^{(t+1)}, \theta^{(t)}) \geq Q(\theta, \theta^{(t)}) \Rightarrow Q(\theta^{(t+1)}, \theta^{(t)}) \geq Q(\theta^{(t)}, \theta^{(t)})\)。
下面来证明\(H(\theta^{(t+1)}, \theta^{(t)}) \leq H(\theta^{(t)}, \theta^{(t)})\):
\[\begin{aligned}
H(\theta^{(t+1)}, \theta^{(t)}) - H(\theta^{(t)}, \theta^{(t)}) &= \int_{z} \log p(z|x,\theta^{(t+1)}) \cdot p(z|x, \theta^{(t)}) \text{ d}z - \int_{z} \log p(z|x,\theta^{(t)}) \cdot p(z|x, \theta^{(t)}) \text{ d}z \\
&= \int_{z} \log \dfrac{p(z|x,\theta^{(t+1)})}{p(z|x, \theta^{(t)})} \cdot p(z|x, \theta^{(t)}) \text{ d}z \\
&= -KL\left[p(z|x, \theta^{(t)}) || p(z|x,\theta^{(t+1)})\right] \\
&\leq 0
\end{aligned}
\]
其实,这里除了用KL散度,也可以使用Jensen不等式,具体如果有需要再查阅资料。
1.2 EM算法的公式推导
\[\begin{aligned}
\log p(x|\theta) &= \log p(x,z|\theta) - \log p(z|x, \theta) \\
&= \log \dfrac{p(x,z|\theta)}{q(z)} - \log \dfrac{p(z|x, \theta)}{q(z)}
\end{aligned}
\]
其中,这里引入了一个关于\(z\)的概率分布\(q(z)\)。下面等式两边分别关于\(q(z)\)求期望。
\[\begin{aligned}
左边 &= \int_{z}\log p(x|\theta) \cdot q(z) \text{ d}z \\
&= \log p(x|\theta) \int_{z} q(z)\text{ d}z \\
&= \log p(x|\theta) = 左边什么都没做
\end{aligned}
\]
\[\begin{aligned}
右边 &= \int_{z} \log \dfrac{p(x,z|\theta)}{q(z)} \cdot q(z) \text{ d}z - \int_{z} \log \dfrac{p(z|x, \theta)}{q(z)} \cdot q(z) \text{ d}z\\
&= \mathrm{ELBO} + KL\left[q(z)||p(z|x, \theta) \right]
\end{aligned}
\]
其中,\(\mathrm{ELBO} = \text{evidence lower bound}\),故名思意\(\mathrm{ELBO}\)是\(\log p(x|\theta)\)的一个下界。