CRF条件随机场

  CRF即条件随机场(Conditional Random Fields),是在给定一组输入随机变量条件下另外一组输出随机变量的条件概率分布模型,它是一种判别式(理解一些和生成模型的区别)的概率无向图模型,既然是判别式,那就是对条件概率分布建模。

一、概率无向图模型

  概率无向图模型是由无向图表示的联合概率分布,假设联合概率分布P(Y)通过无向图来表示,在图中节点表示随机变量,边表示随机变量之间的依赖关系,联合概率分布P(Y)满足马尔科夫性(成对、局部、全局)则称其为概率无向图模型,或者是马尔科夫随机场。其最大的特点是因子分解。

1.1团与最大团

  无向图G中任何两个节点都有边连接的节点子集称为团,若不能再加进一个节点使得团更大,称为最大团;

1.2无向图模型的因子分解

  C为G上最大团,P(Y)可以写作图中所有最大团C上的函数ΨC(YC)的乘积形式,即

  其中Z为归一化因子,ΨC(YC)称为势函数,通常定义为指数函数。

1.3 Hammersley-Clifford定理

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

二、条件随机场

  条件随机场是在给定随机变量X的条件下,随机变量Y的马尔科夫随机场

三、线性条件随机场

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

P(Yi|X,Y1,…,Yi+1,…,Yn) = P(Yi|X,Yi-1,Yi+1)

  因此,定义条件随机场的参数形式

  其中Z(x)是归一化因子tk和sl是特征函数 λk和μl是对应的权值,tk是定义在边上的特征函数,称为转移特征,依赖于当前后前一位置。Sl是定义在节点上的特征函数,称为状态特征。特征函数的取值当满足特征条件时取1,否则取0。

四、条件随机场的学习算法

  给定训练集,估计条件随机场模型参数,产生的数量很大,与每个label的特征函数对应。

  学习方法包括:极大似然估计、正则化的极大似然估计

  具体的优化实现算法:梯度下降法、拟牛顿法

  语料:训练的数据是多列的,第一列代表字或词,最后一列是输出的标记状态(B,M,I,E,S),中间也可以添加词性等等,如

                                                            人 B

                                                            民 M

                                                            网 E

  特征模板

在CRF++中,特征模板文件抽取如下:

                                                                       # Unigram

                                                                       U00:%x[-2,0] ==> 人

                                                                       U01:%x[-1,0] ==> 民

                                                                       U02:%x[0,0] ==> 网(扫到当前词的时候)

                                                                       U03:%x[1,0] ==> 报

                                                                       U04:%x[2,0] ==> 道

                                                                       U05:%x[-2,0]/%x[-1,0]/%x[0,0] ==> 人/民/网

                                                                       U06:%x[-1,0]/%x[0,0]/%x[1,0] ==> 民/网/报

                                                                       U07:%x[0,0]/%x[1,0]/%x[2,0] ==> 网/报/到

                                                                       U08:%x[-1,0]/%x[0,0] ==> 民/网

                                                                       U09:%x[0,0]/%x[1,0] ==> 网/报

 

“%x[行位置,列位置]”代表了相对于当前指向的token的行偏移和列的绝对位置

                                                           If(y==’B’&&x==’人’) return 1 else return 0;

                                                            If(y==’E’&&x==’人’) return 1 else return 0;

                                                            If(y==’M’&&x==’人’) return 1 else return 0;

                                                            If(y==’S’&&x==’人’) return 1 else return 0;

此相当于HMM中的发射矩阵

当然还会通过特征函数产生状态转移矩阵,列如如下:

                                                            If(y1==’B’&&y2==’M’) return 1 else return 0;

                                                            If(y1==’B’&&y2==’E’) return 1 else return 0;

                                                            If(y1==’B’&&y2==’S’) return 1 else return 0;

                                                            If(y1==’M’&&y2==’B’) return 1 else return 0;

                                                                                 。。。。

  条件随机场的预测算法

  给定条件随机场P(Y|X),求解条件概率最大输出序列y

  算法:维特比算法

  如:

                                                               民                  

                                                               B    B    B    B    B     B    B

                                                                O    O   O    O   O    O   O

                                                                M   M   M   M   M    M   M

                                                                 E    E    E    E    E    E   E

  对于每一列的每一个标记,都要计算要达到该标记的分数

  分数 = 本身的一元特征权重W+前面一个自标记的路径分数PreScore+前面一个字标记到当前标记的转移特征权重TransW

a 对于第一列的分数,‘民’来说,要算B,O,M,E的score,因为第一列,所以PreScore和transW都为0,因此只需要计算自己的一元特征权重,如B而言:

                                                     S1B = W1B = w(null,民,B)+w(民,B)+w(民,B,主)

  (null,民,B):当前字为‘民’,前一个字为null,标记为B的权重

  (民,B):当前字为‘民’,标记为B的权重

  (民,B,主):当前字为'民',标记为B,当前字的后一个字为‘主’,的权重

特征的权重都是在训练时得到的。

  b对于第二列,首先计算一元权重W2B,W2O,W2M,W2E

  对于B而言,达到该标记的最大分数为S2B=Max(v(BB)+S1B,(v(OB)+S1O,()v(MB)+S1M),v(EB)+S1E+W2B)

其中v(BB)等为B到B的转移特征的权重,这个也是由训练得到

c直到计算到最后一列

此过程就是维特比的计算过程。

五、参考文献

https://blog.csdn.net/wangyangzhizhou/article/details/78489593

https://blog.csdn.net/applenob/article/details/51354088

http://www.xuetimes.com/archives/1681

http://www.52nlp.cn/%E5%88%9D%E5%AD%A6%E8%80%85%E6%8A%A5%E9%81%933-crf-%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D%E8%A7%A3%E7%A0%81%E8%BF%87%E7%A8%8B%E7%90%86%E8%A7%A3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值