目录
如果说,你有一天生活中的一连串快照,你想在这些照片上面打上活动内容的标签(吃睡、睡觉、开车等)。你会怎么做?
一种方式是忽略这些快照的本质, 建立一个图片分类器。举个例子,事先给定一个月的打标快照,你可能会了学到在早上6点拍的较暗的照片很可能是在睡觉,有很多明亮颜色的照片,很可能是关于跳舞等等。
然而,忽略顺序关联,你会丢失很多信息。
例如,如果你看到一张嘴张的特写照片,那它应该打标成吃饭还是唱歌呢?如果上一张照片中你在吃饭或者做菜,那当前这张照片很可能是他在吃饭;但如果上一张照片中你在唱歌或者跳舞,那这张很可能是在说你也在唱歌。
因此,为了提高我们打标的准确率, 我们应该结合参考相近照片,这正是条件随机场( condition random field)所做的事情
我主要讨论的是自然语言处理方面的,来看下在词性标注中的应用:
让我们通过更常用的词性标注的例子来了解更多细节。
词性标注( POS Tagging)的目标是使用标签对句子(一连串的词或短语)进行打签,
那么就让我们建立一个条件随机场来为句子做词性标注。正如分类器所做,我们首先要设定一组特征方程
1. CRF的特征函数
在CRF中,每个特征函数以下列信息作为输入: f(s, i, Li, Li-1) 当前词的标签是假设给与的标签Li
- 一个句子s
- 词在句子中的位置i
- 当前词的标签Li
- 前一个词的标签Li-1
输出的是一个实数值(尽管这些值一般是0或1)。
(注意: 通过限制我们的特征只依赖于当前与之前的词的标签,而不是句子中的任意标签, 实际上我建立了一种特殊的线性CRF, 为简单起见, 本文不讨论更广义的CRF)
例如,某个特征函数就可以用来衡量当上一个词是"very'时,当前词有多少程度可以被标为一个形容词。
2. 从特征到概率
接下来, 为我们的每个特征函数f 设置一个权重值λ (后面我会介绍如何通过训练学习得到这些权重值)。
给定一个句子s,现在我们可以通过累加句中所有词加权后的特征来为s的打标结果:
第一个求合是对遍历特征方程J的求和, 而内层的求合是对句子里面的每一个位置 i 进行遍历进行求和。
最终,我们通求指数与归一化的方式将转换这些得分转换为0、1之间的概率值
是不是看起来会有些眼熟。(分母就是把所有情况加起来,使得总体等于1)
这是因为实际上CRF就是序列版本的逻辑回归( logistic regression)。
正如逻辑回归是分类问题的对数线性模型, CRF是序列标注问题的对数线性模型。
3. CRF和隐马科夫模型HMM
上面的CRF 的概率公式有没有一点感觉有点像HMM
回顾隐马可夫模型( Hidden Markov Model)定义如下:
那么:HMM与CRF比较会是如何?
CRF更加强大。 CRF可以为任何HMM能够建模的事物建模,甚至更多。以下的介绍就可以说明这一点。
设HMM概率的对数为
如果我们将这些对数概率值看作二进制的转换指示符与发射指示符的权重, 这就完全具备了CRF的对数线性形式。也就是说,我们可以对任意的HMM建立等价的CRF
(下图是对于‘对任意的HMM建立等价的CRF’的数学解释,有点难,可以不看,记住结果即可)
但是,出于以下两个原因, CRF同样可以为更为丰富的标签分布建模:
4. 关键总结