2017深度学习NLP进展与趋势
摘要: 作者通过本文概述了 2017 年深度学习技术在 NLP 领域带来的进步,以及未来的发展趋势,并且最后向大家介绍了几个正在兴起的NLP框架和工具。
在过去几年中,深度学习(DL)在图像识别和语音处理等领域取得了巨大的进步。
它在自然语言处理(NLP)中的应用起初并不令人兴奋,但是随着技术的进步它也为一些常见的NLP任务提供了最先进的解决方案。命名实体识别(NER)、词性(POS)标签、情感分析通过神经网络模型获得了更好的解决。
在这篇文章中,我将回顾2017年DL在NLP领域的贡献。或许说是我想和大家分享一下我最喜欢的技术方案。2017年,DL在NLP中的使用不断扩大,在某些情况下产生了惊人的结果,所有迹象都表明这一趋势还会延续。
1.从word2vec到预训练模型
词嵌入是与NLP有关的DL最有名的技术。他们遵循哈里斯的分配假说,根据这个假说,具有相似含义的词通常会出现在可比较的语境中。关于词嵌入的详细解释,我建议你阅读加布里埃尔·莫尔德基(Gabriel Mordecki)的文章。诸如word2vec(Mikolov等,2013)和GloVe(Pennington等,2014)等算法已经成为该领域的先驱,尽管它们不被认为是DL(word2vec中的神经网络较浅,GloVe实现了一个基于计数模型的方法。
一开始,对于一个需要词嵌入的NLP问题,我们倾向于从一个与其领域相关的大语料库中训练我们自己的模型。当然,这不是最好方法,因为预训练模型的出现。数据显示今年,预训练词嵌入模型仍然是NLP中的一个关键模型。
虽然我们看到一些进展,但在这方面还有很多工作要做。例如,NLP框架spaCy以本地方式将词嵌入和DL模型集成到了NER和Dependency Parsing等任务中,允许用户更新模型或使用自己的模型。在将来,对于在NLP框架中使用的特定领域(例如生物学,文学,经济等)预先训练好的模型是有益的。
2.通用嵌入到特定用例
也许使用预训练的词嵌入的主要缺点是训练数据与我们需要解决问题的实际数据之间存在单词分布差。假设你有关于跨领域的问题呢,例如:经济学的生物学论文、食谱。你可能没有足够大的语料库来训练良好的嵌入,所以通用嵌入语言很可能会帮助你提高结果。但是如果可以将通用嵌入调整为适合你的特定用例呢?
这种适应性通常被称为NLP中的跨域或域适应技术,它非常接近于转移学习。今年,Yang等人提出了一个正则化的skip-gram模型,用于学习目标域的嵌入,给定源域的嵌入。这是一个全新的领域,我认为它将在近期会得到更多的关注。
3.情感分析的威力
今年,Radford等人正在探索字节级循环语言模型的特性,其目的是预测亚马逊评论文本中的下一个字符,当时他们发现训练模型中的单个神经元对情感价值具有高度的预测性。这个单一的“情感神经元”能够以相当准确的方式将评论分类为正面或负面。
注意到这种行为之后,他们决定在斯坦福情绪树库上测试模型,发现它的准确性是91.8%,而之前的最好的是90.2%。他们的模型,以无监督的方式进行训练,至少在一个特定但广泛研究的数据集上实现了的情感分析。
3.1情绪神经元正在工作
由于模型在角色层次上工作,所以神经元在文本中改变了每个角色的状态,看到它的行为是相当惊人的。
例如,单词best之后,神经元的值变为强正值。然而,这种效果随着horrendous的词语的消失而消失,这是有道理的。
3.2生成极性偏见的文本
当然,训练好的模型仍然是一个有效的生成模型,所以它可以用来生成类似亚马逊评论的文本。但是,我觉得更棒的是,你可以通过简单地覆盖情感神经元的价值来选择生成的文本的积极性。
情绪固定为正值 | 情绪固定为负面 |
Best hammock ever! Stays in place and holds its shape. Comfy (I love the deep neon pictures on it), and looks so cute. | They didn’t fit either. Straight high sticks at the end. On par with other buds I have. Lesson learned to avoid. |
Just what I was looking for. Nice fitted pants, exactly matched seam to color contrast with other pants I own. Highly recommended and also very happy! | The package received was blank and has no barcode. A waste of time and money. |
作者选择的NN模型是由Krause等人提出的乘法(multiplicative)LSTM 。主要是因为他们观察到,它们正在探索的超参数设置比正常的LSTM收敛的快。它有4,096个单位,并接受了8200万亚马逊评论的语料库的训练。为什么训练良好的模式能够以一种精确的方式捕捉到情感概念仍然是一个迷人的问题。同时,你可以尝试训练你自己的模型并进行实验。
3.3 Twitter中的情感分析
无论是人们对企业品牌的评价,分析营销活动的影响,还是衡量竞选期间对希拉里·克林顿和唐纳德·特朗普的民意调查,Twitter中的情感分析都是一个非常强大的工具。
3.3.1:SemEval 2017
Twitter中的情感分析不仅引起了NLP研究人员的关注,而且也引起了政治和社会科学界的关注。这就是为什么2013年以来,SemEval大受关注的原因。今年共有48支参赛队参加,为了了解其内容,让我们来看看今年提出的五个子任务:
1.子任务A:给一则推文,判断其表达的情形:正面,负面或中性。
2.子任务B:给出一则推文和一个话题,判断主题表达的情感正面与负面。
3.子任务C:给出一个推文和一个话题,判断推文中传达的情绪等级:强积极,弱积极,中性,弱消极和强消极。
4.子任务D:给出一组关于话题的推文,判断这组推文在积极和消极之间的分布。
5.子任务E:给出一组关于某个话题的推文,估计推文在强积极、弱积极、中性、弱消极和强消极的分布情况。
子任务A是最常见的任务,有38个团队参与了这个任务,但是其他的则更具挑战性。主办方表示,DL方法的使用正在不断增加,今年有20个团队使用卷积神经网络(CNN)和长期短期记忆(LSTM)等模型。此外,尽管SVM模型仍然非常流行,但一些参与者将它们与神经网络方法或者使用了词嵌入特征相结合。
3.3.2:BB_twtr系统
今年我发现一个纯的DL系统BB_twtr系统(Cliche,2017)在5 个子任务中排名第一。作者将10个CNN和10个双向LSTM结合起来,使用不同的超参数和不同的预训练策略训练。
为了训练这些模型,作者使用了人工标记的推文(子任务A有49,693个),并且构建了一个包含1亿个推文的未标记数据集,通过简单的标记来提取推特数据集中表示积极的积极表情符号,如:-),反之亦然消极鸣叫。为了对CNN和双向LSTM输入的词嵌入进行预训练,作者使用word2vec,GloVe和fastText在未标记的数据集上构建词嵌入。然后他使用隔离的数据集来添加积极和消极的信息,然后使用人类标记的数据集再次提炼它们。之前的SemEval数据集的实验表明,使用GloVe会降低性能。然后作者将所有模型与软投票策略结合起来。由此产生的模型比2014年和2016年的历史最好的历史成绩更胜一筹。
这项工作表明了将DL模型结合起来,可以在Twitter中的情感分析中超越监督学习的方法。
4.一个令人兴奋的抽象概括系统
自动摘要和自动翻译是最早的NLP任务。自动摘要有两种主要的方法:一是通过从源文本中提取最重要的段而建立的,二是通过生成文本来创建摘要。
近年来,基于RNN的模型在文本生成方面取得了惊人的成果。它们对于处理短的输入和输出文本表现非常好,但处理长文本往往是不连贯的。保卢斯(Paules)等提出了一种新的神经网络模型来克服这个局限性。结果很好,如下图所示:
他使用双向LSTM编码器读取输入,并使用LSTM解码器生成输出。他们的主要贡献是使用一种新的内部注意力策略分别关注输入和连续生产的输出,并且结合了标准监督词语预测和强化学习。
4.1内部注意力策略(intra-attention strategy)
内部注意力策略的目标是避免输出中的重复。它们在解码时使用时间注意力来查看输入文本的前一段,然后决定下一个将要产生的字。这迫使模型在生成过程中使用输入的不同部分。他们还允许模型从解码器访问以前的隐藏状态。然后将这两个功能组合起来,为输出摘要选择最好的单词。
4.2强化学习
创建摘要时,两个不同的人将使用不同的单词和句子,但这两个摘要都是可行的。因此,一个好的摘要不一定是与训练数据集中的序列相匹配的单词序列。基于这一点,作者没有使用teacher forcing算法,它可使每个解码步骤的损失最小化,他们通过使用强化学习策略,获得了更好的性能。
5.无监督机器翻译的第一步?
双语词典归纳,即用源语言和目标语言的单语语料库获取映射关系,这是一个古老的NLP任务。自动生成双语词典有助于其他NLP任务,如信息检索和统计机器翻译。然而,这个词典并不是容易获取或者很容易建立。
随着词嵌入的成功,跨语言词嵌入的想法也出现了,目标是对齐嵌入空间而不是词典。不幸的是,这种方法也依赖于双语词典或平行语料库。Conneau et al·(2018)提出了一个非常有前景的方法,不依赖于任何特定的资源,且对于多个语言对的次翻译、句子翻译检索和跨语言单词相似度任务上优于监督学习的方法。
该方法是将输入的两组单词嵌入在单语数据上进行独立训练,并学习它们之间的映射,以便共享空间中的翻译结果。他们使用fastText在维基百科文档上训练的无监督单词向量。以下图片说明了关键的想法:
红色的X分布是英语单词的嵌入,蓝色的Y分布是意大利语单词的分布。
首先,他们使用对抗学习来学习旋转矩阵W,W执行第一次原始对齐。他们根据Goodfellow等人提出的主张,基本上训练了一个生成对抗网络(GAN)。要了解GAN是如何工作的,我建议你看这篇由Pablo Soto撰写的优秀文章。
为了使用对抗学习对问题进行建模,他们将鉴别器定义为具有决定作用的角色,从WX和Y随机采样的一些元素(参见上图中的第二列),每个元素属于哪种语言。然后,他们训练W以防止鉴别者做出好的预测。这在我看来非常聪明,直接的结果是相当不错的。
之后,他们再应用两个步骤来完善映射。一是为了避免罕见字引入映射计算中的噪声。另一步主要是使用学到的映射和距离度量来构建实际的翻译结果。
这个方法在一些案例中表现的很不错,例如,对于英文-意大利语的翻译,在P @ 10的情况下,它在1500个单词上的准确率比最优的高出17%。
6.框架和工具
如TensorFlow,Keras或PyTorch,他们应用都非常广泛。然而,面向特定开源NLP的DL框架和工具才刚刚兴起。其中有三个引起了我的注意,你可能会觉得有趣。
6.1.AllenNLP
AllenNLP框架是建立在PyTorch之上,它能够轻松地使用语义NLP任务DL方法。其目标是让研究人员设计和评估新模型,它包含了常用语义NLP任务模型的参考实现,如语义角色标注,文本引用。
6.2.ParlAI
ParlAI框架是用于对话研究的开源软件平台。它是用Python实现的,其目标是为对话模型的共享,训练和测试提供一个统一的框架。它提供了该领域流行的数据集,并支持多种模型,包括记忆网络、seq2seq和LSTM等神经模型。
6.3.OpenNMT
OpenNMT工具包是专门序列到序列模型的通用框架。它可以用于执行机器翻译,摘要,图像到文本和语音识别之类的任务。
7.总结:
不可否认的是用于解决NLP问题的DL技术正在持续发展。一个重要的指标就是过去几年在ACL,EMNLP,EACL和NAACL等关键NLP会议上的深度学习论文比例正在提升。
然而,关于端到端学习的研究才刚刚开始。我们仍然使用一些经典的NLP任务来准备数据集,比如清理,标记或统一一些实体(例如URL,数字,电子邮件地址等)。我们也使用通用嵌入,其缺点是不能捕捉到特定领域术语的重要性,而且对于多字表达式来说表现不佳。
8.扩展阅读
有关NLP研究中的深度学习方法的更多信息,我强烈建议你阅读Young等人的优秀论文“ 基于深度学习的自然语言处理的最新趋势 ”。