重大进展
DL在很多常见的 NLP 任务中取得了顶尖的结果,如命名实体识别(NER)、词性标注(POS tagging)或情感分析,在这些任务中神经网络模型优于传统方法。而机器翻译的进步或许是最显著的。
从训练 word2vec 到使用预训练模型
词嵌入是用于自然语言处理(NLP)的最广为人知的深度学习(DL)技术。它遵循由 Harris(1954)提出的分布式假设,根据该假设,具有相似含义的词通常出现在相似语境中。word2vec(Mikolov et al., 2013)和 GloVe(Pennington et al., 2014)是该领域的先驱性算法,尽管它们无法被称为 DL(word2vec 中的神经网络是浅层的,GloVe 实现了一种计数方法),但借助它们进行训练的模型通常用作深度学习 NLP 方法的输入数据。它的效果很好,因此越来越多的人开始使用词嵌入。
最初,对于一个需要词嵌入的 NLP 问题,我们倾向于利用与领域相关的大型语料库训练自己的模型。当然,这不是推进词嵌入广泛使用的最佳方式,因此人们开始慢慢转向预训练模型。通过在维基百科、推特、谷歌新闻、网页抓取内容等上面进行训练,这些模型可以轻松地把词嵌入整合到 DL 算法中。
今年证实,预训练词嵌入模型仍然是 NLP 中的核心问题。比如来自 Facebook 人工智能实验室(FAIR)的 fastText 发布了 294 种语言的预训练向量,对社区做出了重大贡献。除了大量的语言,fastText 这一举措的有用之处在于其使用字符 n 元作为特征。这使得 fastText 避免了 OOV(out of vocabulary)问题,因为即使非常罕见的词(比如特定领域的术语)也很可能与常见词共享字符 n 元。在这个意义上,fastText 要比 word2vec 和 GloVe 表现更好,并且它在小数据集上的表现也要优于二者。
使用通用嵌入适应特定用例
也许使用预训练词嵌入的主要缺点是训练数据和真实数据之间存在词分布式差距。在 NLP 中此类适应通常被称为跨域或域适应技术,并且非常接近迁移学习。Yang et al. 今年提出了一个非常有趣的工作,在给定源域嵌入的情况下,他们展示了一个正则化的 skip-gram 模型来学习目标域的词嵌入。
其核心思想简单却有效。想象一下如果我们知道源域中词 w 的词嵌入为 w_sws。为了计算 w_twt(目标域)的嵌入,研究者将两个域之间的特定迁移量添加到 w_sws。基本上,如果词频繁出现在两个域中,这意味着其语义并不依赖于域。这种情况下,迁移量很大,在两个域中产生的嵌入可能相似。但是如果特定域的词在一个域中出现的频率比另一个域频繁得多,则迁移量小。
情感分析不可思议的「副作用」
今年,Radford et al. 发现训练模型中的单个神经元具有高度可预测的情感值,并探索了字节级的循环语言模型属性,旨在预测亚马逊评论文本中的下一个字符。是的,这一单个「情感神经元」能够相当精确地区分消极和积极的评论。
令人兴奋的抽象摘要系统
自动摘要和机器翻译一样是 NLP 任务。自动摘要系统有两个主要的方法:抽取式——从源文本中抽取最重要的部分来创建摘要;生成式——通过生成文本来创建摘要。从历史角度来看,抽取式自动摘要方法最常用,因为它的简洁性优于生成式自动摘要方法。
近年来,基于 RNN 的模型在文本生成领域获得了惊人成绩。它们在短输入和输出文本上效果非常好,但对长文本的处理不太好,不连贯且会重复。Paulus et al. 在论文中提出一种新的神经网络模型来克服该局限。结果很好,如下图所示。Paulus et al. 使用 biLSTM 编码器读取输入,使用 LSTM 解码器生成输出。他们的主要贡献是一种新的注意力内策略(intra-attention strategy),分别关注输入和持续生成的输出;和一种新的训练方法,将标准监督式词预测和强化学习结合起来。
注意力内策略目标是避免重复输出。研究者在解码时使用时间注意力(temporal attention),以查看输入文本之前的 segments,从而确定接下来要生成的单词。这强制模型在生成过程中使用输入的不同部分。他们还让模型评估解码器中之前的隐藏状态。然后结合这两个功能选择输出摘要中最适合的单词。
强化学习创建摘要的时候,两个人会使用不同的单词和句子顺序,两个摘要可能都是有效的。因此,好的摘要的词序未必要匹配训练数据集中的顺序。基于此,论文作者没有使用标准的 teacher forcing 算法,该算法可使每个解码步(即每个生成单词)的损失最小化;而是使用强化学习策略,这被证明是一个很棒的选择。
迈向完全无监督机器翻译的第一步
双语词典构建,即使用源语言和目标语言的单语语料库获取两种语言词向量之间的映射关系,是一个古老的 NLP 任务。自动构建双语词典在信息检索、统计机器翻译等 NLP 任务中起到一定作用。但是,这种方法主要依赖于初始的双语词典,而这种词典通常不容易获取或构建。
随着词嵌入的成功,跨语言词嵌入出现,其目标是对齐嵌入空间而不是词典。不幸的是,这种方法仍然依赖于双语词典或平行语料库。Conneau et al.(2018)在论文中呈现了一种很有前景的方法,该方法不依赖于任何特定资源,且在多个语言对的词翻译、句子翻译检索和跨语言词汇相似度任务上优于顶尖的监督方法。该方法将在单语数据上分别训练的两种语言的词嵌入集作为输入,然后学习二者之间的映射,以使共享空间中的翻译结果较为接近。他们使用的是用 fastText 在 Wikipedia 文档上训练的无监督词向量。
专用框架和工具
现有大量通用 DL 框架和工具,其中一些得到广泛应用,如 TensorFlow、Keras 和 PyTorch。但是,专门用于 NLP 的开源 DL 框架和工具出现了。
AllenNLP框架是基于 PyTorch 构建的平台,可以在语义 NLP 任务中轻松使用 DL 方法。其目标是允许研究者设计和评估新模型。该框架包括语义角色标注、文字蕴涵和共指消解等常见语义 NLP 任务的模型参考实现。
ParlAI框架是一个用于对话研究的开源软件平台。它使用 Python 实现,目标是提供用于共享、训练和测试对话模型的统一框架。ParlAI 提供与亚马逊土耳其机器人轻松集成的机制,它还提供该领域常用数据集,支持多个模型,包括记忆网络、seq2seq 和注意力 LSTM 等神经网络模型。
OpenNMT工具包是专用于序列到序列模型的通用框架,可用于执行机器翻译、摘要、图像到文本和语音识别等任务。
趋势
然而,尽管我们看到一些进展,这一领域中仍有很多事情要做。比如,NLP 框架 spaCy 通过整合词嵌入和 DL 模型以本地方式完成诸如命名实体识别(NER)和依存句法分析(Dependency Parsing)等任务,允许用户更新模型或使用他们自己的模型。
我认为这就是趋势。未来将会有针对特定领域(比如生物、文学、经济等)、易于在 NLP 框架中使用的预训练模型。就我们的使用情况来说,锦上添花的事情就是以尽可能简单的方式调整它们。与此同时,现在开始出现适应词嵌入的方法。
用于解决 NLP 问题的 DL 技术持续发展。一个重要指标就是近年深度学习论文在重要的 NLP 会议如 ACL、EMNLP、EACL、NAACL 上的比例。有关端到端学习的研究才刚刚开始。我们仍然通过处理一些经典的 NLP 任务来准备数据集,如清洗、标记化(tokenization)或部分实体统一化(如 URL、数字、电子邮箱地址等)。我们还使用通用嵌入,缺点是它们无法捕捉特定领域术语的重要性,且对多词表达的处理效果不好,这是我在过去项目中多次发现的重要问题。
摘自机器之心 一文概述2017年深度学习NLP重大进展与趋势