随机变量的变换的EM算法
好的,我们开始学习“随机变量的变换的EM算法”。这是一个在统计学和机器学习中用于处理含有隐变量或数据缺失情形的参数估计的强大方法。
第一步:理解核心问题——含有隐变量的参数估计
想象一个场景:我们希望建立一个模型来描述我们观测到的数据(记为 \(X\))。这个模型的形态(例如,是高斯分布还是混合高斯分布)由一些未知的参数 \(\theta\) 决定。我们的目标是根据观测数据 \(X\) 来估计出最有可能的 \(\theta\)。一个经典且强大的方法是最大似然估计(MLE),即寻找能使得观测数据出现的概率(似然函数 \(L(\theta; X)\))最大的参数 \(\theta\):
\[\hat{\theta}_{MLE} = \arg\max_{\theta} L(\theta; X) = \arg\max_{\theta} p(X | \theta) \]
通常,我们会通过最大化对数似然函数 \(\ell(\theta) = \log p(X | \theta)\) 来求解,因为这会在数学上更简便。
但是,问题来了:如果我们的模型中存在一些我们无法直接观测到的随机变量,即隐变量(Latent Variables),记为 \(Z\),情况就变得复杂了。此时,我们观测到的 \(X\) 的似然函数,需要通过对所有可能的隐变量 \(Z\) 的状态进行“求和”(如果 \(Z\) 是离散的)或“积分”(如果 \(Z\) 是连续的)才能得到:
\[p(X | \theta) = \sum_{Z} p(X, Z | \theta) \]
或者
\[p(X | \theta) = \int p(X, Z | \theta) dZ \]
这个边缘化过程常常使得对数似然函数 \(\log p(X | \theta)\) 变得非常复杂,因为 \(\log\) 函数在里面的求和/积分之外。直接对这个复杂的函数进行最大化以求解 \(\theta\) 通常极其困难,甚至无法实现。
EM算法就是为了解决这个问题而诞生的。 它提供了一种迭代式的、巧妙的优化策略。
第二步:EM算法的基本框架——期望步(E-step)和最大化步(M-step)
EM算法的名字来源于它的两个交替进行的步骤:期望步(Expectation-step)和最大化步(Maximization-step)。它不直接求解复杂的原始优化问题,而是通过构建一个更容易处理的“替代函数”来逐步逼近最优解。
假设我们当前对参数 \(\theta\) 的估计值为 \(\theta^{(t)}\)(\(t\) 代表迭代次数)。那么一次完整的EM迭代如下:
- E步(期望步):
- 目标: 计算在给定观测数据 \(X\) 和当前参数估计 \(\theta^{(t)}\) 的条件下,隐变量 \(Z\) 的后验概率分布 \(p(Z | X, \theta^{(t)})\)。
- 核心计算: 基于这个后验分布,构造一个关于新参数 \(\theta\) 的函数,称为Q函数(Q-function)。Q函数定义为完全数据对数似然 \(\log p(X, Z | \theta)\) 关于隐变量后验分布的期望:
\[ Q(\theta | \theta^{(t)}) = \mathbb{E}_{Z | X, \theta^{(t)}} [\log p(X, Z | \theta)] \]
- 直观理解: 由于 \(Z\) 是未知的,我们无法直接使用 \(\log p(X, Z | \theta)\)。E步的作用就是,基于我们当前最好的猜测 \(\theta^{(t)}\),来“猜测”一下 \(Z\) 应该是什么样子的(即计算其分布),然后用这个猜测来“补全”我们的数据。Q函数可以看作是“在现有认知下,我们对完全数据似然的一个最佳估计”。
- M步(最大化步):
- 目标: 最大化我们在E步中得到的Q函数,从而更新我们的参数估计。
\[ \theta^{(t+1)} = \arg\max_{\theta} Q(\theta | \theta^{(t)}) \]
- 直观理解: 既然Q函数是我们对完全数据似然的最佳估计,那么找到一个能最大化这个估计值的参数 \(\theta\) 就是很自然的选择。这一步通常比直接最大化原始的对数似然 \(\log p(X | \theta)\) 要简单得多,因为对数符号现在在期望里面,不再被求和/积分所困扰。
算法流程:从一个初始猜测 \(\theta^{(0)}\) 开始,然后重复执行E步和M步,直到参数估计 \(\theta^{(t)}\) 收敛(即两次迭代之间的变化小于一个设定的阈值)。
第三步:一个经典例子——高斯混合模型(GMM)的EM算法
高斯混合模型是EM算法最经典的应用场景。假设我们的数据 \(X = \{x_1, ..., x_N\}\) 是由K个不同的高斯分布(称为“成分”或“组件”)以一定比例混合生成的。
- 观测变量: 数据点 \(x_i\)。
- 隐变量: 对于每个数据点 \(x_i\),我们不知道它究竟来自于哪一个高斯成分。因此,我们引入一个隐变量 \(z_i\),它是一个K维的one-hot向量(例如,如果 \(x_i\) 来自第k个成分,则 \(z_i\) 的第k个元素为1,其余为0)。
- 模型参数 \(\theta\): 每个高斯成分的权重 \(\pi_k\)(混合系数)、均值 \(\mu_k\) 和协方差矩阵 \(\Sigma_k\),即 \(\theta = \{\pi_k, \mu_k, \Sigma_k\}_{k=1}^K\)。
现在,我们应用EM算法:
-
初始化: 随机或通过某些启发式方法初始化参数 \(\theta^{(0)}\)。
-
循环迭代:
-
E步: 计算一个关键量——责任(Responsibility) \(\gamma(z_{ik})\)。
\[ \gamma(z_{ik}) = p(z_{ik}=1 | x_i, \theta^{(t)}) = \frac{\pi_k^{(t)} \mathcal{N}(x_i | \mu_k^{(t)}, \Sigma_k^{(t)})}{\sum_{j=1}^K \pi_j^{(t)} \mathcal{N}(x_i | \mu_j^{(t)}, \Sigma_j^{(t)})} \]
这个责任 \(\gamma(z_{ik})\) 直观上表示“在给定当前参数下,数据点 \(x_i\) 由第k个高斯成分生成的概率”。它正是隐变量 \(z_i\) 的后验分布期望。
* M步: 利用E步计算出的所有“责任”,来更新参数。此时的Q函数最大化会导出一组非常直观的更新公式,看起来就像是加权版的MLE:
* 更新每个成分的权重(混合系数):
\[ \pi_k^{(t+1)} = \frac{\sum_{i=1}^N \gamma(z_{ik})}{N} \]
* 更新每个成分的均值:
\[ \mu_k^{(t+1)} = \frac{\sum_{i=1}^N \gamma(z_{ik}) x_i}{\sum_{i=1}^N \gamma(z_{ik})} \]
* 更新每个成分的协方差矩阵:
\[ \Sigma_k^{(t+1)} = \frac{\sum_{i=1}^N \gamma(z_{ik}) (x_i - \mu_k^{(t+1)})(x_i - \mu_k^{(t+1)})^T}{\sum_{i=1}^N \gamma(z_{ik})} \]
可以看到,均值 \(\mu_k\) 的更新就是所有数据点的加权平均,权重就是每个点属于第k类的“责任”。
第四步:深入理解——为什么EM算法有效?
EM算法的有效性背后有坚实的理论保证。其核心在于,每一次EM迭代都保证不会降低原始数据的对数似然,即 \(\ell(\theta^{(t+1)}) \ge \ell(\theta^{(t)})\)。
这可以通过Jensen不等式来证明。关键点在于,我们可以将目标函数(对数似然)分解为:
\[\ell(\theta) = \log p(X | \theta) = \mathcal{L}(q, \theta) + KL(q || p) \]
其中,
- \(\mathcal{L}(q, \theta)\) 是Q函数相关的证据下界(ELBO)。
- \(KL(q || p)\) 是隐变量后验分布 \(p(Z|X,\theta)\) 与我们选择的某个分布 \(q(Z)\) 之间的Kullback-Leibler散度(恒大于等于0)。
在E步中,我们令 \(q(Z) = p(Z | X, \theta^{(t)})\),这使得 \(KL\) 散度为零,从而让ELBO \(\mathcal{L}(q, \theta)\) 紧贴对数似然 \(\ell(\theta)\)。
在M步中,我们固定 \(q(Z)\),优化 \(\theta\) 以增大ELBO \(\mathcal{L}(q, \theta)\)。由于 \(KL\) 散度在E步后为零,增大ELBO就直接导致了对数似然 \(\ell(\theta)\) 的增大(因为 \(KL\) 散度在M步后会变为非负,但ELBO的增大足以覆盖其变化并实现总体的似然增长)。
因此,EM算法通过不断优化一个紧贴原始目标函数下界的、更容易处理的替代函数(ELBO),从而稳定地提升似然值,最终收敛到一个局部最优解。
总结
随机变量的变换的EM算法是一个处理含有隐变量模型参数估计的经典迭代算法。它通过“E步”(利用当前参数猜测隐变量的分布,构建Q函数)和“M步”(最大化Q函数来更新参数)两个步骤的循环,巧妙地规避了直接处理复杂边缘似然函数的困难。该算法理论上有良好的收敛性保证(单调增加似然函数),并在诸如高斯混合模型、隐马尔可夫模型等众多机器学习模型中有着广泛而重要的应用。