之前学习了隐马尔可夫模型,现在记录一下条件随机场。本文主要参考了《统计学习方法》,如有错误,请各位多多指教

1、什么是条件随机场

首先我们先了解什么是随机场。

在概率论中,随机场的定义为:由样本空间Ω = {0, 1, ..., G − 1}n取样构成的随机变量Xi所组成的S = {X1, ..., Xn}。若对所有的ω∈Ω下式均成立,则称π为一个随机场。更直白一点的理解是随机场是由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。就如一句话对他进行词性标注,先不论对错,只要对每个词标注了就形成一个随机场。

接着我们来了解什么是马尔科夫随机场。

先看《统计学习方法》中对马尔科夫随机场的定义。

概率无向图模型,又称为马尔可夫随机场,是一个可以由无向图表示的联合概率分布。

图(graph)是由结点(node)及连接结点的边(edge)组成的集合。结点和边分别记作 v 和 e,结点和边的集合分别记作 V 和 E,图记作G=(V,E)。无向图是指边没有方向的图。设有联合概率分布P(Y),Y是一组随机变量。由无向图G=(V,E)表示概率分布P(Y),即在图G中,每个结点 v 表示一个随机变量Yv;每条边e表示随机变量之间的概率依赖关系。

定义:设有联合概率分布P(Y)由无向图G=(V,E)表示,在图G中,结点表示随机变量,边表示随机变量之间的依赖关系。如果联合概率分布P(Y)满足成对、局部或全局马尔可夫性,就称此联合概率分布为概率无向图模型,或马尔可夫随机场。

成对、局部或全局马尔可夫性定义如下:

成对马尔可夫性:设u和v是无向图G中任意两个没有边连接的结点,结点u和v分别对应随机变量Yu和Yv,其他所有结点为O,对应的随机变量组是YO。成对马尔可夫性是指给定随机变量组YO的条件下随机变量Yu和Yv是条件独立的,即

 

条件随机场 python 条件随机场 汽车_条件随机场 python

局部马尔可夫性:设v是无向图G中任意一个结点,W是与v有边连接的所有结点,O是v, W以外的其他所有结点。分别表示随机变量Yv,以及随机变量组YW和YO。局部马尔可夫性是指在给定随机变量组YW的条件下随机变量Yv与随机变量组YO是独立的,即

 

条件随机场 python 条件随机场 汽车_结点_02

条件随机场 python 条件随机场 汽车_条件随机场 python_03

全局马尔可夫性:设结点集合A, B是在无向图G中被结点集合C分开的任意结点集合,如图11.2所示。结点集合A, B和C所对应的随机变量组分别是YA,YB和YC。全局马尔可夫性是指给定随机变量组YC条件下随机变量组YA,YB是条件独立的,即

 

条件随机场 python 条件随机场 汽车_条件随机场 python_04

 

 

 

条件随机场 python 条件随机场 汽车_条件随机场 python_05

上述成对的、局部的、全局的马尔可夫性定义是等价的。

这里更直白一点的理解是马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相连的位置的赋值有关,和与其不相连的位置的赋值无关。

条件随机场

条件随机场是给定随机变量X条件下,随机变量Y的马尔可夫随机场。这里主要介绍定义在线性链上的特殊的条件随机场,称为线性链条件随机场。

定义:设X与Y是随机变量,P(Y | X)是在给定X的条件下Y的条件概率分布。若随机变量Y构成一个由无向图G=(V,E)表示的马尔可夫随机场,即

 

条件随机场 python 条件随机场 汽车_无向图_06

对任意结点v成立,则称条件概率分布P(Y|X)为条件随机场。式中w~v表示在图G=(V,E)中与结点v有边连接的所有结点w,w != v表示结点v以外的所有结点,Yv,Yu与Yw为结点v,u与w对应的随机变量。

线性链条件随机场:

在CRF的定义中,我们并没有要求X和Y有相同的结构。而现实中,我们一般都假设X和Y有相同的图结构,在《统计学习方法》中主要说明的是线性链的情况,如图有:

 

条件随机场 python 条件随机场 汽车_结点_07

即:

条件随机场 python 条件随机场 汽车_无向图_08

X和Y有相同的结构的CRF就构成了线性链条件随机场(Linear chain Conditional Random Fields,以下简称 linear-CRF)。

linear-CRF的数学定义:


条件随机场 python 条件随机场 汽车_无向图_09

均为线性链表示的随机变量序列,在给定随机变量序列X的情况下,随机变量Y的条件概率分布 构成条件随机场,即满足马尔科性:

条件随机场 python 条件随机场 汽车_条件随机场_10

则称 为线性链条件随机场。

条件随机场的参数化形式

条件随机场通过定义特征函数和权重系数来转换成机器可以学习的模型。

下面先给出公式,然后进行解释:

 

条件随机场 python 条件随机场 汽车_结点_11

条件随机场 python 条件随机场 汽车_条件随机场_12

式中,tk和sl是特征函数,

条件随机场 python 条件随机场 汽车_结点_13

和ul是对应的权值.Z(x)是规范化因子,求和是在所有可能的输出序列上进行的

上式是线性链条件随机场模型的基本形式,表示给定输入序列x,对输出序列y预测的条件概率。tk是定义在边上的特征函数,称为转移特征,依赖于当前和前一个位置,sl是定义在结点上的特征函数,称为状态特征,依赖于当前位置。两者都依赖于位置,是局部特征函数。通常,特征函数tk和sl取值为1或0;当满足特征条件时取值为1,否则为0。条件随机场完全由特征函数和对应的权值确定。

线性链条件随机场的简化形式

即整理特征函数,将其统一起来。

设有K1个转移特征,K2个状态特征,K=K1 + K2,,记

条件随机场 python 条件随机场 汽车_结点_14

然后,对转移与状态特征在各个位置i求和,记作

 

条件随机场 python 条件随机场 汽车_条件随机场 python_15

对应的权值为

 

条件随机场 python 条件随机场 汽车_条件随机场_16

条件随机场为

条件随机场 python 条件随机场 汽车_无向图_17

以向量形式表示为

 

条件随机场 python 条件随机场 汽车_条件随机场 python_18

 

 

 

条件随机场 python 条件随机场 汽车_无向图_19

则条件随机场的向量形式为

 

条件随机场 python 条件随机场 汽车_结点_20

 

 

 

条件随机场 python 条件随机场 汽车_条件随机场 python_21

条件随机场的矩阵形式

引进特殊的起点和终点状态标记y0 =start , yn+1=stop。对观测序列x的每一个位置i,定义一个m阶矩阵(m是标记yi取值的个数)

 

条件随机场 python 条件随机场 汽车_条件随机场 python_22

条件概率为

 

条件随机场 python 条件随机场 汽车_条件随机场_23

 

 

 

条件随机场 python 条件随机场 汽车_条件随机场_24

注意,y0 =start , yn+1=stop表示开始状态与终止状态,Zw(x)是以start为起点stop为终点通过状态的所有路径y1,y2,...,yn的非规范化概率

条件随机场 python 条件随机场 汽车_结点_25

之和。

与隐马尔可夫模型类似,条件随机场也有三个问题:

1)条件随机场的概率计算问题

条件随机场的概率计算问题是给定条件随机场P(Y|X),输入序列x和输出序列Y,计算条件概率P(Yi=yi|x ),P(Yi-1=yi-1,Yi=yi|x)以及相应的数学期望的问题。为了方便起见,引进了前向-后向算法。

对每个指标i = 0,1,...,n + 1,定义前向向量

 

条件随机场 python 条件随机场 汽车_条件随机场_26

 

 

条件随机场 python 条件随机场 汽车_无向图_27

 

 

条件随机场 python 条件随机场 汽车_结点_28

ai(yi | x)表示在位置i的标记是yi并且到位置i的前部分标记序列的非规范化概率,yi可取的值有m个,所以ai是m维列向量。

定义后向向量

 

条件随机场 python 条件随机场 汽车_条件随机场_29

 

 

条件随机场 python 条件随机场 汽车_条件随机场_30

 

 

条件随机场 python 条件随机场 汽车_条件随机场_31

表示在位置i的标记是yi并且从i+1到n的后部分标记序列的非规范化概率。

可以得到

 

条件随机场 python 条件随机场 汽车_条件随机场 python_32

按照前向-后向向量的定义,很容易计算标记序列在位置i是标记yi的条件概率和在位置i-1与i是标记yi-1和yi的条件概率:

条件随机场 python 条件随机场 汽车_无向图_33

有了上一节计算的条件概率,我们也可以很方便的计算联合分布

条件随机场 python 条件随机场 汽车_条件随机场_34

和条件分布

条件随机场 python 条件随机场 汽车_条件随机场_35

的期望。(注:期望是每次的概率乘以其结果的总和)

期望值的计算

根据上面我们求得的条件概率,可以很方便地算出联合分布P(x,y)和条件分布P(y|x)的期望。

 

条件随机场 python 条件随机场 汽车_无向图_36

前向后向算法总结:

从上面可以看出非规范化概率

条件随机场 python 条件随机场 汽车_条件随机场_37

与HMM的隐藏状态转移概率的作用类似,只是非规范化不要求所有的状态的概率和为1,HMM的隐藏状态转移概率是规范化的,可以看出,线性链条件随机场更灵活一些。

条件随机场的学习算法

条件随机场模型实际上是定义在时序数据上的对数线形模型,其学习方法包括极大似然估计和正则化的极大似然估计。具体的优化实现算法有改进的迭代尺度法IIS、梯度下降法以及拟牛顿法。

参数学习算法与最大熵模型算法没什么区别,条件随机场模型的训练数据的对数似然函数为:

 

条件随机场 python 条件随机场 汽车_结点_38

关于转移特征的更新方程为

 

条件随机场 python 条件随机场 汽车_无向图_39

关于状态特征的更新方程为

 

条件随机场 python 条件随机场 汽车_无向图_40

T(x,y)是在数据(x,y)中出现所有特征数的总和:

 

条件随机场 python 条件随机场 汽车_条件随机场 python_41

具体算法如下:

 

条件随机场 python 条件随机场 汽车_结点_42

拟牛顿法:

对于条件随机场模型,学习的优化目标函数是:

 

条件随机场 python 条件随机场 汽车_条件随机场_43

其梯度函数是

 

条件随机场 python 条件随机场 汽车_结点_44

条件随机场 python 条件随机场 汽车_结点_45

条件随机场的预测算法:

预测算法也是采用了维特比算法,不需要重新推导,详情请见之前的HMM的预测算法,里面有相关算法和实例,相信解释的比较清楚。