开篇⾼能预警!本⽂前置知识:
1、理解特征函数/能量函数、配分函数的概念及其⽆向图表⽰,⻅《逻辑回归到受限玻尔兹曼机》和《解开玻尔兹曼
机的封印》;
2、理解特征函数形式的逻辑回归模型,⻅《逻辑回归到最⼤熵模型》。
从逻辑回归出发,我们已经经过了朴素⻉叶斯、浅层神经⽹络、最⼤熵等分类模型。显然,分类模型是不考虑时间
的,仅仅计算当前的⼀堆特征对应的类别。因此,分类模型是“点状”的模型。
想⼀下,如果我们有⼀个词性标注(POS)的任务,在这个任务中,类别有动词、名词、形容词、副词、介词、连
词等有限个类别。样本呢,当然就是⾃然语⾔序列啦,例如“⼣⼩瑶喜欢 狗狗”这个序列就对应着“名词 动词 名词”这
三个对应类别。
这时我们如果⽤“点状”模型,也就是分类模型来做这个任务,会产⽣什么现象呢?
假如我们选取的特征就是当前位置词,那么我们将分类器训练完成后,分类器遇到“⼣⼩瑶”就会输出“名词”这个类
别,也就是说它是不考虑上下⽂的,预测每个词的词性的时候才不会考虑整个句⼦的情况呢。在这⾥简单例⼦中看
似没有什么影响,然⽽实际上⾮常多的词在不同的句⼦中会表现出不同的词性。⽐如“⾕歌”⼀词,在“我今天参观了
⾕歌”中就是名词,在“你⾕歌⼀下”中就是动词。可以看出,词性不仅取决于它⾃⼰,还取决于它的上下⽂(它两边
的词)!
那么,有没有可能让逻辑回归、朴素⻉叶斯这类点状模型利⽤好上下⽂信息呢?最容易想到的做法就是将上下⽂信
息编码成特征啦!
⽐如加⼊当前词的2-gram上下⽂作为特征,这时在“你⾕歌⼀下”中去预测“⾕歌”的词性的时候,特征就是三维的:
1、“⾕歌”2、“你 ⾕歌”3、“⾕歌 ⼀下”。⽽在“我今天参观了⾕歌”中,特征是1、“⾕歌”2、“了 ⾕歌”3、“⾕歌
<EOS>”这样就能根据不同的特征值在不同的句⼦中更精确的分类“⾕歌”的词性啦〜
在《逻辑回归到最⼤熵模型》中,⼩⼣详细讲了如何将逻辑回归的传统形式转换成特征函数/能量函数描述的形式,
⽽如《解开玻尔兹曼机的封印》所⽰,这种形式很容易画成有向图或⽆向图的形式: