出处: Sebastian Ruder's blog《Word embeddings in 2017: Trends and future directions》
原文链接:http://ruder.io/word-embeddings-2017/ (点击末尾“阅读原文”即可查看英文原文)。
本文译者:哈工大SCIR硕士生 宋皓宇
基于搭配负采样skip-gram的word2vec方法提出于2013年(Mikolov etal., 2013)[49],在相关领域内产生了巨大的影响。产生这一影响的主要原因在于伴随这一方法出现了大量的软件工具包,这些工具包使得有效训练词语的低维稠密表示并直接集成在后续模型中变得容易。在某些方面,我们已经在2013年的基础上取得了很大的进步:词嵌入模型已经成为了自然语言处理(NLP)中的一个完整部分。而在另一方面,我们似乎停留在了2013年:我们还没有找到一种预训练词嵌入的方式能够成功替代最开始的word2vec方法。
这篇博客将会主要关注词嵌入方式的缺点,以及最近的研究工作如何解决这些问题。如果没有特别说明,这篇博客讨论的都是预训练的词嵌入,比如在大规模的语料上通过word2vec或者其它变体学习得到的词语表示。预训练的词嵌入在任务中没有足够多的训练样本可以利用时尤其有效(因此,来自大量未标注数据的迁移知识是有用的),这一点对于大多数的自然语言处理任务都是成立的。想要了解更多关于词嵌入的基础介绍,请参考这篇博客:
http://ruder.io/word-embeddings-1/。
在很多应用中,词嵌入扩展成为子字(subword)级别的嵌入,这些任务包括命名实体识别(Lample et al., 2016)[8],词性标注(Plank et al., 2016)[9],依存句法分析(Ballesteros et al., 2015; Yu & Vu, 2017)[17,10]以及语言模型(Kimet al., 2016)[11]等。这些模型大多数采用了一个CNN或者一个双向LSTM读取词语的每个字符作为输入,然后输出基于字符的词语表示。
在向预训练的嵌入信息中融入字符信息时,相比于在独立字符上进行组合的函数,字符的n-gram特征被证明更加有效(Wieting et al., 2016; Bojanowski et al., 2017)[2,3]。字符的n-gram特征——对于文本分类任务来说早就不是什么新颖的特征了(Cavnar et al., 1994)[1]——特别有效,并且也构成了Facebook的fastText分类器的基础(Joulin et al., 2016)[4]。通过fastText学习得到的294种语言的嵌入信息可供使用,链接如下:
https://github.com/facebookresearch/fastText/blob/master/pretrained-vectors.md
相关研究工作表明,基于字节对编码(byte-pair encoding)的子字单元对于机器翻译任务非常有用(Sennrich et al., 2016)[12],在这一任务中子字单元取代了词语,成为标准的输入单元。这些子字单元对于那些有很多未知词语的任务也有一定的帮助,比如entity typing(Heinzerling & Strube, 2017)[13],然而目前在标准的自然语言处理任务中并没有发现这些单元有什么作用。虽然学习它们很容易,但是在大多数任务中都很难看出基于字节对编码的方式相对于基于字符的子字表示有何优势(Vania & Lopez, 2017)[50]。
使用字符信息预训练嵌入模型的另一种选择是利用在大型域内(in-domain)语料库中训练的最先进的语言模型(Jozefowicz et al., 2016)[7],比如1 Billion Word Bench mark。语言模型作为一个辅助目标对于不同的任务都有帮助(Rei,2017)[5],预训练的语言嵌入模型在扩展词嵌入模型(Peters et al., 2017)[6]时也得到了应用。随着我们开始更好地理解如何预训练和初始化模型,预训练的语言嵌入模型正在稳步的变得更加有效。由于过去几年中出现了更好的框架以及更多的计算资源,语言嵌入模型因为其更具表达力和更容易训练的特点而有望成为代替word2vec的一种选择。
使用预训练的词嵌入的一个最主要的问题在于无法处理未登录词,所谓未登录词是指那些没有在训练数据中出现过的词语。对未登录词的通常处理方式是将它们统一标记为UNK并赋予相同的向量,显然,当未登录词很多时,这样的做法并没什么效果。上一节讨论的子字级别的词嵌入方式是缓解未登录词问题的一种方式。另一种方式在阅读理解任务中比较常用(Dhingra et al., 2017)[14],如果未登录词有其它的预训练的词嵌入,那么就把这个词嵌入赋给未登录词。
最近,一些新的用于生成未登录词嵌入表示的方式被提出来。Herbelot和Baroni(2017)[15]将未登录词的嵌入表示初始化为上下文单词的总和,然后通过高学习率快速优化未登录词的嵌入表示。他们的方法对于明确要求对临时构造的(nonce)词进行建模的数据集是有效的,但是目前不知道能否将其可靠的扩展到其它典型的自然语言处理任务上。另一种有趣的生成未登录词嵌入表示的方式是通过训练基于字符的嵌入表示来重建预训练的嵌入表示(Pinter et al., 2017)[16]。这种方式在缺少资源的场景中特别有用,这些场景下大规模数据不可用,只有预训练的嵌入表示可以利用。
自从预训练词嵌入模型这种方法产生以来,如何对其质量进行评估就是一个充满争议的问题,这是因为基于词语相似度或者类比数据集的评价方法已经被证明与后续的性能呈现出弱相关(Tsvetkov et al., 2015)[21]。ACL2016的RepEval研讨会专注于如何更好的评估预训练的嵌入表示。就他们得出的结论而言,共识似乎是:虽然可以在任务内部通过词语相似性的手段对嵌入表示的质量进行评估,但是更好的方式是对后续任务的性能进行外部评估。
对于词嵌入方式最多的一种批评就是说词嵌入无法捕捉到一词多义的信息。ACL2016的一个讲习班概述了最近关于学习多义词的独立嵌入表示的工作(Neelakantan et al., 2014; Iacobacci et al., 2015; Pilehvar &Collier, 2016)[18,19,20]。然而,大多数用于多意义嵌入(multi-sense embeddings)的方法仅对词语的相似性进行评估。Pilehvar等人(2017)[22]是首批将多意义嵌入模型应用到话题分类任务中的研究者之一,在他们的实验中,多意义嵌入获得的实验指标超过了随机初始化的预训练词嵌入。
考虑到最近几年使用词嵌入的神经网络机器翻译系统取得的耀眼成绩(Johnson et al., 2016)[23],这一代的模型似乎有足够强的能力利用语境和上下文来消除词语的歧义,而不用依赖特意设计的消歧流水线或者是多意义的词嵌入。然而,我们仍然需要更好的方法来了解我们的模型是否能够充分的消除歧义,以及如果有必要,我们如何改进这种消除歧义的行为。
虽然我们不必为了后续任务获得更好的性能而去学习每一个词语的每一个意义的嵌入表示,但是毫无疑问,把每个词语通过一个向量表示为空间中的一个点有一些过于简单化了,可能会导致我们丢失掉一些细微的信息,而这些信息恰好能够对后续的任务起到关键的作用。一个有趣的方向就是如何选择能够更好地捕捉到这些信息的其它表示方式。Vilnis & McCallum(2015)[24]提出通过概率分布来建模每一个词语,以替代词向量的建模方式,这使得我们能够在某些维度上表示概率密度和不确定性。Athiwaratkun & Wilson(2017)[25]将这种方法拓展到了多模态分布,从而允许处理多义性,蕴含性,不确定性以及增强可解释性。
如果不改变表示方式,也可以通过改变嵌入空间来更好地表示某些特征。比如,Nickel and Kiela(2017)[52]将单词嵌入到双曲空间中以学习一种层次化的表示。寻找其它方式来表达包含语言假设或者能够更好地处理后续任务特征的词语表示是一个充满潜力的研究方向。
除了无法捕捉到词语的多个含义以外,词嵌入的方式也无法捕捉到短语或者多个词语联合表达的含义,它们可能具有全新的意义。短语嵌入在最开始的word2vec论文中就被提出来(Mikolov et al., 2013)[37],并且在学习更好的组合和非组合短语嵌入方面已经有了一系列的工作(Yu & Dredze, 2015; Hashimoto & Tsuruoka, 2016)[38,39]。然而,类似于多意义嵌入,精确的建模短语至今未显示出对后续任务有任何明显的帮助,而这一操作将增加额外的复杂性。类似的,更好地了解如何在神经网络中建模短语,将为我们提高捕捉组合和非组合表达方法的能力铺平道路。
我们模型中的倾向性(bias)正在成为一个更大的问题,并且我们仅仅开始了解它对模型训练和评估的影响。即使是使用Google News articles训练出来的词嵌入也显示出了对于男女性别的偏见(Bolukbasi et al., 2016)[26]。了解词嵌入捕捉到了什么其它的偏见,并找到更好的方法来消除这些偏见,对于开发出合理的自然语言处理算法十分重要。
语言是时代精神的一面镜子,词语的意义也是在不断发生变化的;现在得到的词语表示可能与过去使用或者未来使用该词语的方式大相径庭。因此,一个有趣的方向是考虑词语的时间维度及其时变性质。这让我们可以发现语义变化的规律(Hamilton et al., 2016; Bamler & Mandt, 2017; Dubossarsky et al.,2017)[27,28,29],建模词语之间随着时间变化的相似性或者相关性(Szymanski, 2017; Rosin et al., 2017)[30,31],或者捕捉语义关系的动态性(Kutuzovet al., 2017)[31]。
除了基于负采样skip-gram的word2vec方法隐式的将PMI矩阵进行因式分解的这一观点外(Levy & Goldberg, 2014)[33],对于嵌入空间及其性质的更好的理论解释工作相对较少。Arora等人(2016)[34]提出了一种新的生成词语嵌入的方式,它将语料库生成视为语篇向量的随机游走,并为类比行为建立了一些理论动机。Gittens等人(2017)[35]提供了更全面的理论,并证明了skip-gram词向量在信息论的意义上是最优的。Mimno&Thompson(2017)[36]进一步揭示了词嵌入与上下文词语的嵌入之间的有趣关系,即它们不是均匀的分散在向量空间中,而是占据了与上下文单词嵌入完全相反的窄圆锥体的位置。虽然有这样的一些理论,但是我们仍然缺乏对词嵌入所在位置和属性的理解,我们仍然需要更多理论上的研究工作。
使用预训练的词嵌入的主要缺点之一在于训练它们的新闻数据通常与它们应用场景的数据非常不同。然而在大多数情况下,我们无法在目标域中获得数百万个未标记的文档,以从头开始训练一个很好的嵌入表示。因此,我们希望能够改造使用大型新闻语料预训练的嵌入表示,使它们不仅能够捕获目标域的特征,而且更要保留所有相关的已有知识。Lu&Zheng(2017)[40]提出了一种用于学习这种跨领域嵌入表示的正则化skip-gram模型。在将来,我们需要更好的方法来对预训练的嵌入表示进行调整,以适应新的领域,或将来自多个相关领域的知识纳入其中。
除了调整词嵌入以适应新的领域,我们还可以使用语义词典中编码的已有知识来扩展预训练的嵌入表示以包含任务相关的信息。将这种关系加入到嵌入空间中的一种有效方法是retro-fitting(Faruqui et al.,2015)[41],目前已经扩展到了其它资源上,比如ConceptNet(Speer et al.,2017)[55],能够智能的选择正面和负面的例子(Mrkšić et al.,2017)[42]。将额外的先验知识加入到词嵌入,如单调性(You et al.,2017)[51]、词语的相似性(Niebler et al.,2017)[53]、任务相关的分级或强度或逻辑关系,是一个重要的研究方向。这些先验知识将使我们的模型更加健壮。
除了应用到自然语言处理任务外,词嵌入方式对于其它一系列的任务都有帮助,比如信息检索,推荐系统以及知识库中链接预测任务等。词嵌入在这些任务都有各自特定的应用方法。Wu等人(2017)[54]提出了一个与大多数应用任务相兼容的通用模型,该模型可以作为一个可靠的基线系统。
随着自然语言处理模型越来越多的在多语言环境中进行部署以及评估,创建多语言词汇的嵌入表示正在成为一个越来越重要的问题,并且近年来受到越来越多的关注。一个充满前景的研究方向是设计出一种能够使用尽可能少的平行数据来完成跨语言嵌入任务的方法,这种方法使得资源较少的语言也能够轻松学习出词语的嵌入表示。对于这一领域最近的一项综述,请参考Ruder et al(2017)[43]。
词嵌入通常只通过紧挨着词语的上下文单词窗口来学习。Levy&Goldberg(2014)[44]发现依存结构可以作为一种“上下文”,用来捕获更多的句法上的词语关系;Köhn(2015)[45]发现,这种基于依存结构的嵌入方式在一种特定的多语言评估方法下表现最佳,这种评估方法是根据不同的句法特征对嵌入进行聚类处理。
Melamud等人(2016)[46]观察到不同类型的上下文对于不同的后续任务有益,并且将不同类型的上下文学习得到的词嵌入简单连接就可以进一步提高性能。鉴于最近成功将图结构融入到神经网络并应用于不同的任务中,例如图卷积神经网络(Bastings et al., 2017; Marcheggiani&Titov,2017)[47,48],我们可以推测,把类似的结构用于学习后续任务的嵌入表示可能也会有用。
除了选择不同的上下文之外,额外的上下文也可以通过其它方式使用:Tissier et al.(2017)[56]将字典定义中的同现信息纳入负采样过程,以使相关的词语更紧密地结合在一起,并阻止它们被用作负样本。我们还可以考虑从其它上下文(例如文章标题或维基百科简介段落)获得的主题或相关性信息,这些信息可以用于使表示更适用于特定后续任务的过程。
很高兴看到我们正在将词嵌入应用到每一个可能的问题上,以获得对词嵌入更加合理的,细致入微的和有实际意义的理解。这篇博客旨在强调词嵌入学习最值得关注的一些趋势和未来发展方向。
参考文献
查看参考文献请点击“阅读原文”。
本期责任编辑: 张伟男
本期编辑: 刘元兴
“哈工大SCIR”公众号
主编:车万翔
副主编: 张伟男,丁效
责任编辑: 张伟男,丁效,赵森栋,刘一佳
编辑: 李家琦,赵得志,赵怀鹏,吴洋,刘元兴,蔡碧波
长按下图并点击 “识别图中二维码”,即可关注哈尔滨工业大学社会计算与信息检索研究中心微信公共号:”哈工大SCIR” 。