条件随机场是一种判别式无向图模型。
生成式模型是直接对联合分布进行建模,而判别式模型则是对条件分布进行建模。
条件随机场试图对多个变量在给定观测值后的条件概率进行建模,具体来说,若令 x = { x 1 , x 2 , . . . , x n } x = \{x_1,x_2,...,x_n\} x={x1,x2,...,xn}为观测序列, y = { y 1 , y 2 , . . . , y n } y = \{y_1,y_2,...,y_n\} y={y1,y2,...,yn}为与之相应的标记序列,则条件随机场的目标是构建条件概率模型 P ( y ∣ x ) P(y|x) P(y∣x)。
马尔可夫随机场(Markov Random Field,MRF)是典型的马尔可夫网,这是一种无向图模型。图中每个结点表示一个或一组变量,结点之间的边表示两个变量之间的依赖关系。马尔可夫随机场有一组势函数(potential functions),亦称因子(factor),这是定义在变量子集上的非负实函数,主要用于定义概率分布函数。
如下图即一个简单的马尔可夫随机场:
在一个马尔可夫随机场中定义如下概念:
马尔可夫随机场中,所有变量的联合概率可以通过团来定义,每个因子仅与一个团相关。若所有的团构成集合 C C C,与团 Q Q Q相关的变量集合记为 x Q x_Q xQ,则联合概率定义为:
P ( x ) = 1 Z ∏ Q ∈ C ψ Q ( x Q ) , ( 14.2 ) P(x)=\frac{1}{Z}\prod_{Q\in C}^{} \psi _{Q}(x_Q),(14.2) P(x)=Z1Q∈C∏ψQ(xQ),(14.2)其中 ψ Q ψ_Q ψQ为与团 Q Q Q对应的势函数,用于对团 Q Q Q中的变量关系进行建模。
有向图模型是一系列概率的连乘形式,无向图模型则是一系列函数的连乘形式。
自然语言处理中的词性标注(POS Tagging)就是非常适合CRF使用的地方。词性标注的目标是给出一个句子中每个词的词性(名词,动词,形容词等)。而这些词的词性往往和上下文的词的词性有关,为了让我们的分类器表现的更好,可以在标记数据的时候,可以考虑相邻数据的标记信息。如:“Bob (名词) drank(动词) coffee(名词) at(介词) Starbucks(名词)”,词性标注序列(名词,动词,名词,介词,名词)
显然比(名词,动词,动词,介词,名词)
更靠谱。动词后面还是动词显然是说不通的。
与马尔可夫随机场定义联合概率的方式类似,条件随机场使用势函数和图结构上的团来定义条件概率 P ( y ∣ x ) P(y|x) P(y∣x).给定观测序列 x x x,图14.6所示的链式条件随机场主要包含两种关于标记变量的团,即
选择合适的势函数,即可得到形如式(14.2)的条件概率定义。
在条件随机场中,通过选用指数势函数并引入特征函数(feature function),条件概率被定义为
P ( y ∣ x ) = 1 Z exp ( ∑ j ∑ i = 1 n − 1 λ j t j ( y i + 1 , y i , x , i ) + ∑ k ∑ i = 1 n μ k s k ( y i , x , i ) ) , ( 14.11 ) P(\mathbf{y} \mid \mathbf{x})=\frac{1}{Z} \exp \left(\sum_{j} \sum_{i=1}^{n-1} \lambda_{j} t_{j}\left(y_{i+1}, y_{i}, \mathbf{x}, i\right)+\sum_{k} \sum_{i=1}^{n} \mu_{k} s_{k}\left(y_{i}, \mathbf{x}, i\right)\right),(14.11) P(y∣x)=Z1exp(j∑i=1∑n−1λjtj(yi+1,yi,x,i)+k∑i=1∑nμksk(yi,x,i)),(14.11)
其中,
特征函数和权重系数的实际意义是什么?
每个特征函数定义了一个linear-CRF的规则,则其系数定义了这个规则的可信度。所有的规则和其可信度一起构成了我们的linear-CRF的最终的条件概率分布。
显然,要使用条件随机场,还需定义合适的特征函数,特征函数通常是实值函数,以刻画数据的一些很可能成立或期望成立的经验特性。以图14.5(a)的词性标注任务为例,若采用转移特征函数
t j ( y i + 1 , y i , x , i ) = { 1 , if y i + 1 = [ P ] , y i = [ V ] and x i = “ k n o c k ” 0 , otherwise t_{j}\left(y_{i+1}, y_{i}, \mathbf{x}, i\right)=\left\{\begin{array}{ll} 1, & \text { if } y_{i+1}=[P], y_{i}=[V] \text { and } x_{i}=“\mathrm{knock}” \\ 0, & \text { otherwise } \end{array}\right. tj(yi+1,yi,x,i)={1,0, if yi+1=[P],yi=[V] and xi=“knock” otherwise
则表示第 i i i个观测值 x i x_i xi为单词“knock”时,相应的标记 y i y_i yi和 y i + 1 y_{i+1} yi+1很可能分别为 [ V ] [V] [V]和 [ P ] [P] [P]。若采用状态特征函数
s k ( y i , x , i ) = { 1 , if y i = [ V ] and x i = “ k n o c k ” 0 , otherwise s_{k}\left(y_{i}, \mathbf{x}, i\right)=\left\{\begin{array}{ll} 1, & \text { if } y_{i}=[V] \text { and } x_{i}=“\mathrm{knock}” \\ 0, & \text { otherwise } \end{array}\right. sk(yi,x,i)={1,0, if yi=[V] and xi=“knock” otherwise
则表示观测值 x i x_i xi为单词“knock”时,它所对应的标记很可能为 [ V ] [V] [V]。
对比式(11)和(2)可看出,条件随机场和马尔可夫随机场均使用团上的势函数定义概率,两者在形式上没有显著区别;但条件随机场处理的是条件概率,而马尔可夫随机场处理的是联合概率。
[1]周志华-《机器学习》
[2]李航-《统计学习方法》
[3]【归纳综述】马尔可夫、隐马尔可夫 HMM 、条件随机场 CRF 全解析及其python实现