author: 张俊林
除了序列标注问题外,句子对匹配(Sentence Pair Matching)问题也是NLP中非常常见的一类问题,所谓“句子对匹配”,就是说给定两个句子S1和S2,任务目标是判断这两个句子是否具备某种类型的关系。如果形式化地对这个问题定义,可以理解如下:
意思是给定两个句子,需要学习一个映射函数,输入是两个句子对,经过映射函数变换,输出是任务分类标签集合中的某类标签。既然我们要讨论深度学习,那么这个映射函数F就是通过神经网络来进行映射的,而标签集合里的分类标签具体代表的含义跟任务相关。
典型的例子就是Paraphrase任务,即要判断两个句子是否语义等价,所以它的分类标签集合就是个{ 等价,不等价}的二值集合。除此外,还有很多其它类型的任务都属于句子对匹配,比如问答系统,就是判断两个句子是否一个是问题一个是答案的关系,此类任务还有很多,关键是看你怎么理解一个任务的目标。
今天我们主要讲讲如果利用RNN来构造这个映射函数F,那么神经网络的结构应该如何设计?虽然标题说是“常见”,但是其实讲这方面的文献非常之少。我把使用RNN解决句子对匹配的神经网络结构抽象成三类情况,这三类也是相对容易想到的结构。当然,这里要注意,虽然我们这里说的是RNN,但是它代表了LSTM、GRU、多层深度网络等各种变体形式,为行文方便,在此统一用RNN来指代。