摘要: 目前,词和语句的嵌入已经成为任何基于深度训练的自然语言处理系统的重要组成部分。自然语言处理系统在固定长度的密集向量中编码单词和语句,从而通过神经网络极大地改进文本数据的处理。
现如今,一个巨大的趋势是对通用嵌入的探索:在一个大语料库中进行预先嵌入训练,并且可以插入各种下游的任务模型(情感分析、分类、翻译……),通过包含一些在更大的数据集上训练过的常规词或者语句的表示来自动提高其性能。
这就是迁移训练的一种形式。
虽然无人监督的语句表示训练已经有相当长的一段时间了,但是,最近几个月已经转向了监督和多任务的训练计划,在2017年底/ 2018年初有一些非常有趣的建议。
通用词或者语句嵌入的全新趋势。在这篇文章中,我们用黑色加粗描述了模型。所有标识模型的参考文献在文章的末尾列出。
这篇文章是一个简明的入门材料,在当前世界上最先进的通用词和语句嵌入中,有一些描述。
- 强/快基线: FastText, Bag-of-Words
- 最先进的模型: ELMo, Skip-Thoughts, Quick-Thoughts, InferSent, MILA/MSR的通用目的语句表示模型(General Purpose Sentence Representations)和谷歌的通用语句编码模型(Google’s Universal Sentence Encoder)。
让我们以词嵌入开始。
Word嵌入研究的最新进展
在过去的五年里,人们提出了大量可能的嵌入词的方法。最常用的模型是Word2VEC和GloVe,它们都是基于分布假设的无监督方法(在相同上下文中出现的单词往往具有相似的含义)
虽然一些工作通过结合语义或句法知识的监督来增强了这些无监督的方法,但纯粹的无人监督的方法在2017年和2018年间有着有趣的发展,最值得注意的是FastText(Word2VEC的扩展)和ELMo(最先进的关系词向量)。
FastText是在2013年提出Word2VEC框架的Tomas Mikolov团队开发的,触发了对通用单词嵌入的研究突破。
FastText在原始Word2VEC向量上的主要改进是n-gram字符的结合,它允许计算那些单词中没有出现在训练数据中的单词表示(“词汇表之外”的单词”)。
FastText向量是以超高速来训练,并可在Wikipedia(维基百科)和Crawl上的157种语言中训练。FastText向量是一个很好的基线。
深层语境词表征(ELMO)最近在单词嵌入中以显著的数量改进了艺术的状态。它们是由艾伦人工智能研究所开发的,将于六月初在NAACL 2018上发表。
Elmo对词语语境有相当多的了解。
在ELMo中,每个单词都被分配一个表示,这是它们所属整个语料库的语句的一个函数。从两层双向语言模型(LM)的内部状态计算嵌入,因此从语言模型命名为“ELMo”:Embeddings from Language Models。
ELMo的特征:
- ·      ELMo的输入是字符而不是单词。他们可以利用子词单位来计算有意义的表达方式,甚至用于词汇表以外的单词(如FastText)。
- ·      ELMo是在biLMS中的几个层上激活的一些级联。语言模型的不同层在一个单词上对不同类型的信息进行编码(例如,词性标注过程很好地被biLSTM的较低层预测,而词义消歧在更高的水平上被更好地编码)。
级联所有层允许自由组合各种词的表示,以更好地实现接下来的任务。
通用句嵌入的兴起
目前有许多关于训练语句嵌入研究的竞争方案。尽管一些简单的基线,如:平均单词嵌入一贯地给予强有力的结果,一些新的无监督和监督的方法,以及多任务训练计划,已经出现在2017年末和2018年初的时候,并导致了一些有趣的改进。
让我们快速地看一下当前研究的四种类型的方法:从简单的词向量平均基线到无监督或监督的方法和多任务训练方案(如上文所述)。
在这一领域有一个普遍的共识,就是直接对语句的单词向量求平均值的简单方法为许多下游任务提供了一个强有力的基线。
在Arora等人的工作中,详细地描述了用于计算这样的基线的一个好算法,去年发表在ICLR,《一个简单但难以克服的语句嵌入基线》:使用一个流行的词嵌入,在一个线性加权的词向量组合中对一个语句进行编码,并执行一个普通的部分去除(在其第一主要部分删除向量的预测)。这种一般的方法有更深刻和强大的理论动机,它依赖于一个生成的模型,这个模型使用一个在论述向量上的随机活动来生成文本。
上面是一个HuggingFace的对话的Bag-of-Words示意图。Bag-of-Words接近松散的词排序,但保持惊人数量的语义和句法内容。
除了简单的求平均值方法,最初主要的建议是使用无人监督的训练目标,从Jamie Kiros和他同事在2015发表的跳跃思维向量(Skip-thoughts vectors)方法开始。
监督方案训练语句嵌入作为一个训练的副作用,用于预测语句的连贯顺序或语句内子句的连贯顺序。这些方法可以(理论上)使用任何文本数据集,只要它包含以连贯的方式并列的语句或子句。
跳跃思维向量(Skip-thoughts vectors)是训练无监督语句嵌入的典型实例。它可以被认为是等价于用以单词嵌入的skip-gram模型的语句,而不是预测某单词的关联词汇,我们尝试预测给定语句的关联语句。该模型包含一个基于RNN的编码器-解码器,它被训练用于重建当前语句的关联语句。
跳跃思维(Skip-Thought)论文的一个有趣的发现是一个词汇扩展方案:Kiros等人处理训练过程中未看到的单词,通过在他们的RNN单词嵌入空间和更大的单词嵌入(如Word2VEC)之间训练一个线性的转换。
快速思维向量(Quick-thoughts vectors)是跳跃思维向量(Skip-thoughts vectors)的最新发展,今年在ICLR上发表的。这项工作中,在给定前一个语句的条件下预测下一个语句的任务,被改写为一个分类任务形式:解码器被一个分类器所替代,分类器必须在一组候选中选择下一个语句。它可以被解释为一个对生成问题的有判别能力的近似值。
这种模型的一个优点是它的训练速度(量级与跳跃思维模型相比)使它成为开拓大规模数据集的一个有竞争力的解决方案。
分类器必须从一组语句嵌入中选择下面的语句。来源于Logeswaran等人的《一个有效的训练语句表示的框架》。
长期以来,语句嵌入的监督训练被认为是比无监督的方法提供更低质量的嵌入,但是这个假设最近被推翻了。
与之前所详述的无监督方法不同,有监督的训练需要一个标注过的数据集,如自然语言推理或机器翻译,这产生了特定的任务以选择关于高质量嵌入所需数据集大小的相关问题。我们先来看看在2017发布的推理成就背后的内容。
InferSent是一种结构简单而有趣的方法。它使用语句自然语言推理(Sentence Natural Language Inference)数据集,在语句编码器的顶部训练分类器。这两个语句使用相同的编码器进行编码,而分类器在从两个语句嵌入构建的一对表示上被训练。Conneauet等人用完成的一个最大池化运算符,采取一个双向LSTM作为语句编码器。
一个监督的语句嵌入模型(InferSent)从NLI数据集中训练。来源:A. Conneau等人的《自然语言推理数据的通用语句表示的监督训练》。
除了通常选择最佳神经网络模型之外,InferSent的成功也提出了以下问题:哪些监督训练任务训练那些能更好地概括下游任务的语句嵌入?
多任务训练(Multi-task learning)可以被看作是Skip-Thoughts、InferSent和相关的无监督/监督训练方案的泛化,通过尝试将多个训练目标组合在一个训练方案中来解决这个问题。
最近的多任务训练建议是在2018年初发布的。让我们快速地看一下MILA/MSR的通用目的语句表示(General Purpose Sentence Representation)和谷歌的通用语句编码器(Universal Sentence Encoder)。
发表在ICLR 2018(通过大规模多任务训练训练通用分目的布式语句表示)上,描述MILA和微软蒙特利尔的研究论文中,Subramanian等人注意到为了能在大范围多样任务内推广,有必要对同一语句的多个方面进行编码。
作者因此利用一对多的多任务训练框架通过在多个任务之间的切换来训练一个通用语句嵌入。所选择的6个任务(对下一个/前一个语句的跳跃思维预测、神经机器翻译、竞选区域解析和自然语言推理)共享由双向GRU获得的相同语句嵌入。实验表明,当添加一个多语言神经机器翻译任务时,句法属性会被更好地训练,语句长度和单词顺序是通过一个解析任务训练的,并且训练自然语言推理对语法信息进行编码。
谷歌的通用语句编码器,在2018年初发布,遵循了同样的方法。他们的编码器使用一个在各种数据源和各种任务上训练的变化网络,其目的是动态地适应各种各样的可以理解任务的自然语言。并且为TensorFlow已经提供了一个预训练版本。
在过去的几个月中,这个领域取得了巨大的进步,已经让人们看到了许多令人瞩目的发展,并且我们通过一些方法评估和探索了这些嵌入的表现,以及它们固有的偏差或原则。
以上为译文。
本文由阿里云云栖社区组织翻译。
文章原标题《how-to-increase-the-accuracy-of-a-neural-network》,译者:Mags,审校:袁虎。
本文为云栖社区原创内容,未经允许不得转载。