[NLP论文阅读]Learned in Translation: Contextualized Word Vectors

论文原文:Learned in Translation: Contextualized Word Vectors

题外话

前段时间一直在写自己的论文,目前论文基本成型,又要转入新一阶段的论文阅读了。由于对GAN等技术不是很了解,所以在挑选论文的时候有选择的避开了和这些技术有关的内容。由于之前一直在学习LSTM,所以就挑选了这篇和LSTM有关的论文进行阅读学习。后期希望能跟上目前NLP技术的脚步,了解一些比较新的技术。

引言

现在比较流行的词向量学习方法有Word2Vec、GloVe等,并且把这些词向量作为一些下游任务的初始化可以提升模型的性能。但是一个词在不同的上下文的意思是不同的,如果准确捕捉到精准的词义依然是NLP中的难题。作者发现,在图像识别领域,研究者经常把ImageNet上预训练的CNN用于其他图像识别模型。那么在NLP中,也可以把一个任务中训练好的模型用于另外一个任务。基于这样的想法,作者提出了将context vectors(CoVe)添加到原有的模型中的方法,并且通过实验证明在常见的NLP任务,例如情感分析、问题分类、推理和问答等,都起到了提升性能的作用。

基本思想

通用架构图
这是文章中给出的一个common architecture。
a)是一个典型的encoder-decoder模型,经常被用于机器翻译中。在这个工作中,作者训练了一个两层双向的LSTM模型作为基于注意力的sequence-to-sequence机器翻译模型的encoder并且将其应用于其他的NLP任务。

具体的,作者通过英语-德语机器翻译任务训练了一个神经网络模型(应该就是ab中的Encoder部分),然后得到上下文向量——CoVe。然后将CoVe和常用词向量通过一定方式结合得到用于特定任务的输入,最终提升任务模型的性能。

上下文向量CoVe

作者在文章中花了很大的篇幅介绍机器翻译模型(不了解机器翻译模型的建议阅读这位大神的博客Link),然而对于上下文相关向量的介绍却只有寥寥几行,因为所谓的上下文相关向量CoVe实际上就是通过机器翻译模型直接得到的:

Cove(w)=MTLSTM(GloVe(w))

其中GloVe(w)表示将单词w通过GloVe的词表映射层对应的向量表示,然后将这个向量表示作为机器翻译模型中Ecoder的输入,得到的Encoder的输出就是上下文向量CoVe。

在分类和问答任务中,作者使用了将传统的词向量和CoVe通过连接的方式,作为特定任务模型的输入:

w~=[GloVe(w);CoVe(w)]

使用CoVe进行分类

进行分类任务时,作者介绍了他们使用的general biattentive classification network(应该可以称之为双向注意力分类网络?):
双向注意力分类网络
这个网络模型可以处理成对的句子也可以处理单个的句子。在处理单个句子的时候就将句子进行复制,然后当成句子对处理。
然后就是一些神经网络的公式,有兴趣可以直接看文章。
文章中提到双向注意力机制时提到了这篇文章,都是2017年最新的,以后可以看看:Bidirectional attention flow for machine comprehension

数据集

情感分类:
SST-2
https://nlp.stanford.edu/sentiment/treebank.html

SST-5
https://nlp.stanford.edu/sentiment/treebank.html

IMDb
http://ai.stanford.edu/~amaas/data/sentiment/

问题分类:
TREC-6
http://cogcomp.cs.illinois.edu/Data/QA/QC/

TREC-50
http://cogcomp.cs.illinois.edu/Data/QA/QC/

蕴含分类:
SNLI
https://nlp.stanford.edu/projects/snli/

问答:
SQuAD
https://rajpurkar.github.io/SQuAD-explorer/

实验结果

作者将随机初始化的词向量、使用GloVe初始化的向量、GloVe+CoVe词向量在各个数据集上对模型性能的影响进行了对比:
实验结果1
可以看到单独使用GloVe向量比使用随机初始化的向量要好,使用GloVe+CoVe词向量的结果又要比GloVe向量要好。

作者接下来又对用于训练得到CoVe向量的机器翻译模型训练数据的规模进行了研究,得到如下结果:
实验结果2
可以看到随着机器翻译模型使用训练集的规模变大,在下游任务中使用CoVe向量的提升作用越明显。我觉得这结果还是在意料之中的,毕竟要训练一个好的LSTM是需要大量的数据的。

实验代码在作者的salesforce的github上可以看到,目前还没有去研究过,感觉应该是对以前模型代码的一些拼凑,毕竟MT模型是有开源的代码的。

结论

好好搞机器翻译模型对NLP的其他任务都是有帮助的。

感想

文中实验大部分都是分类任务,分类任务相较其他任务而言比较简单,作者提出的模型在数据上有了提高,但是涉及到的模型的复杂度也不断提高,不知道这样的代价和得到的性能提升是不是成正比。毕竟有些分类任务直接用Word2Vec训练好的词向量进行一些简单数学计算就能取得不错的分类效果。


转载:https://blog.csdn.net/sinat_31188625/article/details/77507333
发布了103 篇原创文章 · 获赞 399 · 访问量 139万+

猜你喜欢

转载自blog.csdn.net/jdbc/article/details/80691009