CRF(条件随机场)
构建步骤
为了建一个条件随机场,我们首先要定义一个特征函数集,每个特征函数都以整个句子s,当前位置i,位置i和i-1的标签为输入。然后为每一个特征函数赋予一个权重,然后针对每一个标注序列l,对所有的特征函数加权求和,必要的话,可以把求和的值转化为一个概率值。
用词性标注问题解释CRF
给定一个句子s,比如:“我在公园看到一只猫”,正常标注词性的结果如下:
- “我”:名词
- “在”:介词
- “公园”:名词
- “看到”:动词
- “一只猫”:名词短语
在CRF问题中,将(名词、介词、名词、动词、名词)当成一个可能的序列Z1,其他可能的标注序列也存在(无关乎标注的序列正确与否)。CRF就可以解决如何在众多可能的序列中找出正确概率最大的一个。
定义特征函数f
特征函数接受四个参数:
- 句子:s
- W_i:表示句子中第i个单词
- Li:表示第i个单词要标注的词性
- Li-1:表示第i-1个单词要标注的词性
可以理解为第i-1个单词在特征函数的作用下对第i个单词产生的影响,也叫特征值
利用特征函数集做评分
有了特征函数的集合之后,需要给每一个特征函数赋予一个权重:w_i
。则综合评分的函数表达式如下所示:
对上述公式的解释:
- Z_k:表示一条可能的标注序列
- 外层的求和符号表示多个特征函数求和的评分结果
- 内层求和符号表示句子中每个单词在不同的特征函数作用下的特征值
由于每一个句子有很多可能的词性标注,特征函数集对每一个可能的词性标注序列都可以得到一个综合特征值,对整个综合特征值做softmax处理,即可得到每一个词性标注的概率。
softmax:
- l_i:表示一个可能的标注序列
HMM和CRF
HMM(隐马尔可夫模型)是CRF的一个特例。
在隐马模型的链式法则中,求一个标注序列的概率公式如下:
对上述公式的说明:
- p(Li|Li-1):表示转移概率,在词性为Li-1的基础下出现词性Li的概率
- p(W_i|L_i): 表示发射概率,在词性为L_i的基础下,单词是W_i的概率
对HMM的概率公式取对数:
可以发现,HMM取对数之后的概率公式和CRF的特征集的综合评分函数具有相同的形式。
去掉发射概率,因为此时只关注词性标注序列
HMM等价于只有一个特征函数的CRF。
CRF相对HMM具有以下优点
- CRF可以定义数量更多,种类更丰富的特征函数。HMM模型具有天然具有局部性,就是说,在HMM模型中,当前的单词只依赖于当前的标签,当前的标签只依赖于前一个标签。这样的局部性限制了HMM只能定义相应类型的特征函数,我们在上面也看到了。但是CRF却可以着眼于整个句子s定义更具有全局性的特征函数
CRF可以使用任意的权重 将对数HMM模型看做CRF时,特征函数的权重由于是log形式的概率,所以都是小于等于0的,而且概率还要满足相应的限制,但在CRF中,每个特征函数的权重可以是任意值,没有这些限制。
原文链接:[轻松理解条件随机场(CRF)]
https://www.imooc.com/article/27795