1.以词性标注为例说明CRF的任务目标
句子 | Bob | drank | coffee | at | Starbucks |
---|---|---|---|---|---|
可能的标注1 | 名词 | 动词 | 名词 | 介词 | 名词 |
可能的标注2 | 名词 | 动词 | 动词 | 介词 | 名词 |
… | … | … | … | … |
一个长度为k的句子,有m种词性,则有 k m k^m km种可能的标注方法。针对上述例子,第一种显然优于第二种,因为动词+动词这种形式一般不符合语法。
CRF做的事情就是给这 k m k^m km种可能的标注方法打分,找出其中评分最好的那个标注序列。打分基于CRF算法定义的特征函数,上述所说的动词+动词或者动词+名词,既可以理解成一种特征函数。
打分的方法就是定义一个特征函数的集合,用这个集合给序列打分,即把集合中所有特征函数对序列的打分加和。
2.CRF的特征函数
特征函数接受4个参数:
- 句子s
- i:代表当前观察的是句子的第i个单词
- l i l_i li:句子中第i个单词的词性
- l i − 1 l_{i-1} li−1句子中第i-1个单词的词性
f ( s , i , l i − 1 , l i ) = { 0 当 前 输 入 不 符 合 该 特 征 1 当 前 输 入 符 合 该 特 征 f(s,i,l_{i-1},l_{i}) = \begin{cases} 0 & 当前输入不符合该特征 \\ 1 & 当前输入符合该特征 \end{cases} f(s,i,li−1,li)={01当前输入不符合该特征当前输入符合该特征
如当前特征函数为动词+名词,如果当前第i-1和第i个单词分别为动词和名称则函数值为1,否则为0
3. 从特征函数到概率
针对每个特征函数
f
j
f_j
fj都有对应的权重
λ
j
\lambda_j
λj(这个权重是trainable的)。则用定义的特征函数集合,对一个标注序列的打分如下:
s
c
o
r
e
(
l
∣
s
)
=
∑
j
=
1
m
∑
i
=
1
n
λ
j
f
j
(
s
,
i
,
l
i
−
1
,
l
i
)
score(l|s) = \sum_{j=1}^{m}\sum_{i=1}^{n}\lambda_jf_j(s,i,l_{i-1},l_i)
score(l∣s)=j=1∑mi=1∑nλjfj(s,i,li−1,li)
外层求和每一个特征函数和权重乘积的和,内层求句子中每个位置特征函数和权重乘积的和
序列标注的概率可以认为是该序列的分数和所有可能序列分数的比值。
进行指数化和标准化后: e x p ( s c o r e ( l ∣ s ) ) ∑ l ′ ∈ l a l l e x p ( s c o r e ( l ′ ∣ s ) ) \frac{exp(score(l|s))}{\sum_{l'\in l_{all}}exp(score(l'|s))} ∑l′∈lallexp(score(l′∣s))exp(score(l∣s))
4. VS逻辑回归
CRF是逻辑回归的序列化版本
5. VS HMM
HMM:
p
(
l
∣
s
)
=
∏
i
p
(
l
i
∣
l
i
−
1
)
p
(
w
i
∣
l
i
)
p(l|s) = \prod_i p(l_i|l_{i-1}) p(w_i|l_i)
p(l∣s)=i∏p(li∣li−1)p(wi∣li)
取log化以后:
l
o
g
p
(
l
∣
s
)
=
∑
i
l
o
g
p
(
l
i
∣
l
i
−
1
)
+
l
o
g
p
(
w
i
∣
l
i
)
logp(l|s) = \sum_ilogp(l_i|l_{i-1}) + logp(w_i|l_i)
logp(l∣s)=i∑logp(li∣li−1)+logp(wi∣li)
如果把HMM中的log部分看成是CRF中的权重 λ \lambda λ,则HMM是由发射概率和转移概率两种特征的CRF。
因此可以认为HMM等价于CRF的一种特例。
显然CRF比HMM强大:
- CRF可以定义数量更多,种类更丰富的特征函数。
- 权重不需要像HMM那样是log形式的,可以是任意值。