自然语言处理基石 Embedding 最新进展汇总

编者按:Huggingface科研负责人Thomas Wolf简要介绍了普适词嵌入、句嵌入的最新方法。

图片来源:John Christian Fjellestad

词嵌入(word embeddings)句嵌入(sentence embeddings)已经成为任何基于深度学习的自然语言处理系统不可或缺的部分。

词嵌入和句嵌入将单词和句子 ? 编码为固定长度的密集向量? ,戏剧性地改善文本数据的处理。

一个热门的趋势是普适嵌入(Universal Embeddings):在大型语料库上预训练的嵌入,可以插入许多下游的任务模型(情感分析、分类、翻译……),通过并入在较大规模的数据集上学习到的词/句表示自动改善模型表现。

这是一种迁移学习(transfer learning)的形式。最近,迁移学习在一些重要的任务(比如文本分类)上戏剧性地提升了NLP模型的表现。请参阅Jeremy Howard和Sebastian Ruder提出的ULMFiT模型。

尽管长期以来句子的无监督表示学习是主流,最近几个月(2017年末/2018年初),我们看到了许多非常有趣的工作,显示了向监督学习和多任务学习转向的趋势。

最近的普适词/句嵌入研究

本文对当前最先进的普适词/句嵌入做了一个简短的初步总结。我们将描述上表中加粗的模型:

  • 强力/迅速的基线:FastText、词袋(Bag-of-Words)
  • 当前最先进模型:ELMo、Skip-Thoughts、Quick-Thoughts、 InferSent、MILA/MSR的General Purpose Sentence Representations、Google的Universal Sentence Encoder

如果你希望了解一些词嵌入在2017年之前的进展,可以参考Sebastian Ruder写的Word embeddings in 2017: Trends and future directions。Ruder还写过一篇介绍词嵌入技术的文章On word embeddings。

让我们从词嵌入开始。

词嵌入最近的进展

近五年来提出了大量词嵌入方法。其中最常用的模型是word2vec和GloVe,这两个模型都是基于分布假说(distributional hypothesis)的无监督方法。(根据分布假说,出现在相同上下文中的单词倾向于具有相似的含义)。

尽管有一些工作通过并入语义或语法知识等增强这些无监督方法,纯无监督方法在2017-2018年期间取得了有趣的进展,其中最重大的是FastText(word2vec的扩展)和ELMo(当前最先进的上下文词向量)。

FastText由Tomas Mikolov团队开发,这一团队正是在2013年提出word2vec的团队。

FastText的主要改进是包含了字符的n元语法,从而可以为训练数据中没有出现的单词计算词表示。

FastText向量训练极为迅速,同时提供了基于维基百科和Crawl训练的157种语言的预训练词向量——这是很棒的基线。

ELMo(深度上下文词表示)最近将词嵌入的最佳表现提升了不少。它是由AI2开发的,并在NAACL 2018上被评为最佳论文。

Elmo(芝麻街角色)

在ELMo中,嵌入基于一个双层的双向语言模型(biLM)的内部状态计算,ELMo也是因此得名的:Embeddings from Language Models(来自语言模型的嵌入)。

ELMo的特性:

  • ELMo的输入是字符而不是单词。这使得它可以利用子字(sub-word)单元为词汇表以外的单词计算有意义的表示(和FastText类似)。
  • ELMo是biLM的多层激活的连接(concatenation)。语言模型的不同层编码了单词的不同信息。连接所有层使得ELMo可以组合多种词表示,以提升下游任务的表现。

好了,现在,让我们看看普适句嵌入。

普适句嵌入的兴起

目前有很多相互竞争的学习句嵌入的方案。尽管简单的基线(例如平均词嵌入)持续提供强力的结果,在2017年下半年和2018年上半年出现了一些创新的无监督和监督方法,以及多任务学习方案。

词袋方法

这一领域的一般共识是,直接平均一个句子的词向量这一简单方法(所谓词袋方法),为许多下游任务提供了强力的基线。

Arora等去年在ICLR发表的论文A Simple but Tough-to-Beat Baseline for Sentence Embeddings提供了一个很好的算法:选择一种流行的词嵌入,编码句子为词向量的线性加权组合,然后进行相同成分移除(根据首要主成分移除向量投影)。这一通用方法具有深刻而强大的理论动机,基于在语篇向量上随机行走以生成文本的生成式模型。

达姆施塔特工业大学最近提出了Concatenated p-mean Embeddings(连接p-均值嵌入),一个比Arora等的算法更强劲的词袋基线实现(感谢Yaser向我提及这一工作)。

词袋方法丢失了词序,但是保留了数量惊人的语义和语法内容

无监督方法

Jamie Kiros等在2015年提出了Skip-thoughts向量,一种基于无监督训练的方法。

无监督方案将学习句子嵌入作为学习预测句子或子句的下一句的副产品。这一方法可以(理论上)利用任何包含连贯句子、子句的文本数据集。

Skip-thoughts向量是无监督学习句嵌入的典型例子。可以把它看成词嵌入的skip-gram模型的句子版本:给定句子,预测其周围的句子。该模型包括一个基于RNN的编码器-解码器架构,根据当前句子重建周围的句子。

Skip-thoughts论文的词汇扩展方案很有趣:通过学习RNN词嵌入空间和word2vec之类的词嵌入的线性变换,来处理在训练中未见的单词。

最近,Quick-thoughts向量发展了Skip-thoughts向量。该论文在今年的ICLR上报告过。在这一工作中,给定前一句,预测下一句的任务被重整为一个分类任务:用一个从候选句子中选择下一句的分类器取代了解码器。这可以看成是对生成问题的判别逼近。

该模型的一大优势是训练速度(和Skip-thoughts模型有数量级的差异),因此,在大规模数据集上,它是一个很有竞争力的方案。

Quick-thoughts的分类器从一组句嵌入中选择下一句

监督方法

长期以来,人们认为,相比无监督方法,监督学习句嵌入给出的嵌入质量比较低。然而,部分是因为InferSent的提出,最近这一假定被推翻了。

和之前描述的无监督方法不同,监督学习需要标注过的数据集,该数据集包括为某个任务添加的注释,比如自然语言推断(例如,蕴涵句对)或机器翻译(翻译句对)。这就提出了问题:该选择哪一种任务?多大的数据集能提供优质嵌入?我们将在下一小节(多任务学习)讨论这些问题。在此之前,让我们看下2017年发表的InferSent这一突破。

InferSent是一个很有趣的方法,它的架构很简单。它使用句子编码器在Sentence Natural Language Inference dataset(一个包含57万句子对的数据集,每个句子对标注为中性、冲突、蕴涵三个类别中的一个)上训练一个分类器。句子对中的句子均使用相同的编码器编码,分类器在由两个句嵌入构成的表示对上训练。句子编码器为双向LSTM加上最大池化。

多任务学习

之前我们提到过,监督学习需要选择为某一任务标注的数据集:

哪种监督训练任务能够学习在下游任务中通用性更好的句嵌入?

多任务学习可以看成是Skip-thoughts、InferSent以及相关无监督/监督学习方案的推广,多任务学习通过尝试在一种训练方案中组合多种训练目标回答上面的问题。

2018年上半年发表了一些多任务学习方面的工作。让我们简单介绍下MILA/MSR的General Purpose Sentence Representation(一般目的句子表示)和Google的Universal Sentence Encoder(普适句编码器)。

MILA/MSR的工作在ICLR 2018上做了报告(arXiv:1804.00079),在这一工作中,Subramanian等观察到,为了能够推广到范围广泛的多种任务,有必要编码同一句子的多个方面。

因此,Subramanian等利用一个一对多的多任务学习框架,通过切换任务学习普适句嵌入。他们选择的6个任务(预测后句/前句、神经机器翻译、短语结构解析、自然语言推断等)共享通过双向GRU得到的句子嵌入。试验显示,通过多语神经翻译任务能更好地学习句法性质,通过解析任务则能更好地学习长度和词序,而训练神经语言推断可以更好地编码语法信息。

Google在2018年上半年发表的普适句编码器采用了同样的方法。他们的编码器使用了一个在多种数据源和多种任务上训练的转换器网络,以便动态地容纳广泛的自然语言理解任务。TensorFlow提供了一个该模型的预训练版本。

结语

最近几个月来,普适词嵌入和句嵌入这一领域还有不少有趣的进展,包括评估这些嵌入的表现的方法,以及关于其内在的偏置的研究(对普适嵌入而言,这是一个大问题)。本文没能讨论这些最新的主题,不过我们在文末提供了一些链接。

我希望你喜欢这篇简短的回顾。如果你喜欢的话,请点赞。

相关资源

  • Perone等最近发表了一篇比较ELMo、InferSent、Google普适句编码器、p-mean、Skip-thought等嵌入方法的论文:arXiv:1806.06259
  • Hironsan的github仓库收集了很多词嵌入相关的资源:Hironsan/awesome-embedding-models
  • 句嵌入论文:Skip-Thoughts(arXiv:1506.06726)、Quick-Thoughts(openreview/rJvJXZb0W)、DiscSent(arXiv:1705.00557)、InferSent(arXiv:1705.02364)、MILA/MSR的General Purpose Sentence Representations(arXiv:1804.00079), Google的Universal Sentence Encoder(arXiv:1803.11175)、Google的Input-Ouput Sentence learning on dialog(arXiv:1804.07754)。
  • 如果你对句嵌入的评估方式感兴趣,别错过Falebook最近的工作SentEval,以及NYU、UW、DeepMind的研究人员最近发表的GLUE评测框架。

来源:Medium 编译:weakish

原文发布于微信公众号 - 进击的Coder(FightingCoder)

原文发表时间:2018-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券