• 条件随机场(CRF)-基础


      条件随机场(conditional random fields,简称 CRF,或CRFs)下文简称CRF,是一种典型的判别模型,相比隐马尔可夫模型可以没有很强的假设存在,在分词、词性标注、命名实体识别等领域有较好的应用。CRF是在马尔可夫随机场的基础上加上了一些观察值(特征),马尔可夫随机场<=>概率无向图模型。本篇将首先介绍CRF的一些基础知识,然后介绍线性链条件随机场模型,关于模型的学习算法将放在第二篇中介绍,第三篇介绍CRF的应用。

    1主要概念

    1.1概率无向图模型

      概率无向图模型是一种由无向图表示的联合概率分布,设有联合概率分布P(Y),Y是一组随机变量,用Y(i)表示,其中1<=i<=n,在无向图中用节点表示随机变量Y(i),节点的边表示随机变量的依赖关系。如果这些随机变量之间存在以下3个性质,那么就说这个联合概率分布为概率无向图模型。这3个性质分别是成对的马尔可夫性、局部的马尔可夫性、全局的马尔可夫性。这3个性质分别考察了给定周围环境的条件下,没有边直接相连的随机变量与随机变量、随机变量与随机变量组、随机变量组与随机变量组的独立性,这里的周围环境指的是除去要考察的随机变量(组)之外的所有随机变量。如果满足了独立性,那么就说随机变量(组)之间满足了对应的马尔可夫性。上述3个性质总结起来可以是没有直连边连接的任意两个节点是独立的。也可以这样理解:一个随机变量取什么值只与与其有直接边连接的节点有关系,没有直接的边连接就对这个节点代表的随机变量取值没影响。

    1.2团与最大团

      无向图 G 中任何两个结点均有边连接的结点子集称为团。也就是说团<=>节点之间两两相连。

      最大团指的是已经没法向团中加入任何一个节点使之成为一个更大的团。

    2CRF的工作原理

    2.1联合概率分布的计算

    如果根据贝叶斯公式直接求解P(Y1,Y2,Y3......Yn)这将是一件非常恐怖的事,所以我们的课本上讲联合概率分布的时候都是用两个随机变量,因为多个随机变量拆解起来太麻烦了。。。那怎么办呢?

    如果随机变量A与B相互独立,那么P(A,B)=P(A)*P(B),同样,考虑到概率无向图模型的定义,(我们可以将联合概率分布拆解为概率无向图中所有最大团C的乘积的形式,Z是规范化因子,但考虑到n个Y(c)相乘也是够麻烦的,如果能改成加和的关系就好了,于是就有了下面优化计算后的联合概率分布,纯属个人理解。。)我们可以将联合概率分布拆解为C的势函数的乘积形式,用公式表示为

    注意Y(c)表示最大团对应的随机变量,Z是规范化因子,保证概率和为1,公式为

    需要满足两点:其一是保证概率为绝对正值,另一保证概率方便计算。通常定义为指数函数

    这样既能保证概率为正,又能变积为和,方便计算。

    2.2线性链条件随机场

    下图中,Y是随机变量,X是Y的观察值(特征),这些随机变量Y构成线性链条件随机场

    在线性链条件随机场中,两个相邻的节点构成一个最大团,假设当前节点为i,那么特征考虑两大类:作用在节点i上的和作用在边(i-1与i相连)上的,在进行参数化推导的时候作用在边上的转移特征比作用在节点上的状态特征还需要多考虑Y(i-1)的取值,所以特征可以统一表示为

     

    其中分别分别表示随机变量Y(i-1)、Y(i)的取值、观察值X的取值、在标记序列中的位置,K表示特征的个数,n表示待标记序列中最大团的个数。对状态特征函数而言,是会被忽略掉的。特征的取值通常为0或1,表示某个特征是否存在。

    于是线性链条件随机场可以表示为

    其中表示权重。

     

      有了特征,再乘之以权重,然后将特征与权重之积以加和的形式组织在一起,就可以用来取代2.1中的Y(c),这是多么完美的解决方案啊!将特征合理地组织起来,取代我们需要预测的东西,如果将前者视为原因,后者视为结果,这不就契合了因果关系的辩证法么,是特征的不同取值导致了预测的结果不同!(好像扯远了。。。)

    2.3CRF的预测算法

    预测问题,就是从多个候选标注中选出来一种标注概率最高的。因为分母Z是归一化因子,具有不变性,所以只需要考虑分子。故只需求得

    其中,

    为特征向量,是特征向量对应的权值向量,n是最大团的个数,i从1取到n表示对整个标注序列求解,y是变量,表示标注取值。

    下面我们用维特比算法来求解上述最大值,首先需要指出的是维特比算法的本质是动态规划,而动态规划的关键步骤在于找到状态转移方程,这里

    是维特比算法的状态转移方程,其中J表示标记的个数,表示第i个位置标注序列是C(j)结束的最大概率,这样当i取值为n的时候就表示最后一个位置标注为C(j)的最大概率,这时只需要遍历j即可找到哪个标注序列是最大概率,那么这个标注序列即为我们所求。

    对第一个位置我们可以表示为

     计算过程中需要记录路径,达到以空间换时间的效果。

    以上内容若有不妥之处,还望批评指正,转载请注明出处!
  • 相关阅读:
    HTTPD之五---HTTP协议、相关工具及状态码
    HTTPD之四----实现HTTPD正向代理与反向代理
    第十三周---DNS原理、实现智能DNS及源码编译mariadb数据库
    DNS之五----实现智能DNS
    sqoop 导入增量数据到hive
    Hadoop 二次排序
    Spark foreachpartiton和mappartition的异同
    hadoop 实现多文件输出
    spark 实现多文件输出
    Scala 中 call by name & call by value 的区别
  • 原文地址:https://www.cnblogs.com/xueyinzhe/p/6881621.html
Copyright © 2020-2023  润新知