首页 > 其他分享 >条件随机场(conditional random field,CRF)模型初探

条件随机场(conditional random field,CRF)模型初探

时间:2023-07-27 23:32:15浏览次数:35  
标签:conditional 模型 random field 概率 机场 条件 序列 标注

条件随机场(conditional random field,CRF)模型初探

1. 条件随机场,一种特殊的概率图模型结构

我们知道,从图结构角度来说,概率图模型可以分为以下两种:

  • 基于有向图的贝叶斯网:具备有向依赖性
  • 基于无向图的马尔科夫网:具备无向依赖性

条件随机场是一个在变量子集上存在有向依赖的马尔科夫网,和通用的一般化概率图结构不同,条件随机场是一个链状的链模型,故称之为“场”。

马尔科夫网是一种概率无向图,这里简单介绍无向图的一个基本概念。

0x1:概率无向图模型

概率无向图模型(probabilistic undirected graphical model),又称为马尔科夫随机场(markov random field),是一个可以由无向图表示的联合概率分布。

1. 概率无向图模型定义

图(graph)是由节点(node)及连接节点的边(edge)组成的集合。节点的边分别记作 v 和 e,节点和边的集合分别记作 V 和 E,图记作 G =(V,E)。无向图是指边没有方向的图。因为理论上概率转移矩阵中所有节点间都是可以互相转移的。

概率图模型(probabilistic graphical model)是由图表示的概率分布。设有联合概率分布 P(Y),

条件随机场(conditional random field,CRF)模型初探_条件随机场

是一组随机变量。由无向图 G =(V,E)表示概率分布 P(Y),即在图 G 中,节点

条件随机场(conditional random field,CRF)模型初探_特征函数_02

表示一个随机变量

条件随机场(conditional random field,CRF)模型初探_条件随机场_03


条件随机场(conditional random field,CRF)模型初探_条件随机场_04

;边

条件随机场(conditional random field,CRF)模型初探_条件随机场_05

表示随机变量之间的概率依赖关系。

给定一个联合概率分布 P(Y)和表示它的无向图 G。首先定义无向图表示的随机变量之间存在的成对马尔科夫性(pairwise markov property)局部马尔科夫性(local markov property)全局马尔科夫性(global markov property)

1)成对马尔科夫性

设 u 和 v 是无向图 G 中任意两个没有边连接的节点,节点Yo的条件下随机变量 Yu 和 Yv 是条件独立的,即:

条件随机场(conditional random field,CRF)模型初探_条件随机场_06

2)局部马尔科夫性


条件随机场(conditional random field,CRF)模型初探_特征函数_02

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

条件随机场(conditional random field,CRF)模型初探_无向图_08

条件随机场(conditional random field,CRF)模型初探_条件随机场_09

3)全局马尔科夫性

设节点集合 A,B 是在无向图 G 中被节点集合 C 分开的任意节点集合,如下图所示

条件随机场(conditional random field,CRF)模型初探_特征函数_10

节点集合 A,B,C 所对应的随机变量组分别是 Ya,Yb,Yc。全局马尔科夫性是指给定随机变量组 Yc 条件下随机变量组 Ya 和 Yb 是条件独立的,即:

条件随机场(conditional random field,CRF)模型初探_特征函数_11

以上三种特性都满足一种:

有限依赖特性,超过一定范围的随机变量之间是条件独立的。其实,HMM本质也是一种有限依赖特性。

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

2. 概率无向图模型的因子分解

对给定的概率无向图模型,我们希望将整体的联合概率写成若干子联合概率的乘积的形式,也就是将联合概率进行因子分解,这样便于模型的学习与计算。实际上,概率无向图模型的最大特点就是易于因子分解。

1)团与最大团

无向图 G 中任何两个节点均有边连接的节点子集称为团(clique)。若 C 是无向图 G 的一个团,并且不能再加进任何一个 G 的节点使其成为一个更大的团,则称此 C 为最大团(maximal clique)。

下图表示由4个节点组成的无向图:

图中由2个节点组成的团有5个:{Y1,Y2}、{Y2,Y3}、{Y3,Y4}、{Y4,Y2}、{Y1,Y3};

有2个最大团:{Y1,Y2,Y3}、{Y2,Y3,Y4};

注意,{Y1,Y2,Y3,Y4}不是一个团,因为 Y1 和 Y4 没有边连接,这对应在概率分布中即这2个随机变量之间没有概率依赖关系。

条件随机场(conditional random field,CRF)模型初探_无向图_12

将概率无向图模型的联合概率分布表示为其最大团上的随机变量的函数的乘积形式的操作,称为概率无向图模型的因子分解(factorization)。

给定概率无向图模型,设其无向图为 G,C 为 G 上的最大团,Yc表示 C 对应的随机变量。那么概率无向图模型的联合概率分布 P(Y)可写作图中所有最大团 C 上的函数

条件随机场(conditional random field,CRF)模型初探_无向图_13

的乘积形式,即:

条件随机场(conditional random field,CRF)模型初探_无向图_14


其中, Z 是规范化因子(normalization factor):

条件随机场(conditional random field,CRF)模型初探_条件随机场_15

规范化因子保证 P(Y)构成一个概率分布,函数

条件随机场(conditional random field,CRF)模型初探_无向图_13

称为势函数(potential function)。

这里要求势函数必须是严格正的,通常定义为指数函数:

条件随机场(conditional random field,CRF)模型初探_无向图_17

2)Hammerslev-Clifford定理

概率无向图模型的因子分解由Hammerslev-Clifford定理来保证。

概率无向图模型的联合概率分布 P(Y)可以表示为如下形式:

条件随机场(conditional random field,CRF)模型初探_无向图_18

其中,C 是无向图的最大团,Yc是 C 的节点对应的随机变量,

条件随机场(conditional random field,CRF)模型初探_无向图_13

是 C 上定义的严格正函数,乘积是在无向图所有的最大团上进行的。

 

2. 条件随机场的发展脉络

0x1:条件随机场的学术发展脉络

我们可以不太严谨地这么说,HMM -> HEMM -> CRF,它们之间是逐渐演进的结果。

隐马尔可夫模型(Hidden Markov Model,HMM)、最大熵马尔可夫模型(Maximum Entropy Markov Model,MEMM)、以及条件随机场(Conditional Random Field,CRF)是链式模型中最常用也是最基本的三个模型。HMM首先出现,MEMM其次,CRF最后。三个算法主要思想如下:

  • HMM模型是对转移概率和表现概率直接建模,统计共现概率。
  • MEMM模型是对转移概率和表现概率建立联合概率,统计时统计的是条件概率,但MEMM容易陷入局部最优,是因为MEMM只在局部做归一化。
  • CRF模型中,统计了全局概率,同时在做归一化时,考虑了数据在全局的分布,而不是仅仅在局部归一化,这样就解决了MEMM中的标记偏置(label bias)的问题。

我们以标注问题为例,来对比一下这3种模型的不同之处。

0x2:3种不同算法在标注问题中的计算要素

用一个例子说明上述区别,对于一个标注任务

H(状态序列)= ”s s b e b c e”
O(观测序列)= “我爱北京天安门“

我们分别来看三种算法在训练过程中需要计算的组成要素:

1. 对于HMM的话,其判断这个标注成立的概率为 
P = 
    P(初始状态概率) * 
    P(初始状态转移到s)*P(‘我’表现为s) * 
    P(s转移到s)*P(‘爱’表现为s) * 
    P(s转移到b)*P(‘北’表现为b) *
    P(b转移到e)*P(‘京’表现为b) *
    P(e转移到b)*P(‘天’表现为b) *
    P(b转移到c)*P(‘安’表现为b) *
    P(c转移到e)*P(‘门’表现为b) * 
训练时,要统计状态转移概率矩阵和表现矩阵。

2. 对于MEMM的话,其判断这个标注成立的概率为 
P = 
    P(初始状态概率) *
    P(初始状态转移到s|’我’表现为s)*P(‘我’表现为s) * 
    P(s转移到s|’爱’表现为s)*P(‘爱’表现为s) * 
    ..
    P(c转移到e|‘门’表现为b)*P(‘门’表现为b)
训练时,要统计条件状态转移概率矩阵和表现矩阵。

3. 对于CRF的话,其判断这个标注成立的概率为 
P =  
    F(初始状态转移到s,’我’表现为s) *
    F(s转移到s, ‘爱’表现为s) * 
    F(s转移到b, ‘北’表现为b) *
    F(b转移到e, ‘京’表现为b) *
    F(e转移到b, ‘天’表现为b) *
    F(b转移到c, ‘安’表现为b) *
    F(c转移到e, ‘门’表现为b) * 
F为一个函数,是在全局范围统计归一化的概率而不是像MEMM在局部统计归一化的概率。

0x3:CRF算法对HMM和HEMM的主要改进点

1. CRF避免了HMM中的严格的独立性假设条件

我们知道,要再实际问题中应用HMM算法,隐马尔可夫模型作了两个基本假设:

  • 齐次马尔科夫性假设:即假设隐藏的马尔柯夫链(隐状态序列)在任意时刻 t 的状态只依赖于前一时刻的状态,与其他时刻的状态及观测无关,也与当前时刻 t 无关:
  • 观测独立性假设:即假设任意时刻的观测只依赖于该时刻的马尔柯夫链的状态(观测与隐状态一一对应),与其他观测及状态无关。观测序列彼此之间是独立同分布的(这点类似于朴素贝叶斯的独立同分布假设)

输出独立性假设(即要求观测序列之间是独立同分布的)要求序列数据严格相互独立才能保证推导的正确性,而事实上大多数序列数据不能被表示成一系列独立事件。而条件随机场CRF则使用一种概率图模型,具有表达长距离依赖性交叠性特征的能力,能够较好地解决标注(分类)偏置等问题的优点,而且所有特征可以进行全局归一化,能够求得全局的最优解。

2. CRF避免了HEMM的标记偏置问题(在进行序列标注时因为训练样本的分布不充分导致的过拟合)

我们用一个例子来说明标记偏置问题

条件随机场(conditional random field,CRF)模型初探_条件随机场_20

用Viterbi算法解码MEMM,状态1倾向于转换到状态2,同时状态2倾向于保留在状态2。

但是我们基于训练样本计算得到的解码过程,却不符合Viterbi算法的预期结果:

路径1-1-1-1的概率: 0.4 * 0.45 * 0.5 = 0.09
路径2-2-2-2的概率: 0.2 * 0.3 * 0.3 = 0.018
路径1-2-1-2的概率: 0.6 * 0.2 * 0.5 = 0.06
路径1-1-2-2的概率: 0.4 * 0.55 * 0.3 = 0.066

单纯从训练样本计算得到经验概率可知,最优路径为1-1-1-1。

然而,仔细观察可发现上图中stat1 中每个结点都倾向于转移到stat2,这明显是和直觉不相符的,同时还发现start3/4/5在这批训练样本的的转移概率为零(终止了)。

这是为什么呢?因为状态2可以转换的状态比状态1要多,从而使转移概率降低,即MEMM倾向于选择拥有更少转移的状态。

造成这一现象有很大可能只是因为这批训练样本抽样方式有问题,或者样本数量太少而导致规律分布产生了偏置。我们如果基于这种不完整的规律分布去进行模型训练学习,得到的模型一定也是不能完全表达真实的规律本身的。

从HEMM的数学公式上来分析产生这一问题的原因。

直接看MEMM公式:

条件随机场(conditional random field,CRF)模型初探_无向图_21

求和的作用在概率中是归一化,但是这里归一化放在了指数内部,管这叫local归一化

HEMM中的viterbi求解过程,是用dp的状态转移公式,因为是局部归一化,所以MEMM的viterbi的转移公式的第二部分出现了问题,导致dp无法正确的递归到全局的最优。

这就是所谓的标注偏置问题。实际上,造成这一问题的根本原因是每个节点分支数不同,由于MEMM的局部归一化特性,使得转出概率的分布不均衡,最终导致状态的转移存在不公平的情况。

CRF则是利用一种全局的优化思路来定向解决的,即使出现了上图所示的某个状态的next转移概率为1,在训练过程中也不会得出转移概率为1的模型参数。

0x4:3种算法的比较(简易图示)

1. HMM

HMM模型将标注任务抽象成马尔可夫链,一阶马尔可夫链式针对相邻标注的关系进行建模,其中每个标记对应一个概率函数。HMM是一种产生式模型,定义了联合概率分布p(x,y) ,其中x和y分别表示观察序列和相对应的标注序列的随机变量。

为了能够定义这种联合概率分布,产生式模型需要枚举出所有可能的观察序列(需要获取所有完整的概率分布),这在实际运算过程中很困难,所以我们可以将观察序列的元素看做是彼此孤立的个体, 即假设每个元素彼此独立(和naive bayes类似),任何时刻的观察结果只依赖于该时刻的状态。

条件随机场(conditional random field,CRF)模型初探_特征函数_22

上图很好诠释了HMM模型中存在两个假设:一是输出观察值(蓝色)之间严格独立,二是状态的转移过程中当前状态只与前一状态有关(一阶马尔可夫模型)。

2. MEMM

HMM模型在大量真实语料中观察序列的场景中会遇到表征力不足的瓶颈。因为观测序列在大数据集下更多的是以一种多重的交互特征形式表现的,观察元素之间广泛存在长程相关性。例如,在命名实体识别任务中,由于实体本身结构所具有的复杂性,利用简单的特征函数往往无法涵盖所有特性,这时HMM的假设前提使得它无法使用复杂特征(它无法使用多于一个标记的特征。),这个时候就需要引入最大熵名。

简单来说,MEMM把HMM模型和maximum-entropy模型的优点集合成一个统一的产生式模型,这个模型允许状态转移概率依赖于序列中彼此之间非独立的特征上,从而将上下文信息引入到模型的学习和识别过程中,达到了提高识别的准召率的效果。

条件随机场(conditional random field,CRF)模型初探_条件随机场_23

上图说明MEMM模型克服了观察值之间严格独立产生的问题,但是由于状态之间的假设理论,使得该模型存在标注偏置问题。

3. CRF

我们知道,MEMM并不完美,它存在明显的标记偏置问题。于是CMU的教授JohnLafferty提出了更先进的CRF模型。

CRF模型具有以下特点:

  • CRF在给定了观察序列的情况下,对整个的序列的联合概率有一个统一的指数模型,它具备一个比较吸引人的特性就是其损失函数的凸面性;
  • CRF具有很强的推理能力,并且能够使用复杂、有重叠性和非独立的特征进行训练和推理,能够充分地利用上下文信息作为特征,还可以任意地添加其他外部特征,使得模型能够获取的信息非常丰富;
  • CRF解决了MEMM中的标记偏置问题,这也正是CRF与MEMM的本质区别所在,最大熵模型在每个状态都有一个概率模型,在每个状态转移时都要进行归一化。如果某个状态只有一个后续状态,那么该状态到后续状态的跳转概率即为1。这样,不管输入为任何内容,它都向该后续状态跳转。而CRF是在所有的状态上建立一个统一的概率模型,这样在进行归一化时,即使某个状态只有一个后续状态,它到该后续状态的跳转概率也不会为1。

条件随机场(conditional random field,CRF)模型初探_特征函数_24

上图显示CRF模型解决了标注偏置问题,去除了HMM中两个不合理的假设。当然,模型相应得也变复杂了

Relevant Link:

https://www.jianshu.com/p/55755fc649b1
https://www.cnblogs.com/Dr-XLJ/p/5466856.html
https://www.zhihu.com/question/35866596

 

3. 条件随机场模型

在概率图模型中,我们将马尔科夫网表示描述为刻画X上联合分布的一种方法。相同的无向图表示和参数化也可以用来刻画条件分布P(Y | X),其中 Y 是目标变量集,而 X 是(不相交的)观测变量集

在马尔科夫网情形下,这种表示通常称为条件随机场(CRF)。

0x1:条件随机场表示及其语义

更正式地,条件随机场是一个节点与 Y∪X 对应的无向图。在高层次上,用于普通马尔科夫网相同的方法,可以将这个图参数化为一系列的因子

条件随机场(conditional random field,CRF)模型初探_特征函数_25

。这些因此也可以更紧凑地表示为一个对数线性模型。

 

 

为了表示上的一致性,对数线性模型可以看作是对一系列因子的刻画。

条件随机场(conditional random field,CRF)模型初探_无向图_26

正式的定义如下:

条件随机场是一个节点与 X∪Y 对应的无向图

条件随机场(conditional random field,CRF)模型初探_条件随机场_27

,这个网络由一组满足每个

条件随机场(conditional random field,CRF)模型初探_条件随机场_28

的因子

条件随机场(conditional random field,CRF)模型初探_特征函数_29

注释。刻画条件分布的网络如下所示: 

条件随机场(conditional random field,CRF)模型初探_特征函数_30

 只要

条件随机场(conditional random field,CRF)模型初探_条件随机场_27

中的两个变量在某个因子的辖域上一起出现,它们便由一条无向边相连。

0x2:条件贝叶斯网对条件贝叶斯网结构的简化

注意,与条件贝叶斯网的定义不用,条件随机场的结构中可能仍然含有X中变量之前的边。这种现象发生在这两个变量同时出现在包含目标变量的一个因子中。

然而,由于该网络明确地不能编码任何这种分布,因此这些边不能刻画X上任何分布的结构。

能够避免在X的变量熵编码分布是条件随机场的主要优势之一。这一灵活性允许我们在模型中引入充分的观测变量。此外,这一灵活性还允许我们运用领域知识来定义充足的用以刻画某领域的特征,而不用考虑对它们的联合分布建模的问题。

0x3:有向依赖性 

条件随机场定义了Y关于X的一个条件分布,因此可以将其视为一个部分有向图(partially directed graph),其中,Y上存在一个无向的分量,而X中的变量是其父节点。 

条件随机场(conditional random field,CRF)模型初探_无向图_32

下面用一个常见的序列映射问题,词性标注,来解释条件随机场的有向依赖性是如何运用的。 

1. 从一个从例子说明——词性标注问题

我们从一个具体的例子开始,来对CRM建立一个感性上的认识。

所谓词性标注问题,就是给一个句子中的每个单词注明词性。比如这句话:“Bob drank coffee at Starbucks”,注明每个单词的词性后是这样的:“Bob (名词) drank(动词) coffee(名词) at(介词) Starbucks(名词)”。

下面,就用条件随机场来解决这个问题。

我们知道,可选的标注序列有很多种,比如l还可以是这样:

  • “Bob (名词) drank(动词) coffee(名词) at(介词) Starbucks(名词)”
  • 也可以是,“Bob (名词) drank(动词) coffee(动词) at(介词) Starbucks(名词)”

我们的任务是,在这么多的可选标注序列中,挑选出一个最靠谱的作为我们对这句话的标注。

怎么判断一个标注序列靠谱不靠谱呢?这里就要借助有监督学习的算法了,输入一个训练样本集,得到一个标注序列,使其”最符合训练样本集“中的概率分布,则说明这个标注序列最靠谱。

我们先从感性层面来讨论这个问题,

就我们上面展示的两个标注序列来说,第二个显然不如第一个靠谱,因为它把第二、第三个单词都标注成了动词,动词后面接动词,这在一个句子中通常是说不通的。

假如我们给每一个标注序列打分,打分越高代表这个标注序列越靠谱,我们至少可以说,凡是标注中出现了动词后面还是动词的标注序列,要给它负分!!

上面所说的动词后面还是动词就是一个特征函数,我们可以定义一个特征函数集合,用这个特征函数集合来为一个标注序列打分,并据此选出最靠谱的标注序列。把集合中所有特征函数对同一个标注序列的评分综合起来,就是这个标注序列最终的评分值。

1)定义CRF中的特征函数

我们继续围绕这个例子,讨论CRF中的特征函数定义的问题。

  • 句子s(就是我们要标注词性的句子)
  • i,用来表示句子s中第i个单词
  • l_i,表示要评分的标注序列给第 i 个单词标注的词性(相当于词性序列的下标)
  • l_i-1,表示要评分的标注序列给第 i-1 个单词标注的词性

Note:这里,我们的特征函数仅仅依靠当前单词的标签和它前面的单词的标签对标注序列进行评判,这样建立的CRF也叫作线性链CRF,这是CRF中的一种简单情况。

1.1)几个特征函数的例子

围绕词性标注这个例子,我们来人工定义几个特征函数:

  • :当l_i是“副词”并且第i个单词以“ly”结尾时,我们就让f1 = 1,其他情况f1为0。不难想到,模型经过训练后,f1 特征函数的权重 λ1 应当是正的(向训练样本拟合)。而且 λ1 越大,表示我们越倾向于采用那些把以“ly”结尾的单词标注为“副词”的标注序列。或者说训练样本中这个规律特征表现地越明显。


  • 条件随机场(conditional random field,CRF)模型初探_条件随机场_33

  • :如果i=1,l_i=动词,并且句子s是以“?”结尾时,f2=1,其他情况f2=0。同样,λ2应当是正的,并且λ2越大,表示我们越倾向于采用那些把问句的第一个单词标注为“动词”的标注序列。
  • 条件随机场(conditional random field,CRF)模型初探_特征函数_34

  • :当l_i-1是介词,l_i是名词时,f3 = 1,其他情况f3=0。λ3也应当是正的,并且λ3越大,说明我们越认为介词后面应当跟一个名词。
  • 条件随机场(conditional random field,CRF)模型初探_无向图_35

  • :如果l_i和l_i-1都是介词,那么f4等于1,其他情况f4=0。

这里,我们应当可以想到λ4是负的,并且λ4的绝对值越大,表示我们越不认可介词后面还是介词的标注序列。


在实际的工程项目中,特征函数的选择是一个非常重要的过程,它取决于我们具体的业务场景。例如在入侵检测场景中,我们可能选取文本ascii序列模型作为特征,这意味着我们建立了一个先验假设:”正常的文本和异常的文本在ascii序列模式上存在明显的不一致“

2)对特征函数赋予对应的权重,得到概率表示 - 类似深度神经网络中的激活函数求值过程

定义好一组特征函数后,我们要给每个特征函数f_j赋予一个权重λ_j。

然后,只要有一个句子s,有一个标注序列 l,我们就可以通过对权重的加权计算来得到一个评分值,即对标记序列 l 评分。而特征函数是否激活取决于标记序列当天 l_i 的值是否满足特征条件。

条件随机场(conditional random field,CRF)模型初探_无向图_36

上式中有两个求和,外面的求和用来求每一个特征函数f_j评分值的和,里面的求和用来求句子中每个位置的单词的的特征值的和。

对这个分数进行指数化和标准化(规范化到【0,1】值域中),我们就可以得到标注序列l的概率值 p(l | s ),如下所示

条件随机场(conditional random field,CRF)模型初探_无向图_37

3)构建条件随机场CRF的基本要素

为了建一个条件随机场,我们首先要定义一个特征函数集,每个特征函数都以整个句子s,当前位置i,位置i和i-1的标签为输入。然后为每一个特征函数赋予一个权重,然后针对每一个标注序列l,对所有的特征函数加权求和,必要的话,可以把求和的值转化为一个概率值。

0x4:线性链条件随机场的定义与形式

之前的章节中,我们讨论了词性标注的问题,其实这背后是一种称为线性链条件随机场的模型,我们这个章节来详细讨论它。

1. 条件随机场的定义

条件随机场(conditional random field)是在给定随机变量 X 的条件下,随机变量 Y 的马尔科夫随机场。我们这节要讨论的定义在线性链上的特殊的条件随机场,称为线性链条件随机场(linear chain conditional field)

线性链条件随机场可以用于标注等问题。这时,在条件概率模型 P(Y | X)中,Y 是输出变量,表示标记序列,X 是输入变量,表示需要标注的观测序列。也把标记序列称为状态序列(在隐马尔可夫模型中标记序列即隐状态序列)。

  • 学习时,利用训练数据集通过极大似然估计或正则化的极大似然估计得到条件概率模型
  • 条件随机场(conditional random field,CRF)模型初探_特征函数_38


  • 预测时,对于给定的输入序列 x,求出条件概率
  • 条件随机场(conditional random field,CRF)模型初探_特征函数_39

  • 最大的输出序列
  • 条件随机场(conditional random field,CRF)模型初探_条件随机场_40


1)从一般的条件随机场说起

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

条件随机场(conditional random field,CRF)模型初探_条件随机场_41

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

可以看到,条件随机场的定义是一个泛化的随机变量之间有限依赖的关系。同时也可以看到,HMM本质上是随机场的一种形态。

在定义中没有要求 X 和 Y 具有相同的结构。但是在实际使用中,一般假设 X 和 Y 有相同的图结构,

我们这里只讨论如下所示的线性链条件随机场:

条件随机场(conditional random field,CRF)模型初探_条件随机场_42

条件随机场(conditional random field,CRF)模型初探_无向图_43

在这种情况下,X = (X1,X2,...,Xn),Y = (Y1,Y2,...,Yn),最大团是相邻两个节点的集合

2)线性链条件随机场定义

设 X = (X1,X2,...,Xn),Y = (Y1,Y2,...,Yn)均为线性链表示的随机变量序列,若在给定随机变量序列 X 的条件下,随机变量序列 Y 的条件概率分布 P(Y | X)构成条件随机场,即满足马尔科夫性:

条件随机场(conditional random field,CRF)模型初探_条件随机场_44

即某个隐状态只取决于其所在最大团以及条件变量 X。

则称 P(Y | X)为线性链条件随机场。

在标注问题中,X 表示输入观测序列,Y 表示对应的输出标记序列或状态序列。

2. 条件随机场的参数化形式

根据Hammerslev-Clifford定理(最大团因子分解)定理,可以给出线性链条件随机场 P(Y | X)的因子分解式,各因子是定义在相邻两个节点(对于线性链条件随机场来说,最大团就是相邻节点的集合)上的函数。

1)线性链条件随机场的参数化形式

设 P(Y | X)为线性链条件随机场,则在随机变量 X 取值为 x 的条件下,随机变量 Y 的取值为 y 的条件概率具有如下形式:

条件随机场(conditional random field,CRF)模型初探_特征函数_45

其中,

条件随机场(conditional random field,CRF)模型初探_条件随机场_46

式中,

条件随机场(conditional random field,CRF)模型初探_无向图_47


条件随机场(conditional random field,CRF)模型初探_特征函数_48

是特征函数,

条件随机场(conditional random field,CRF)模型初探_特征函数_49


条件随机场(conditional random field,CRF)模型初探_无向图_50

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

上面式子是线性链条件随机场模型的基本形式,表示给定输入序列 x,对输出序列 y 预测的条件概率。

  • 条件随机场(conditional random field,CRF)模型初探_无向图_47

    是定义在边上的特征函数,称为转移特征,依赖于当前和前一个位置;
  • 条件随机场(conditional random field,CRF)模型初探_特征函数_48

    是定义在节点上的特征函数,称为状态特征,依赖于当天位置;
  • 条件随机场(conditional random field,CRF)模型初探_无向图_47

  • 条件随机场(conditional random field,CRF)模型初探_特征函数_48

  • 都依赖于位置,是局部特征函数。

通常,特征函数

条件随机场(conditional random field,CRF)模型初探_无向图_47


条件随机场(conditional random field,CRF)模型初探_特征函数_48

取值为 1 或0;当满足条件时取值为1,否则为0。条件随机场完全由特征函数

条件随机场(conditional random field,CRF)模型初探_无向图_47


条件随机场(conditional random field,CRF)模型初探_特征函数_48

,和对应的权值

条件随机场(conditional random field,CRF)模型初探_特征函数_49


条件随机场(conditional random field,CRF)模型初探_无向图_50

确定。

线性链条件随机场也是对数线性模型(log linear model)

2)关于线性链条件随机场的一个简单的例子

设有一个标注问题:输入观测序列为 X = (X1,X2,X3),输出标记序列为 Y =(Y1,Y2,Y3),Y1,Y2,Y3取值于 {1,2}。

假设特征

条件随机场(conditional random field,CRF)模型初探_无向图_47


条件随机场(conditional random field,CRF)模型初探_特征函数_48

和对应的权值

条件随机场(conditional random field,CRF)模型初探_特征函数_49


条件随机场(conditional random field,CRF)模型初探_无向图_50

如下:

条件随机场(conditional random field,CRF)模型初探_特征函数_65

这里只写明特征取值为 1 的条件,取值为 0 的条件省略(因为0的结果为0,不影响加和式的结果):

条件随机场(conditional random field,CRF)模型初探_特征函数_66

下同:

条件随机场(conditional random field,CRF)模型初探_特征函数_67

对给定的观测序列 x,求标记序列为 y = (y1,y2,y3)=(1,2,2)的非规范化条件概率:

P(y1 = 1,y2 = 2,y3 = 2 | x)= exp(1 + 0.2 + 1 + 0.5 + 0.5)

因为只有满足特征条件时才为1,否则为0,所以这里其实是在进行权值加和,将满足条件(转移特征、状态特征)的权值进行加和。

3. 条件随机场的简化形式

条件随机场还可以由简化形式表示,我们再来看一下线性链条件随机场的参数化形式:

条件随机场(conditional random field,CRF)模型初探_无向图_68

我们注意到上式中同一个特征在各个位置都有定义,为了简化,可以对同一个特征在各个位置求和,将局部特征函数转化为一个全局特征函数,这样就可以将条件随机场写成权值向量和特征向量的内积形式,即条件随机场的简化形式。

为了简便说明,首先将转移特征和状态特征及其权值用统一的符号表示。设有 K1 个转移特征,K2 个状态特征,K = K1 + K2,记:

条件随机场(conditional random field,CRF)模型初探_无向图_69

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

条件随机场(conditional random field,CRF)模型初探_特征函数_70


条件随机场(conditional random field,CRF)模型初探_特征函数_71

表示特征

条件随机场(conditional random field,CRF)模型初探_无向图_72

的权值,即:

条件随机场(conditional random field,CRF)模型初探_无向图_73

于是,条件随机场可以简化表示为:

条件随机场(conditional random field,CRF)模型初探_特征函数_74

若以 w 表示权值向量,即:

条件随机场(conditional random field,CRF)模型初探_条件随机场_75

以 F(y,x)表示全局特征向量,即:

条件随机场(conditional random field,CRF)模型初探_特征函数_76

则条件随机场可以写成向量 w 与 F(y,x)的内积的形式:

条件随机场(conditional random field,CRF)模型初探_特征函数_77


其中,

条件随机场(conditional random field,CRF)模型初探_条件随机场_78

4. 条件随机场的矩阵形式

条件随机场还可以由矩阵表示。假设

条件随机场(conditional random field,CRF)模型初探_特征函数_79

线性链条件随机场,表示对给定观测序列 x,相应的标记序列 y 的条件概率。引进特殊的起点和终点状态标记

条件随机场(conditional random field,CRF)模型初探_条件随机场_80

,这时

条件随机场(conditional random field,CRF)模型初探_特征函数_79

可以通过矩阵形式表示。

对观测序列 x 的每一个位置 i = 1,2,...,n+1,定义一个 m 阶矩阵(m 是标记 yi 取值的个数)

条件随机场(conditional random field,CRF)模型初探_特征函数_82

这样,给定观测序列 x,相应标记序列 y 的非规范化概率可以通过该序列 n+1 个矩阵适当元素的乘积

条件随机场(conditional random field,CRF)模型初探_无向图_83

表示。于是,条件概率

条件随机场(conditional random field,CRF)模型初探_特征函数_84

=

条件随机场(conditional random field,CRF)模型初探_无向图_85

,其中,

条件随机场(conditional random field,CRF)模型初探_条件随机场_86

为规范化因子,是 n+1 个矩阵的乘积的(start,stop)元素:

条件随机场(conditional random field,CRF)模型初探_条件随机场_87

。注意,

条件随机场(conditional random field,CRF)模型初探_条件随机场_80

表示开始状态与终止状态,规范化因子

条件随机场(conditional random field,CRF)模型初探_条件随机场_86

是以 start 为起点,stop 为终点通过状态的所有路径 y1y2...yn的非规范化概率

条件随机场(conditional random field,CRF)模型初探_无向图_90

之和。

1)一个简单的例子

给定一个下图所示的线性链条件随机场

条件随机场(conditional random field,CRF)模型初探_特征函数_91

观测序列 x,状态序列 y,i = 1,2,3,n = 3,标记

条件随机场(conditional random field,CRF)模型初探_无向图_92

,假设 y0 = start = 1,y4 = stop = 1,各个位置的随机矩阵 M1(x)、M2(x)、M3(x)、M4(x)分别是:

条件随机场(conditional random field,CRF)模型初探_无向图_93

目标是求状态序列 y 以 start 为起点 stop 为终点所有路径的非规范化概率及规范化因子。

解:

首先先求从 start 到 stop 的所有路径,对应于

y = (1,1,1)

y = (1,1,2)

y = (1,2,1)

y = (1,2,2)

y = (2,1,1)

y = (2,1,2)

y = (2,2,1)

y = (2,2,2)

各路径对应的非规范化概率分别是:

条件随机场(conditional random field,CRF)模型初探_无向图_94

然后求规范化因子,通过计算矩阵乘积 M1(x)M2(x)M3(x)M4(x)可知,其第一行第一列的元素为:

条件随机场(conditional random field,CRF)模型初探_条件随机场_95

恰好等于从 start 到 stop 的所有路径的非规范化概率之和。

 

4. 条件随机场算法策略

条件随机场的概率计算问题是给定条件随机场 P(Y | X),输入序列 x 和输出序列 y,计算条件概率

条件随机场(conditional random field,CRF)模型初探_无向图_96

以及相应的数学期望的问题。和HMM隐马一样,引进前向-后向向量,递归地计算以上概率及期望值。这样的算法称为前向-后向算法

条件随机场是一种判别式模型,它的策略和其他概率统计机器学习模型一样,即经验风险最小化策略。即我们需要计算相关联合概率和条件概率的极值。

0x1:前向-后向算法

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

条件随机场(conditional random field,CRF)模型初探_无向图_97


条件随机场(conditional random field,CRF)模型初探_条件随机场_98

。递推公式为:

条件随机场(conditional random field,CRF)模型初探_无向图_99

。又可表示为:

条件随机场(conditional random field,CRF)模型初探_条件随机场_100

条件随机场(conditional random field,CRF)模型初探_无向图_101

表示在位置 i 的标记为 yi并且到位置 i 的前部分标记序列的非规范化概率,yi 可取的值有 m 个,所以

条件随机场(conditional random field,CRF)模型初探_无向图_97

是 m 维列向量。同样,对每个指标 i = 0,1,....,n+1,定义后向向量

条件随机场(conditional random field,CRF)模型初探_条件随机场_103


条件随机场(conditional random field,CRF)模型初探_无向图_104

条件随机场(conditional random field,CRF)模型初探_特征函数_105

,又可表示为:

条件随机场(conditional random field,CRF)模型初探_无向图_106

条件随机场(conditional random field,CRF)模型初探_条件随机场_107

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

0x2:概率计算

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

条件随机场(conditional random field,CRF)模型初探_无向图_108

其中,

条件随机场(conditional random field,CRF)模型初探_无向图_109

0x3:期望值的计算

利用前向-后向向量,可以计算特征函数关于联合分布 P(X,Y)和条件分布 P(Y | X)的数学期望。

特征函数

条件随机场(conditional random field,CRF)模型初探_特征函数_110

关于条件分布 P(Y | X)的数学期望是:

条件随机场(conditional random field,CRF)模型初探_特征函数_111

假设经验分布为

条件随机场(conditional random field,CRF)模型初探_特征函数_112

,特征函数

条件随机场(conditional random field,CRF)模型初探_特征函数_110

关于联合分布 P(X,Y)的数学期望是:

条件随机场(conditional random field,CRF)模型初探_无向图_114

有了上式,对于给定的观测序列 x 与标记序列 y,可以通过一次前向扫描计算

条件随机场(conditional random field,CRF)模型初探_无向图_115

,通过一次后向扫描计算

条件随机场(conditional random field,CRF)模型初探_条件随机场_116

,从而计算所有的概率和特征的期望。

 

5. 条件随机场的学习算法

我们上一小结讨论了,我们需要通过前向后向算法得到

条件随机场(conditional random field,CRF)模型初探_无向图_115

以及

条件随机场(conditional random field,CRF)模型初探_条件随机场_116

,接下来从算法工程实现上来讨论如何基于训练数据集进行代数计算。

给定训练数据集,估计条件随机场模型参数的问题,即条件随机场的学习问题。条件随机场模型实际上是定义在时序数据上的对数线性模型,其学习方法包括:极大似然估计正则化的极大似然估计

具体的优化实现算法有:改进的迭代尺度法IIS梯度下降法、以及拟牛顿法

0x1:改进的迭代尺度法

已知训练数据集,由此可以经验概率分布

条件随机场(conditional random field,CRF)模型初探_条件随机场_119

,可以通过极大化训练数据的对数似然函数来求模型参数。训练数据的对数似然函数为:

条件随机场(conditional random field,CRF)模型初探_特征函数_120

把条件随机场的函数带入,上式对数似然函数为:

条件随机场(conditional random field,CRF)模型初探_特征函数_121

改进的迭代尺度法通过迭代的方法不断优化对数似然函数该变量的下界,达到极大化对数似然函数的目的。

我们看到,迭代尺度算法可以适用于任何的目标函数,算法本身是一种可以通用的计算框架,它可以适用于任何机器学习目标函数。

0x2:拟牛顿法

条件随机场模型学习还可以应用牛顿法或拟牛顿法,对于条件随机场模型:

条件随机场(conditional random field,CRF)模型初探_条件随机场_122

学习的优化目标函数(损失函数)是:

条件随机场(conditional random field,CRF)模型初探_无向图_123

其梯度函数是:

条件随机场(conditional random field,CRF)模型初探_条件随机场_124

1. 条件随机场模型学习的BFGS算法

输入:特征函数 f1,f2,....,fn;经验分布

条件随机场(conditional random field,CRF)模型初探_条件随机场_125

;输出:最优参数值

条件随机场(conditional random field,CRF)模型初探_条件随机场_126

;最优模型

条件随机场(conditional random field,CRF)模型初探_无向图_127

1)选定初始点

条件随机场(conditional random field,CRF)模型初探_条件随机场_128

,取

条件随机场(conditional random field,CRF)模型初探_无向图_129

为正定对称矩阵,置 k = 0;2)计算梯度函数

条件随机场(conditional random field,CRF)模型初探_无向图_130

,若 gk = 0,则停止计算;否则转 3);3)由

条件随机场(conditional random field,CRF)模型初探_条件随机场_131

求出

条件随机场(conditional random field,CRF)模型初探_特征函数_132

;4)一维搜索:求

条件随机场(conditional random field,CRF)模型初探_条件随机场_133

使得:

条件随机场(conditional random field,CRF)模型初探_条件随机场_134

;5)置

条件随机场(conditional random field,CRF)模型初探_条件随机场_135

;6)计算

条件随机场(conditional random field,CRF)模型初探_无向图_136

,若

条件随机场(conditional random field,CRF)模型初探_特征函数_137

,则停止计算;否则,按下式求出

条件随机场(conditional random field,CRF)模型初探_无向图_138


条件随机场(conditional random field,CRF)模型初探_条件随机场_139

,其中,

条件随机场(conditional random field,CRF)模型初探_特征函数_140


7)置 k = k + 1,转 3)

 

6. 条件随机场的预测算法

条件随机场的预测问题是给定条件随机场 P(Y | X)和输入序列(观测序列)x,求条件概率最大的输出序列(标记序列)

条件随机场(conditional random field,CRF)模型初探_无向图_141

,即对观测序列进行标注。

条件随机场的预测算法采用 维特比算法

条件随机场向量内积形式为:

条件随机场(conditional random field,CRF)模型初探_无向图_142

条件随机场(conditional random field,CRF)模型初探_条件随机场_143

于是,条件随机场的预测问题成为求非规范化概率最大的最优路径问题。

条件随机场(conditional random field,CRF)模型初探_特征函数_144


这里,路径表示标记序列,其中,

条件随机场(conditional random field,CRF)模型初探_条件随机场_145

注意,这里只需要计算非规范化概率,而不需要计算概率,可以大大提高效率。为了求解最优路径,将上式写成如下形式:

条件随机场(conditional random field,CRF)模型初探_条件随机场_146

其中,

条件随机场(conditional random field,CRF)模型初探_特征函数_147

是局部特征向量。

0x1:条件随机场预测中的维特比算法

首先求出位置 1 的各个标记 j = 1,2,...,m 的非规范化概率:

条件随机场(conditional random field,CRF)模型初探_条件随机场_148

一般地,由递推公式,求出到位置 i 的各个标记 l = 1,2,...,m 的非规范化概率的最大值,同时记录非规范化概率最大值的路径,

条件随机场(conditional random field,CRF)模型初探_无向图_149

条件随机场(conditional random field,CRF)模型初探_特征函数_150

直到 i = n 时终止,这时求得非规范化概率的最大值为

条件随机场(conditional random field,CRF)模型初探_无向图_151

以及最优路径的终点

条件随机场(conditional random field,CRF)模型初探_条件随机场_152

由此最优路径终点返回

条件随机场(conditional random field,CRF)模型初探_无向图_153

求得最优路径

条件随机场(conditional random field,CRF)模型初探_无向图_154

预测问题本质上就是最大似然估计,在数学上就是求极值。

1. 应用维特比算法求给定输入序列对应的最优输出序列 - 最大似然估计

设有一个标注问题:输入观测序列为 X = (X1,X2,X3),输出标记序列为 Y =(Y1,Y2,Y3),Y1,Y2,Y3取值于 {1,2}。

假设特征

条件随机场(conditional random field,CRF)模型初探_无向图_47


条件随机场(conditional random field,CRF)模型初探_特征函数_48

和对应的权值

条件随机场(conditional random field,CRF)模型初探_特征函数_49


条件随机场(conditional random field,CRF)模型初探_无向图_50

如下:

条件随机场(conditional random field,CRF)模型初探_无向图_159

这里只写明特征取值为 1 的条件,取值为 0 的条件省略(因为0的结果为0,不影响加和式的结果):

条件随机场(conditional random field,CRF)模型初探_条件随机场_160

下同:

条件随机场(conditional random field,CRF)模型初探_特征函数_161

利用维特比算法求最优路径问题:

条件随机场(conditional random field,CRF)模型初探_条件随机场_162

1)初始化:

条件随机场(conditional random field,CRF)模型初探_条件随机场_163

i = 1,

条件随机场(conditional random field,CRF)模型初探_特征函数_164

2)递推:

条件随机场(conditional random field,CRF)模型初探_条件随机场_165

最优标记序列:

条件随机场(conditional random field,CRF)模型初探_条件随机场_166












标签:conditional,模型,random,field,概率,机场,条件,序列,标注
From: https://blog.51cto.com/u_15775105/6875702

相关文章

  • UUID类randomUUID()方法
    1、randomUUID()方法用于返回类型4UUID,它由伪随机数生成器构造//uuid文件名通用唯一识别码Stringuuid=UUID.randomUUID().toString(); ......
  • 羊 老虎 饲养员 animal=random.choice([Tiger,Sheep]) 该animal类型是对象
    #羊老虎饲养员importrandom#基类classAnimal():#属性def__init__(self,animal,w,call,food,room_num):self._animal=animalself._w=wself._call=callself._food=foodself._room_num=room_num#动作......
  • 【Python】蒙特卡洛模拟 | PRNG 伪随机数发生器 | LCG 线性同余算法 | 马特赛特旋转算
    ......
  • calico报错son: cannot unmarshal string into Go struct field NetConf.mtu of type
     于是describe查看宿主机的配置文件查看日志没有相关日志查看calico的相关配置文件值找到于是想着直接去修改calico的Configmap发现修改不成功便去查询宿主机映射的calico挂载文件把标记部分的string给成int去掉双引号,然后重启calico然后通过ansible分发到每台机器上an......
  • 建立模型类的方法学习 DecimalField ,models.SmallIntegerField ,get_pay_type_display(
    1. total_amount=models.DecimalField(max_digits=10,decimal_places=2,verbose_name="订单总价",default=0)DecimalField:这是一个Django模型字段类型,用于存储十进制数值,通常用于表示货币和其他需要高精度计算的数值max_digits=10:这是DecimalField中的一个参数,用于指......
  • Python随机函数random使用详解
    在python中用于生成随机数的模块是random,在使用前需要import,下面看下它的用法。random.randomrandom.random()用于生成一个0到1的随机符点数:0<=n<1.0注意: 以下代码在Python3.5下测试通过,python2版本可稍加修改描述random()方法返回随机生成的一个实数,它在(0,1)范围内。......
  • java 设置es字段是个completion suggest field
    实现Java设置ES字段为CompletionSuggestField1.简介在本文中,我将向你介绍如何使用Java在Elasticsearch(ES)中设置CompletionSuggest字段。CompletionSuggest字段是一种特殊的字段类型,用于实现自动补全功能。通过设置CompletionSuggest字段,用户可以在输入搜......
  • pytorch使用(四)np.random.randint用法
    np.random.randint用法np.random.randint是numpy库中用于生成随机整数的函数。它的用法如下:numpy.random.randint(low,high=None,size=None,dtype='l')其中,各个参数的含义如下:low:生成的随机整数的下限(包含)。high:生成的随机整数的上限(不包含)。如果不提供high参数,则生......
  • [ARC104E] Random LIS 题解
    [ARC104E]RandomLIS题解Link吐了,一下午就写了这一个题……主要是题解都说的很草率。然后上课的时候貌似讲的方法不是很能做(也许是我太菜了),总之我得写篇题解整理整理。首先\(n\)很小,可以直接爆搜所有相对大小,即我们去搜索\(1\)到\(n\)的排名,排名可以一样(即\(a_i\)相......
  • cpp generate uuid by random
    #include<cstdio>#include<cstdlib>#include<ctime>#include<cstdint>uint32_trand32(){return((rand()&0x3)<<30)|((rand()&0x7fff)<<15)|(rand()&0x7fff);}boolgen_uuid4(chardst[37]......