seq2seq模型中的未登录词处理

近年来,深度学习在自然语言处理中的应用成为一大研究热点。而大部分自然语言处理问题(如语言模型、序列标注、句法分析、机器翻译、人机对话等)都很容易建模成Sequence-to-Sequence(以下简称seq2seq)的结构,从而能够使用通用的encoder-decoder模型来解决。本文主要探讨的是seq2seq模型中的未登录词问题。

一、什么是seq2seq、attention以及为什么会存在未登录词的问题

我们首先介绍一下什么是seq2seq模型。下图显示了该模型的一般框架。

简要而言,模型由两部分组成:绿色部分的Encoder对句子信息进行编码;而黄色部分的Decoder解码出需要的句子。例如,英汉机器翻译中将英语句子“ABC”输入到Encoder中编码,再经过Decoder解码出我们需要的中文句子“WXYZ”,完成从句子到句子的处理,也就是sequence to sequence。

为了提升性能,尤其是长距离字符串的解码性能,一般需要增加attention机制。Attention的核心观点是在解码每个词语时,要聚焦到Encoder中某个(些)位置,相当于一种soft-alignment。

Seq2seq模型近来有多火?伦敦大学助理研究员Isabelle genstein最近画了一张图。这张图本身是对于当前某些DL4NLP研究套路的戏谑,但是也从一个侧面反映出seq2seq建模方式在目前学术界及工业界的流行程度。

那么为什么seq2seq模型会遇到未登录词的问题呢?

具体而言,seq2seq在解码每个词语的时候需要在整个decoder词表上进行解码(可以理解为处理多分类问题)。考虑到计算效率,通常的做法是根据词频限制decoder词表规模,但是这样一来某些低频词语便不可能被解码出来,也就是未登录词问题。在这种情况下,即使我们不在意因为增大decoder词表规模而导致的计算压力,很多时候仍然会遇到问题,如人名、地名、新词等等(这些词语层出不穷,难以枚举)。所以对于seq2seq模型而言,未登录词是难以避开的,而且会对模型性能产生影响,如在人机对话任务中,人名、地名等词语往往对于整体的语义理解非常重要。举个例子:

用户输入“今天去爬洪山么?”,理想的回复可以是“去爬泰山吧,洪山没意思”,而因为“洪山”可能是未登录词,于是解码出来的句子可能是“去爬泰山吧,衡山没意思!”。这会严重影响用户体验。

二、问题分析

在介绍解决思路和解决方案之前,我们先对该问题进行简单的分析。

Seq2seq模型训练过程中,在预测第t个词语时需要遍历整个词表并通过softmax函数获取各个词语可能出现的概率,公式是这样的:

计算该概率是为了进一步计算目标函数关于参数的梯度:

注意到计算量主要集中在蓝色框内,因为需要遍历整个词表。为了降低计算量,通常有必要对词表的规模进行限制,但是这样一来,未登录词便不可能在解码过程中被预测到。这就是未登录词问题的根源。下面来看看如何处理这个问题。

三、解决思路以及解决方法

1. “绕开”


未登录词首先是个“词”,在英文等字母语言中,如果不按照词来解码而按照字母(包含符号)来解码不就可以了么?词语是难以枚举的(由于新词的不断产生),但是组成词语的单元(如字母、符号)则是可以枚举且种类有限。这种思路对应于(Xie et al.,2016),以及其他的一些character-based相关文章。

采用这种思路处理英文,ascii码就够了。对于中文而言,采用汉字可能不是一个很好地选择,因为常用汉字虽然只有三千多,但是汉字的总数目却有好几万。或许可以采用汉字的笔画(以及符号)来作为解码的词表。

  • NeuralLanguage Correction with Character-Based Attention (Xie et al., 2016)

文章的模型基本上就是seq2seq + attention,在Encoder端为了处理句子太长(按照字母能不长么)而使用了“金字塔结构”,具体见下图。

此外,在他们的做法中,对下一个词的预测不仅仅由Decoder决定,还要考虑一个额外的语言模型,具体公式是这样的:

语言模型采用Kneser-Ney平滑的5-gram语言模型。

文章在英文语法纠错任务(CoNLL-2014 Shared Task)上对该模型进行评价,并针对该任务做了具体的优化,最终在该任务上取得了最好的结果。


2.“缓解”


回到问题本身,导致该问题有两个主要的原因:词表增大导致的计算性能压力以及低频词(新词)。那么如果可以提升现有模型的解码效率,就意味着可以承受更大的词表,也就可以缓解这个问题。该思路对应(Jean et al.,2014)以及(Mnih et al., 2012)这两篇文章。

  • On Using VeryLarge Target Vocabulary for Neural Machine Translation (Jean et al., 2014)

为了说清楚思路,先回顾一下问题在哪里。计算量主要集中在蓝色框内,因为需要遍历整个词表。

注意到,而框内的公式表示的是期望:

果可以找到一个小词表V’近似词表V中词语的分布,则计算量将会降低。具体做法上(仅仅是该思路的一种实现方法),将训练语句划分为几组,每组单独计算词表V’,设置阈值使得V’的大小不得高于该阈值。


在本文的实现中,作者事先将训练数据集合划分为多个小集合,在每个小集合上单独建立词表V’,小词表的规模是预设的。

此外,训练完成后预测时,文章还进行了一些处理,如利用attention信息将解码为UNK的词语替换为原始词语(或者增加新的处理)等等。

  • A fast and simple algorithm for training neural probabilistic language models (Mnih et al.,2012)

文中介绍了Noise Contrastive Estimation(NCE)的方法来降低计算量,NCE方法的基本想法是将计算概率密度的问题(前一篇文章计算softmax就是在做这件事,呃,严格说不一样,因为词是离散的)转化为二元分类问题,并将normalizer作为一个整体变量来进行优化,以降低计算量。

需要说明的是,除了这两篇提到的处理方法,还有很多其他途径(如hierarchical softmax)也可以提升解码效率。

这种思路并不专门用于解决未登录词问题,完全可以只用来加速训练过程(对于模型性能而言至关重要)。而在文本摘要、文本纠错等任务中,输出句子中绝大多数词语都能在输入句子中找到,此时更好的解决方案或许不是单纯的扩大词表,而是从输入句子中“找词”,也就是我们即将介绍的第三种思路。

3.“解决”


我们注意到,导致问题的低频词(新词)都有一个共性:它们(或对应的词)一般会在前文中出现。Luong et al. (2015)、Culcehre etal. (2016)以及Gu et al. (2016)分别给出了各自的方法来利用这个共性。

Luong et al.(2015) 主要做的是机器翻译任务,在输出句子中保留词对齐信息,之后再对翻译句子做后处理;

Culcehre etal. (2016) 做的机器翻译以及文本摘要任务,解码包含两种方式,分别为在词表上解码以及在输入句子上解码(意味着可以解码到词表中没有但是在句子中出现的词)。作者使用一个分类器来判断在预测词语时具体选用哪种解码方式;

Gu et al.(2016) 做的主要是文本摘要任务,在预测词语的时候,为输入句子中出现的词“加分”。这样做,使得输入句子中的词语更可能被预测到。此外,即使词表中没有的词语(在输入句子中出现)也可能被预测到;

下面分别介绍这三篇文章。

  • Addressingthe Rare Word Problem in Neural Machine Translation (Luong et al., 2015)

这篇文章所使用的方法在本小节三篇文章中最为直接,文章做的是机器翻译任务。大致的思路是不修改seq2seq模型(不加attention),而是修改训练数据,使得翻译后的词语“记住”它对应于原句中的某个词(词对齐),如此再做后处理。

注意到该方法并不需要修改模型,文中介绍了三种具体的标注数据的方法以便实现目的。下图是英文原句以及对应的法语句子,带下划线的词语意味着该词语在模型中是被作为UNK来处理的,连线表明两个词语之间的对应关系。

第一种标注方法是这样的:

也就是将存在对应关系的UNK使用同样的标号,如unk1,而其他UNK则统一使用unk0标记。这是最简单直白的标注,但是有个缺陷,如果UNK对应的词出现在词表中,则也应该标记出来这种对应关系以便后处理。

于是有了第二种标注方法:

法语句子中每个词语后面均增加一个标记以便显示该词语对应的英文单词的位置,如法语句子第二个词对应英语句子中第三个词,于是该词的位置为P-1(2-3=-1)。注意,如果两个词语的距离太远则会被认为是没有关联的,这里需要一个阈值。

这样做使得法语句子的长度增加一倍,但是事实上在后处理的时候仅仅需要UNK词语的对应关系即可,于是有了第三种标注方法:

仅仅标注法语句子UNK对应英语英文单词的位置。

通过这样的操作,便可以在翻译的法语句中保留UNK对应的英语单词,后处理的选择便有很多了,可以直接将UNK替换成该英语单词,也可以替换为该英文单词的法语翻译等等。

  • Pointing the Unknown Words (Culcehre et al., 2016)

本文提及的思路更为简单直白,与上一篇的思路是类似的。上一篇依靠在输出句子的UNK词语中保留同原句词语的对应关系然后再做后处理,本文则是直接将预测词语看作是两种可能的结合:在词表上进行解码以及在输入句子的词语集合上进行解码。后者使用的是attention机制中的alpha权重向量。注意到,这样做的实质也就是找出句对中词语之间的对应关系。

此外,需要增加一个分类器来决定预测词语的时候选择哪种解码方式,关于该分类器文中采用的是两层感知器。

文中给出了这种思路的一个实现方式,也做了具有启发意义的实验。

  • Incorporating Copying Mechanism in Sequence-to-Sequence Learning (Gu et al., 2016)

相比较于前两篇文章,本文则提供了另一个思路:在预测词语的时候,为输入句子中出现的词“加分”。这样做,使得输入句子中的词语更可能被解码到。此外,即使词表中没有的词语(在输入句子中出现)也可能被解码到。

下面是具体做法:

在解码每个词语的时候,先算一下词表上的词的得分(第一个公式),再算一下输入句子中词语的得分(第二个公式)。如果句子中的词语也出现在词表中则合并得分,得分统一归一化为概率。

等式右侧第一个乘法其实就是取第i个词语的embedding,注意这里并没有使用attention的信息。

该公式中的h是指输入句子中的第j个词语的隐含层输出。

我们不妨去掉第二个公式中的sigmoid非线性变换,那么h不就可以理解为一种hard attention(将传统attention权重向量最大的值变为1,其余为0)所得到的向量么。

作者:徐俊,现为哈工大SCIR实验室博士生,主要研究方向为自然语言处理。

参考文献

  • Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le.”Sequence to sequence learning with neural networks.” Advances in neural informationprocessing systems. 2014.
  • Ziang Xie, Anand Avati, Naveen Arivazhagan, Dan Jurafsky,Andrew Y. Ng. “Neural Language Correction with Character-BasedAttention.” arXivpreprint arXiv:1603.09727 (2016).
  • Cho, Sébastien Jean Kyunghyun, Roland Memisevic, andYoshua Bengio. “On Using Very Large Target Vocabulary for Neural MachineTranslation.”
  • Mnih, Andriy, and Yee Whye Teh. “A fast and simplealgorithm for training neural probabilistic language models.” arXiv preprint arXiv:1206.6426 (2012).
  • Minh-Thang Luong, Ilya Sutskever, Quoc V. Le, OriolVinyals, Wojciech Zaremba. “Addressing the rare word problem in neuralmachine translation.” arXivpreprint arXiv:1410.8206 (2014).
  • Caglar Gulcehre, Sungjin Ahn, Ramesh Nallapati, BowenZhou, Yoshua Bengio. “Pointing the Unknown Words.” arXiv preprint arXiv:1603.08148 (2016).
  • Jiatao Gu, Zhengdong Lu, Hang Li, Victor O.K. Li.”Incorporating Copying Mechanism in Sequence-to-Sequence Learning.” arXiv preprint arXiv:1603.06393 (2016).
  • Kyunghyun Cho, Bart van Merrienboer, Caglar Gulcehre,Dzmitry Bahdanau, Fethi Bougares, Holger Schwenk, Yoshua Bengio. “Learningphrase representations using RNN encoder-decoder for statistical machinetranslation.” arXivpreprint arXiv:1406.1078 (2014).
  • CoNLL-2014 Shared Task. http://www.comp.nus.edu.sg/~nlp/conll14st.html

本文来源于哈工大SCIR

原文链接点击即可跳转


入门理论NLP深度学习Seq2Seq注意力机制未登录词
返回顶部