1. 概述
条件随机场(Conditional Random Field, CRF)是概率图模型(Probabilistic Graphical Model)与区分性分类( Discriminative Classification)的一种接合,能够用来对“结构预测”(structured prediction,e.g. 序列标注)问题进行建模。
如图1,论文 [1] 阐释了 CRF 与其他模型之间的关系。
图1. CRF 与 其他机器学习模型对比【src】
本文我们重点关注输入结点独立的“线性链条件随机场”(Linear-Chain CRF)(如图2)的原理与实现。线性链 CRF 通过与双向 LSTM(Bi-LSTM)的接合,可以用来建模更一般的线性链 CRF(图3),提高模型的建模能力。
图2. 简单的线性链 CRF【src】
图3. 一般性线性链 CRF【src】
2. CRF 算法
2.1 模型形式化
给定长度为 m m 的序列, 以及状态集
。 对于任意状态序列 (s1,⋯,sm),si∈S ( s 1 , ⋯ , s m ) , s i ∈ S , 定义其“势”(potential)如下:
我们定义 s0 s 0 为特殊的开始符号 ∗ ∗ 。这里对 ,势函数 ψ(s,s′,i)≥0 ψ ( s , s ′ , i ) ≥ 0 。也即,势函数是非负的,它对序列第 i i 位置发生的 到 s′ s ′ 的状态转移都给出一个非负值。
根据概率图模型的因子分解理论[1],我们有:
Z=∑s′1,…,s′mψ(s′1,…,s′m) Z = ∑ s 1 ′ , … , s m ′ ψ ( s 1 ′ , … , s m ′ ) 为归一化因子。
同 HMM 类似,CRF 也涉及三类基本问题:评估(计算某一序列的似然值)、解码(给定输入,寻找似然最大的序列)及训练(根据数据估计 CRF 的参数),解决这三个问题也都涉及前向算法、后向算法及 Viterbi 算法。
CRF 的势函数类似于概率,只不过没有归一化,因此这里介绍的 CRF 前向算法、Viterbi 算法、后向算法,同 HMM 基本一致。
2.2 前向算法
定义:
表示,以 s s 结尾的长度为 的子序列的势。
显然, α(1,s)=ψ(∗,s1,1) α ( 1 , s ) = ψ ( ∗ , s 1 , 1 )
根据定义,我们有如下递归关系:
归一化因子可以计算如下:
对于给定的序列 (s1,⋯,sm) ( s 1 , ⋯ , s m ) ,其中条件概率(似然)可以计算:
* 通过前向算法,我们解决了评估问题,计算和空间复杂度为 O(m⋅|S