1.模型
最近在弄基于最大熵模型的依存句法分析,看到最大熵模型,觉得和CRF(条件随机场很相似),都使用特征函数这种东西,最大熵可以使用联合概率建模,也可以使用条件概率建模,crf和最大熵在同使用条件概率建模的时候:p(y|x)的计算看公式基本一样:
但crf作为一种序列模型,还是和最大熵有区别,最大熵模型并不能当作序列模型使用。序列模型版本的最大熵模型是最大熵马尔可夫模型,传统的最大熵模型并没有HMM和CRF的状态转移这种特征。最大熵马尔科夫模型(MEMM)存在标注偏置问题,网上好多都只是提到因为MEMM局部归一化导致这个问题,我看有人贴出这样的公式:
对比一下CRF的归一化公式:
这样看来MEMM的归一化确实是局部的,至于为什么会导致标注偏置,由于不熟悉MEMM这个模型,我也没真正理解。
2.序列模型特征和普通模型特征和上下文特征。
依存句法分析的输入不仅要考虑词序列的上下文特征还要考虑词性的特征。使用最大熵模型时要使用到上下文特征,预测时只是考虑2个词之间的依存关系。并不用到转移特征。
举个例子:
北京 是 中国 的 首都。
将其画成一个二维表。
x1 | x2 | y |
北京 | ns | a |
是 | v | b |
中国 | ns | c |
的 | u | d |
首都 | n | e |
特征x1是词,x2是词性,y是标签,因为还没仔细了解依存句法分析,这里y标签就随便写了。
看到这种数据是不是很熟悉,在鸢尾花数据集中,就是这样的类似的数据,多个特征x和一个标签y直接丢到分类器中就可以分类,像鸢尾花这样的数据每一条是上下文无关的,它们之间独立,只与给定特征有关。但是在依存句法分析中,词之间是上下文相关的,不能随便交换这些词的顺序。可以定义最大熵模型的模板来提取x1的上下文特征。但是标签y上下文无关,预测并不需要像hmm和crf那样维特比解码,直接输出最大概率的y标签即可。也就是说,在最大熵模型中依然可以使用上下文特征。我看到网上一些的最大熵模型的实现基本都是针对类似鸢尾花这种数据的,也就是上下文无关,看作属于传统的分类问题。我叫鸢尾花这种数据为普通模型特征。以前我一直不理解,序列模型的特征和这种传统的普通模型的特征的区别和联系。你也可以把序列数据弄成这样一个二维表格,但是和普通模型特征不一样的就是,顺序不能调换,序列模型中并不仅仅是只用到给出的特征,比如在CRF中还会生成一些上下文特征,状态转移特征。比如在分词中,标签由B,M,E,S。
x1 | y |
北 | B |
京 | E |
是 | S |
中 | B |
国 | E |
的 | S |
首 | B |
都 | E |
你当然可以把上面的数据输入到一个普通的分类器中,毫无疑问效果必定很差,因为并没有用到上下文,状态转移这样的特征。