通俗理解之条件随机场(CRF)

1、简介

在前面两篇博文中(条件随机场之基本概念与模型条件随机场之学习和预测问题)介绍了CRF的理论知识,主要是统计学习方法中的一个笔记。其实只是看这两篇理论的文章还是很难理解的,最好的办法就是用一个现实的例子来说明它并使用通俗的方式把算法梳理一遍。通俗介绍CRF的文章不多,无意中看到了如何轻松愉快地理解条件随机场(CRF)英文原文,看完后觉得对条件随机场的理解清晰了很多。以下的博客大多来自这两篇博文的摘抄!

2、举例通俗说明

拿NLP中的词性标注这个任务来说吧,比如目前我们需要对“Bob drank coffee at Starbucks”进行词性标注,注明每个单词的词性后是这样的:“Bob (名词) drank(动词) coffee(名词) at(介词) Starbucks(名词)”。下面,就用条件随机场来解决这个问题。

以上面的话为例,有5个单词,我们将:(名词,动词,名词,介词,名词) 作为一个标注序列,称为l,可选的标注序列有很多种,比如l还可以是这样:(名词,动词,动词,介词,名词) ,我们要在这么多的可选标注序列中,挑选出一个 最靠谱 的作为我们对这句话的标注。

怎么判断一个标注序列靠谱不靠谱呢?
就我们上面展示的两个标注序列来说,第二个显然不如第一个靠谱,因为它把第二、第三个单词都标注成了动词,动词后面接动词,这在一个句子中通常是说不通的。
假如我们给每一个标注序列打分,打分越高代表这个标注序列越靠谱,我们至少可以说,凡是标注中出现了动词后面还是动词的标注序列,要给它负分!!

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

3、CRF中的特征函数

在CRF中,每个特征函数都是一个输入函数,它接受四个参数

  • 句子s(就是我们要标注词性的句子)
  • i,用来表示句子s中第i个单词
  • $l_i$,表示要评分的标注序列给第i个单词标注的词性(当前词)
  • $l_{i-1}$,表示要评分的标注序列给第i-1个单词标注的词性(前一个词)

它的输出值是0或者1,0表示要评分的标注序列不符合这个特征,1表示要评分的标注序列符合这个特征。

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

4、特征函数到概率

定义好一组特征函数后,我们要给每个特征函数$f_j$赋予一个权重$λ_j$。现在,只要有一个句子s,有一个标注序列l,我们就可以利用前面定义的特征函数集来对l评分。
$$
socre(l|s)=\sum_{j=1}^{m}\sum_{i=1}^{n}\lambda_{j}f_{j}(s,i,l_{i},l_{i-1})
$$
上式中有两个求和,外面的求和用来求每一个特征函数$f_j$评分值的和,里面的求和用来求句子中每个位置的单词的的特征值的和。
对这个分数进行 指数化标准化,我们就可以得到标注序列l的概率值 $p(l|s)$,如下所示:
$$
p(l|s)=\frac{exp[score(l|s)]}{\sum_{\hat{l}}exp[score(\hat{l}|s)]}=\frac{exp[\sum_{j=1}^{m}\sum_{i=1}^{n}\lambda_{j}f_{j}(s,i,l_{i},l_{i-1})]}{\sum_{\hat{l}}exp[\sum_{j=1}^{m}\sum_{i=1}^{n}\lambda_{j}f_{j}(s,i,\hat{l}_{i},\hat{l}_{i-1})]}
$$

5、特征函数的几个例子

前面我们已经举过特征函数的例子,下面我们再看几个具体的例子,帮助增强大家的感性认识:
$$
f_{1}(s,i,l_{i},l_{i-1})=1
$$

当$l_i$是“副词”并且第i个单词以“ly”结尾时,我们就让$f_1 = 1$,其他情况$f_1$为0。不难想到,$f_1$特征函数的权重$λ_1$应当是正的。而且$λ_1$越大,表示我们越倾向于采用那些把以“ly”结尾的单词标注为“副词”的标注序列。

$$
f_{2}(s,i,l_{i},l_{i-1})=1
$$

如果i=1,$l_i=动词$,并且句子s是以“?”结尾时,$f_2=1$,其他情况$f_2=0$。同样,$λ_2$应当是正的,并且$λ_2$越大,表示我们越倾向于采用那些把问句的第一个单词标注为“动词”的标注序列。

$$
f_{3}(s,i,l_{i},l_{i-1})=1
$$

当$l_{i-1}$是介词,$l_i$是名词时,$f_3 = 1$,其他情况$f_3=0$。$λ_3$也应当是正的,并且$λ_3$越大,说明我们越认为介词后面应当跟一个名词。

$$
f_{4}(s,i,l_{i},l_{i-1})=1
$$

如果$l_i$和$l_{i-1}$都是介词,那么$f_4$等于1,其他情况$f_4=0$。这里,我们应当可以想到$λ_4$是负的,并且$λ_4$的绝对值越大,表示我们越不认可介词后面还是介词的标注序列。

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

6、CRF与逻辑回归的比较

观察公式:
$$
p(l|s)=\frac{exp[score(l|s)]}{\sum_{\hat{l}}exp[score(\hat{l}|s)]}=\frac{exp[\sum_{j=1}^{m}\sum_{i=1}^{n}\lambda_{j}f_{j}(s,i,l_{i},l_{i-1})]}{\sum_{\hat{l}}exp[\sum_{j=1}^{m}\sum_{i=1}^{n}\lambda_{j}f_{j}(s,i,\hat{l}_{i},\hat{l}_{i-1})]}
$$
是不是有点逻辑回归的味道?
事实上,条件随机场是逻辑回归的序列化版本。逻辑回归是用于分类的对数线性模型,条件随机场是用于序列化标注的对数线性模型。

7、CRF与HMM的比较

对于词性标注问题,HMM模型也可以解决。HMM的思路是用生成办法,就是说,在已知要标注的句子s的情况下,去判断生成标注序列l的概率,如下所示:
$$
p(l,s)=p(l_{1})\prod_{i}p(l_{i}|l_{i-1})p(w_{i}|l_{i})
$$
这里:
$p(l_{i}|l_{i-1})$是转移概率,比如,$l_{i-1}$是介词,$l_i$是名词,此时的p表示介词后面的词是名词的概率。
$p(w_i|l_i)$表示发射概率(emission probability),比如$l_i$是名词,$w_i$是单词“ball”,此时的p表示在是名词的状态下,是单词“ball”的概率。

那么,HMM和CRF怎么比较呢?
答案是:CRF比HMM要强大的多,它可以解决所有HMM能够解决的问题,并且还可以解决许多HMM解决不了的问题。事实上,我们可以对上面的HMM模型取对数,就变成下面这样:
$$
logp(l,s)=logp(l_0)+\sum_{i}logp(l_i|l_{i-1})+\sum_{i}logp(w_{i}|l_{i})
$$
我们把这个式子与CRF的式子进行比较:
$$
score(l|s)=\sum_{j=1}^{m}\sum_{i=1}^{n}\lambda_{j}f_{j}(s,i,l_{i},l_{i-1})
$$
不难发现,如果我们把第一个HMM式子中的log形式的概率看做是第二个CRF式子中的特征函数的权重的话,我们会发现,CRF和HMM具有相同的形式。

换句话说,我们可以构造一个CRF,使它与HMM的对数形式相同。怎么构造呢?
对于HMM中的每一个转移概率$p(l_i=y|l_{i-1}=x)$,我们可以定义这样的一个特征函数:
$$
f_{x,y}(s,i,l_i,l_{i-1})=1
$$
该特征函数仅当l_i = y,l_i-1=x时才等于1。这个特征函数的权重如下:
$$
w_{x,y}=\log p(l_i=y|l_{i-1}=x)
$$
同样的,对于HMM中的每一个发射概率,我们也都可以定义相应的特征函数,并让该特征函数的权重等于HMM中的log形式的发射概率。

HMM的相关原理如果需要详细了解可以参考这篇博文马尔可夫模型(HMM)

用这些形式的特征函数和相应的权重计算出来的$p(l|s)$和对数形式的HMM模型几乎是一样的!
用一句话来说明HMM和CRF的关系就是这样:每一个HMM模型都等价于某个CRF

但是,CRF要比HMM更加强大,原因主要有两点:

  • CRF可以定义数量更多,种类更丰富的特征函数。HMM模型具有天然具有局部性,就是说,在HMM模型中,当前的单词只依赖于当前的标签,当前的标签只依赖于前一个标签。这样的局部性限制了HMM只能定义相应类型的特征函数,我们在上面也看到了。但是CRF却可以着眼于整个句子s定义更具有全局性的特征函数,如这个特征函数:
    $$
    f_{2}(s,i,l_{i-1},l_{i})=1
    $$
    如果i=1,$l_i=动词$,并且句子s是以“?”结尾时,$f_2=1$,其他情况$f_2=0$。
  • CRF可以使用任意的权重 将对数HMM模型看做CRF时,特征函数的权重由于是log形式的概率,所以都是小于等于0的,而且概率还要满足相应的限制,如
    $$
    0 \leq p(w_{i}|l_{i}) \leq 1,\sum_{w}p(w_{i}=w|l_{1})=1
    $$
    但在CRF中,每个特征函数的权重可以是任意值,没有这些限制。