参与 | 林椿眄、刘畅、彭硕
算法
编辑 | Donna Suisui数据库
过去几年,深度学习架构和算法在图像识别和语音处理等领域取得了重大的进步。而在NLP(天然语言处理)领域,起初并无太大的进展。不过如今,NLP领域取得的一系列进展已证实深度学习技术将会对天然语言处理作出重大贡献。一些常见的任务如实体命名识别,词类标记及情感分析等,天然语言处理都能提供最新的结果,并超越了传统方法。另外,在机器翻译领域的应用上,深度学习技术所取得的进步应该是最显著的。数组
这篇文章中,我将在经过一些深度学习技术来阐述2017年NLP领域所取得的一系列进步。相关的科技论文,框架和工具备不少,在这里我没办法逐一列出,内容也不详尽。我只是想和你们分享并介绍今年一系列我最喜欢的研究。网络
我认为,2017年是深度学习的一个重要年份,随着深度学习技术在NLP领域中的应用不断深刻且产生了使人惊喜的结果,全部的迹象都代表,NLP领域将在深度学习技术的辅助下继续高效前进。架构
能够说,词嵌入模型(Word embedding)是深度学习技术在NLP领域最显著的技术。他们遵循了Harris (1954) 提出的分布式假说。根据这个假说可知,具备类似含义得此一般会出如今上下文的语境中。关于词嵌入的详细解释,你也能够阅读Gabriel Mordecki的文献。并发
诸如word2vec(Mikolov等,2013)和Glove(Pennington等,2014)等算法已经成为NLP领域的表明性算法。尽管它们不能被认为是深度学习技术在该领域的应用(word2vec中应用浅层神经网络,而Glove是基于计数模型的一种算法),可是用他们训练获得的模型做为大量深度学习模型的输入,也是深度学习技术与天然语言处理领域相结合的一种常见方式。所以,目前在咱们领域中应用词嵌入模型,一般被视为是一种好的尝试。框架
一开始,给定一个须要词嵌入模型的NLP问题,咱们更但愿在一个与领域相关的大语料库中训练咱们本身的模型。固然,这不是使用词嵌入模型最好的方式,因此须要从预训练模型开始慢慢进行。经过维基百科,Twitter,Google新闻,网页抓取等数据的训练,这些模型能够很容易地让你将词嵌入模型整合到深度学习算法中去。分布式
今年的研究进展证明了预训练词嵌入模型仍然是NLP领域的一个关键性的问题。例如,来自Facebook AI Research(FAIR)实验室的fastText模型,用294种语言发布预训练好的模型向量,这是一项伟大的工做,对于咱们研究领域来讲更是一重大的贡献。除了大量的语言的使用,因为fastText使用字符n-grams做为语义特征,使得该模型可以获得很大的应用。函数
此外,fastText模型还能避免OOV问题(超出词汇量问题),由于即便是一个很是罕见的词(如特定领域的专业术语)也有可能与一个常见词共享同一个n-gram字符。所以,从这个意义上来讲,fastText模型比word2vec和Glove模型表现得更好,而且对于小数据库有着更优的性能。
然而,尽管咱们能够看到该领域一些进步,可是对这领域的研究还有很长一段路要走。例如,著名的NLP框架spaCy以本地的方式将词嵌入模型和深度学习模型集成并应用到诸如NER和Dependency Parsing等NLP任务中,并容许用户更新模型或使用本身的模型。
我认为这是须要研究的东西。将来,对于这些易于应用到特定领域(诸如生物学,文学,经济学等)的NLP框架来讲,进行预训练获得模型是一种很是好的方式。根据咱们的状况,以最简单的方式对模型进行一系列的微调优化,来提升模型的性能。同时,一些适用于词嵌入模型的方法也开始慢慢出现。
也许使用预训练的词嵌入模型的最大缺点是训练数据与咱们问题中使用的实际数据之间存在词分布差距(word distributional gap)。这么说吧,假设你有生物学论文集,食谱和经济领域的研究文章,因为你可能没有足够大的语料库来训练获得良好性能的词嵌入模型,因此你须要通用嵌入模型来帮助你改善研究结果。可是若是通用嵌入模型能够进行调整并应用于你所须要的特定案例呢?
这个想法是简单而又有效的。想象一下,咱们知道在源域中单词w的词嵌入是w_s。为了计算w_t(目标域)的嵌入,做者向w_s添加了两个域之间的必定量的传输。基本上,若是这个词在这两个领域出现的都很频繁,那就意味着它的语义不具备领域依赖性。
在这种状况下,因为传输量很高,所以在两个域中产生的词嵌入趋势是类似的。可是,对于特定领域的词,会在一个领域出现的更频繁,所须要传输的量是很小的。
关于词嵌入的研究课题至今尚未获得普遍的研究和探索,但我认为在近期会获得更多的关注。
今年,Ranford等人发现训练模型中的单个神经元对于情感价值有着高度的预测性,为进一步预测Amazon评论文本中的下一个字符,他们探索了字节级循环语言模型的特性。结果代表,这个单一的“情感神经元”的确可以至关准确地预测并将评论分类为正负面。
注意到这种行为以后,他们决定在 Stanford Sentiment Treebank数据库上测试模型,并发现模型的准确性高达91.8%,而以前最好的模型准确度为90.2%。这说明,使用不多的样本,以无监督的方式进行训练的模型,至少在一个特定但普遍研究的数据库上获得了最早进的情感分析结果。
工做中的情感神经元
因为模型的表现是基于字符水平的,因此神经元在文本中改变了每一个字符的状态,这是至关惊人的行为。
例如,在一个单词后面,神经元的值变为强的正值,然而这种做用效果将随着词的消失而消失,这看起来也是有道理的。
生成带极偏见性文本
固然,训练好的模型仍然是一个有效的生成模型,因此它能够用来生成相似Amazon评论的文本。可是,我以为很棒的是,你能够经过简单地覆盖情感神经元的价值来选择生成样本的极性。
文本生成示例(来源-https://blog.openai.com/unsupervised-sentiment-neuron/)
Krause等(2016)所选择的NN模型是由Krause等人提出的乘式LSTM模型。这是由于他们观察到,该模型的超参数设置方式能比正常的LSTM模型更快地收敛。它有4096个神经元,并用8200万条Amazon的评论语料库来进行训练。
为何训练有素的模型可以准确地捕捉到情感概念中一些开放而迷人的问题呢。与此同时,你也能够尝试训练本身的模型并进行实验。固然,若是你有充裕的时间和GPU的话,那么用四款NVIDIA Pasca GPUs,对这个特定的模型进行训练,仍须要花费一个月时间才能完成。
不管是人们对企业品牌的评价,分析营销活动的影响,仍是衡量上次竞选期间民众对希拉里·克林顿和唐纳德·特朗普的总体感觉,Twitter的情感分析都是一个很是强大的工具。
SemEval 2017
Twitter上的情感分析已经引发了NLP研究人员的兴趣,同时也获得政治和社会科学界的普遍关注。这就是为何自2013年以来,SemEval比赛都会提出一系列具体的任务。
今年的比赛共有48支参赛队伍参与了竞赛,表现出极大的热情和兴趣。为了让你更好地了解Twitter推出的SemEval比赛到底是什么(http://www.aclweb.org/anthology/S17-2088),让咱们来看看今年提出的五个子任务。
子任务A:给定一个推文,来判断所表达的情绪是积极的、消极的仍是中性的。
子任务B:给定一个推文和一个话题,分两种状况下表达对这个话题的观点:正面与负面。
子任务C:给定一个推文和一个话题,分五种状况来表达对这个话题的观点:强势、弱势、中性、弱确定性和强大的消极。
子任务D:给定一个关于某个话题的推文,评估推文在正性和负性类别中的分布状况。
子任务E:给定一组关于某个话题的推文,评估推文在五中情绪类别中的分布状况:强势、弱势、中性、弱弱及强大。
正如你所看到的,子任务A是最多见的任务,有38个团队参与了这个任务的评估,而其余的任务则更具挑战性。今年有20支团队使用了卷积神经网络(CNN)和长短时间记忆网络(LSTM)模型。此外,尽管SVM模型仍然很是流行,可是一些参赛队伍都将它与神经网络的方法或词嵌入特征相结合。
BB_twtr系统
今年让我比较惊奇的发现是BB_twtr系统(Cliche,2017),它是一个纯粹的深度学习系统,而且在英语的5个子任务中排名第一。 做者将10个CNN结构和10个biLSTM结构集合(ensemble)起来,采用不一样的超参数和预训练策略来进行训练。
为了训练这些模型,做者使用了人工标注的推文(tweets)(给定一个数量级,子任务A有49,693个),而且构建了一个包含1亿条推文的未标记数据集,这个数据集只是经过简单的标记一条推文来获取,好比表示推文内容积极的表情符号是:-),对于内容消极的推文就是相反的表情。这些推文中的小写,标记,URL和表情符号被替换为特定的标记 (, , etc.),而且字符重复的内容将会统一,例如,“niiice”和“niiiiiiiice”变成“niice”。
为了对用做CNN和biLSTM结构输入的单词嵌入信息进行预训练,做者在未标记的数据集上使用了word2vec,GloVe和fastText(所有使用默认设置)词向量。而后他使用距离数据集(distant dataset)来提炼嵌入特征是为了增长做用力信息,而后使用人工标记的数据集再次提取它们的特征。
做者使用之前的SemEval数据集进行实验代表,使用GloVe词向量会下降性能,并且对于全部好的数据集都没有惟一的最佳模型。 而后做者将全部模型与软投票策略结合起来。 由此产生的模型结果比2014年和2016年的历史最好的历史成绩更胜一筹,并且也与其余年份很是接近。最后,它在2017天然语言竞赛 SemEval 数据集5子任务中排名第一。
即使这种组合采起的简单的软投票策略并不能看做是一种有效的方式,可是这项工做代表了将深度学习模型结合起来的可能性,以及一种几乎端到端的方法(输入必须通过预处理 )。而且是在Twitter的情感分析中是能够超越监督方法的。
自动归纳和自动翻译同样,是最先的NLP任务之一。目前有两种主要的方法:基于提取的方法,其归纳是经过从源文本中提取最重要的段而创建的,而基于抽象的方法则是经过生成文原本构建归纳。
从发展历史上看,基于提取的方法是最经常使用的,由于它们比基于抽象的方法简单。在过去的几年里,基于RNN的模型在文本生成方面取得了惊人的成果。它们在简短的输入输出文本上表现得很是好,可是对于长文本每每是不连贯和重复的。
在Paulus等人的工做中,他们提出了一种新的神经网络模型来克服这个局限性。结果使人兴奋,以下图所示
生成归纳的模型说明(https://einstein.ai/research/your-tldr-by-an-ai-a-deep-reinforced-model-for-abstractive-summarization)
做者使用了一个biLSTM编码器来读取输入和一个LSTM解码器来产生输出。他们的主要贡献是一种新的内部注意(intra-attention)策略,这种策略是分别关注输入和连续产生的输出,和一种结合了标准的有监督的词预测和强化学习的新的训练方法。
内部注意策略
提出内部注意策略的目的是为了不输出中的重复。为了达到这个目的,它们在解码时使用时间上的注意力来查看输入文本的已输入片断,而后决定下一个将要产生的字。这迫使模型在生成过程当中使用输入的不一样部分。他们还容许模型访问解码器之前的隐藏状态。而后将这两个函数组合起来,为输出归纳选择最好的下一个单词。
强化学习
为了建立一个归纳,须要两个不一样的人使用不一样的单词和句子顺序,这两个归纳才可能被认为是有效的。所以,一个好的归纳不必定非要是尽量匹配训练数据集中单词序列的序列。
因为知道这一点,做者没有采用标准的教师强迫算法来使每一个解题步骤的损失最小化,而是依靠强化学习策略,而且证实了这是一个很好的选择。
几乎是端到端模型最好的结果
该模型在美国有线电视新闻网和每日邮报数据集上进行了测试,并取得了最早进的成果。此外,一项带有人类评估者的具体实验结果也显示了人类对于生成的文本在可读性和质量方面的提升。
这些结果是使人钦佩的,该模型的基本预处理过程是:输入文本进行分词,小写字母,数字用“0”替换,而后删除数据集中一些特定的实体。
双语词典概括,即用两种语言的源语和单语语料库来识别单词翻译对,这实际上是一个古老的NLP任务。自动生成的双语词典有助于其余的NLP任务,如信息检索和统计机器翻译。 然而,这些方法大部分时间都依赖于某种资源,一般是一个初始的双语词典,可是这个词典并不老是可用或者很容易创建。
随着词嵌入方法的成功,跨语言词嵌入的设想也出现了,目标是对齐嵌入空间而不是词典。 不幸的是,第一种方法也依赖于双语词典或平行的语料库。Conneau等(2018)提出了一个很是超前的方法,它不依赖于任何特定的资源,而且在多个语言对(language pairs)的语言翻译,句子翻译检索和跨语言单词类似性三个任务上优于现有的监督方法。
做者开发的方法是将输入的两组单词嵌入在单语数据上进行独立训练来学习它们之间的映射,使得翻译后的内容在空间上接近。他们使用fastText词向量是在维基百科文档上训练出无监督的词向量。
如下图片诠释了他们的核心想法:
创建两个词在嵌入空间之间的映射(https://arxiv.org/abs/1710.04087)
红色的X分布是英语单词的嵌入,蓝色的Y分布是意大利语单词的分布。
首先,他们使用对抗学习来学习用于第一次原始对齐的旋转矩阵W.。他们根据Goodfellow等人在2014年提出的想法,主要是是训练了一个生成对抗网络(GAN)。要了解GAN是如何工做的,我建议你读这篇由Pablo Soto撰写的文章。
为了在对抗学习方面对问题进行建模,他们将判别器定义为肯定的角色,给定从WX和Y随机采样的一些元素(参见上图中的第二列),每一个元素表明一种语言。而后,他们训练W以防止判别器作出好的预测。
这在我看来很是聪明和优雅的作法,而且直接得出的结果也是至关不错的。
以后,他们再采用了两个步骤来完善整个映射。第一个步骤是为了不映射计算中由罕见字引入的噪声。另外一个步骤是为了使用学习的映射和距离度量来创建实际的翻译。
在某些状况下的结果是很是好的。 例如,对于英语—意大利语之间单词的翻译,在P @ 10的状况下,他们赛过了最佳平均精确度近17%。
英语-意大利语单词翻译的平均精度。
做者声称,他们的方法能够看做是迈向了无监督机器翻译的第一步。咱们能够看一看这个新的有前景的方法到底能走多远。
通用的DL框架和工具备不少种,好比说被普遍应用的Tensorflow,Keras还有PYTorch。不过,具体到开源的NLP方向的DL框架和工具却刚崭露头脚。今年对咱们来讲是很是棒的一年,由于有不少有用的开源框架已经在社区里实现了。这其中有三个框架吸引了个人注意力,我以为各位确定也会很是感兴趣。
Allen NLP:
Allen NLP 框架是创建在PyTorch之上的平台,设计之初的目的是为了在语义NLP的任务中用起来更简单。它的目的是让研究者可以设计和评价新的模型。它包括了通用语义NLP任务中的模型的参考实现,这些任务包括语义角色标签、文本蕴含以及共指消解。
Parl AI:
Parl AI框架是一个针对对话研究的开源软件平台。该平台是用Python来实现的,旨在为分享、训练以及对话模型测试提供一个联合框架。ParlAI提供了一个很是简单的能够与亚马逊的Mechanical Turk合并机制。它也提供了当下很流行的数据集而且支持好几种模型,包括神经模型,例如:记忆网络、seq2seq和LSTMs。
Open NMT:
OpenNMT工具集是一个通用的针对序列到序列的模型的框架。它能够用来执行机器翻译、总结以及图像到文字、语音识别的任务。
DL技术的使用在解决NLP问题中的稳步增加是无可置疑的。最能说明的一个指标就是过去几年中,深度学习论文中使用关键NLP会议中的占比的变化,例如ACL、EMNLP、EACL和NAACL。
深度学习论文的比例
然而,真正的端到端的学习才刚刚开始。咱们正在处理典型的NLP任务来为数据集作准备,例如,清理,标记化或者一些实体的统一(例如:URL,数字、电子邮箱等)。咱们也用通用的嵌入式,缺点就是它们不能抓住特殊领域的关键词的重要性,并且它们在多文字表达中表现的很糟糕,这是我在工做的项目中反复发现的一个关键问题。
对应用于NLP的深度学习来讲,今年是很是不错的一年,但愿2018年能有更多端到端的学习著做,能有更多趋于成熟的开源框架。你能够在评论区和咱们尽情分享你对这些著做和框架的思考和意见,更欢迎你分享本文没有提到的框架和著做。
延伸阅读
更多深度学习在NLP研究中的应用趋势相关信息,强烈推荐这篇论文 “Recent Trends in Deep Learning Based Natural Language Processing” by Young et al. (2017).参考
From Characters to Understanding Natural Language (C2NLU): Robust End-to-End Deep Learning for NLP Phil Blunsom, Kyunghyun Cho, Chris Dyer and Hinrich Schütze (2017)原文地址:https://tryolabs.com/blog/2017/12/12/deep-learning-for-nlp-advancements-and-trends-in-2017/