1.为什么不直接使用LSTM?
关于标注任务,我们自然而然的可以想到,使用RNN序列模型,在每一时刻输出对应的隐状态Ht,然后进行每一时刻的逐帧softmax。为什么不行呢?主要原因在于,RNN模型(比如LSTM)没有考虑到输出类标之间的关联性,比如NER任务中,一些输出的类标之间是有顺序性的,而RNN虽然利用隐变量Ht学到了X之间的顺序关系,但是没有考虑到输出序列的顺序性。
于是,我们将二者结合起来,使用RNN序列模型提取X之间的转移关系,使用CRF层来处理输出序列的顺序。
2.CRF原理
在CRF的标注任务中,我们的目标是根据观测序列推断出最有可能的标注序列,设我们的序列长为n,标签数为K,其本质是一个K^n分类的问题,而逐帧softmax则计算的是一个n次的K分类问题。
即在CRF的序列标注问题中,我们的目标是最大化条件概率:
为了近似这个条件概率,我们有如下两个假设:
①假设这个分布是指数族分布
这个假设意味着存在函数 f(y1,…,yn;x),使得:
其实这里也可以从另一个角度解释,即