条件随机场(Conditional Random Field, CRF)的对比散度(Contrastive Divergence)训练过程
题目描述:条件随机场(CRF)是一种判别式概率图模型,常用于序列标注任务。训练CRF通常通过最大化对数似然来估计参数,这涉及计算模型分布的期望,但直接计算往往因配分函数而不可行。对比散度(Contrastive Divergence, CD)是近似计算梯度的一种方法,它通过马尔可夫链蒙特卡洛(MCMC)采样来估计期望,从而避免精确计算。本题目将详细解释CRF模型的对数似然梯度,并逐步推导如何使用CD算法来近似计算梯度并训练CRF。
解题过程:
-
条件随机场(CRF)的基本设定
- CRF是一个条件概率模型,给定观测序列 \(\mathbf{x} = (x_1, x_2, ..., x_T)\),它输出状态(标签)序列 \(\mathbf{y} = (y_1, y_2, ..., y_T)\) 的条件概率。在序列标注中,通常假设为线性链结构,即每个标签 \(y_t\) 只依赖于前一标签 \(y_{t-1}\) 和当前观测 \(x_t\)。
- 模型定义:\(P(\mathbf{y} | \mathbf{x}; \mathbf{w}) = \frac{1}{Z(\mathbf{x}; \mathbf{w})} \exp\left( \sum_{t=1}^{T} \sum_{k=1}^{K} w_k f_k(y_{t-1}, y_t, \mathbf{x}, t) \right)\),其中 \(f_k\) 是特征函数(例如,指示函数),\(w_k\) 是对应权重,\(Z(\mathbf{x}; \mathbf{w}) = \sum_{\mathbf{y}} \exp\left( \sum_{t, k} w_k f_k(y_{t-1}, y_t, \mathbf{x}, t) \right)\) 是配分函数(归一化常数),确保概率和为1。
-
最大似然估计的梯度计算
- 目标:对于训练集 \(\{(\mathbf{x}^{(i)}, \mathbf{y}^{(i)})\}_{i=1}^{N}\),最大化对数似然 \(\mathcal{L}(\mathbf{w}) = \sum_{i=1}^{N} \log P(\mathbf{y}^{(i)} | \mathbf{x}^{(i)}; \mathbf{w})\)。
- 梯度推导:对单个样本 \((\mathbf{x}, \mathbf{y})\),梯度为:
\[ \frac{\partial \log P(\mathbf{y} | \mathbf{x}; \mathbf{w})}{\partial w_k} = \sum_{t=1}^{T} f_k(y_{t-1}, y_t, \mathbf{x}, t) - \mathbb{E}_{P(\mathbf{y}' | \mathbf{x}; \mathbf{w})} \left[ \sum_{t=1}^{T} f_k(y'_{t-1}, y'_t, \mathbf{x}, t) \right] \]
- 第一项是特征在真实标签序列 $ \mathbf{y} $ 上的求和,可直接计算。
- 第二项是特征在模型分布 $ P(\mathbf{y}' | \mathbf{x}; \mathbf{w}) $ 下的期望,即所有可能标签序列的加权平均,但直接计算需枚举所有序列(数量指数级),不可行。
-
对比散度(CD)的基本思想
- CD是一种近似计算期望的方法,通过运行短马尔可夫链来采样,避免精确计算。它常用于无向图模型(如CRF)的训练。
- 核心:用少量步数(如一步)的MCMC采样来近似模型分布。具体来说,从训练数据(真实标签)开始,运行马尔可夫链几步,用采样结果近似期望。
- 对于CRF,我们需计算 \(\mathbb{E}_{P(\mathbf{y}' | \mathbf{x}; \mathbf{w})}[\cdot]\)。CD用以下近似:从真实标签 \(\mathbf{y}\) 开始,用吉布斯采样(Gibbs sampling)更新标签序列一次,得到新序列 \(\tilde{\mathbf{y}}\),然后用 \(\tilde{\mathbf{y}}\) 的特征期望代替模型期望。
-
吉布斯采样步骤
- 吉布斯采样是MCMC的一种,用于从多维分布采样。在CRF中,给定当前标签序列 \(\mathbf{y}\),依次更新每个位置的标签 \(y_t\)。
- 更新规则:采样 \(y_t\) 来自条件分布 \(P(y_t | \mathbf{y}_{-t}, \mathbf{x}; \mathbf{w})\),其中 \(\mathbf{y}_{-t}\) 是除位置 \(t\) 外的其他标签。对于线性链CRF,这个条件分布只依赖于相邻标签 \(y_{t-1}\) 和 \(y_{t+1}\),可高效计算:
\[ P(y_t | y_{t-1}, y_{t+1}, \mathbf{x}; \mathbf{w}) \propto \exp\left( \sum_{k} w_k f_k(y_{t-1}, y_t, \mathbf{x}, t) + \sum_{k} w_k f_k(y_t, y_{t+1}, \mathbf{x}, t+1) \right) \]
- 注意:对于序列两端(t=1或t=T),只依赖一个相邻标签。
-
CD算法在CRF训练中的具体步骤
- 初始化:参数 \(\mathbf{w}\) 随机初始化。
- 对每个训练样本 \((\mathbf{x}, \mathbf{y})\):
a. 正相计算:计算特征在真实标签上的和:\(\phi_k = \sum_{t=1}^{T} f_k(y_{t-1}, y_t, \mathbf{x}, t)\)。
b. 负相采样:用吉布斯采样从模型分布生成近似样本:- 从真实标签 \(\mathbf{y}\) 开始,作为初始序列 \(\mathbf{y}^{(0)} = \mathbf{y}\)。
- 对每个位置 \(t=1,2,...,T\),按顺序采样新标签 \(y_t^{(1)}\) 来自条件分布 \(P(y_t | y_{t-1}^{(1)}, y_{t+1}^{(0)}, \mathbf{x}; \mathbf{w})\)。这里用最新值更新:当更新 \(y_t\) 时,\(y_{t-1}\) 已更新为 \(y_{t-1}^{(1)}\),\(y_{t+1}\) 还是旧值 \(y_{t+1}^{(0)}\)。
- 完成一遍扫描后,得到新序列 \(\tilde{\mathbf{y}} = \mathbf{y}^{(1)}\)。
c. 负相计算:计算特征在采样序列上的和:\(\tilde{\phi}_k = \sum_{t=1}^{T} f_k(\tilde{y}_{t-1}, \tilde{y}_t, \mathbf{x}, t)\)。
d. 梯度近似:梯度近似为 \(\nabla_k = \phi_k - \tilde{\phi}_k\)。
e. 参数更新:用随机梯度下降更新权重:\(w_k \leftarrow w_k + \eta \nabla_k\),其中 \(\eta\) 是学习率。
- 重复以上步骤直到收敛。
-
算法解释与注意事项
- 为什么CD有效?理论证明,当马尔可夫链收敛时,采样序列 \(\tilde{\mathbf{y}}\) 的期望就是模型期望。但实际中,只运行一步链(CD-1)可提供低方差估计,足以指导梯度方向,使训练高效。
- 与精确方法对比:精确计算期望需用前向-后向算法(动态规划),但CD避免了配分函数计算,适用于复杂或非线性特征的情况。
- 实际训练中,常用小批量(mini-batch)数据平均梯度,并加入正则化(如L2)防止过拟合。
总结:条件随机场(CRF)的对比散度(CD)训练通过吉布斯采样近似模型分布的期望,将梯度计算转化为采样问题,从而避开配分函数的直接计算。这个过程结合了MCMC的采样思想和随机梯度下降的优化,使CRF能够高效训练,尤其适用于特征空间大的序列标注任务。