在过去几年中, 深度学习 (DL)架构和算法在图像识别和语音处理等领域取得了令人印象深刻的进步。 它们在自然语言处理 (NLP)中的应用起初并不令人印象深刻,但现在已被证明会做出重大贡献,为一些常见的NLP任务提供了最先进的结果。 命名实体识别 (NER), 词类(POS)标记或情感分析是神经网络模型超越传统方法的一些问题。 机器翻译的进步也许是最显着的。
在这篇文章中,我将在2017年通过一些取决于DL技术的NLP的进步。 我不假装是详尽的:由于大量的科学论文,框架和工具的存在,根本不可能。 我只是想和大家分享一下我今年最喜欢的一些作品。 我认为2017年是我们领域的一个伟大的一年。 DL在NLP中的使用不断扩大,在某些情况下会产生惊人的结果,所有迹象都表明这一趋势不会停止。
从训练word2vec到使用预训练模型
可以说, 词嵌入是与NL有关的DL最着名的技术。 他们遵循哈里斯(Harris,1954)的分配假说 ,根据这个假说 ,具有相似含义的词通常出现在可比较的语境中。 关于单词嵌入的详细解释,我建议你阅读加布里埃尔·莫尔德基(Gabriel Mordecki)的这篇伟大的文章 。
词的分布向量的例子。
图像源
诸如word2vec (Mikolov等,2013)和GloVe (Pennington等,2014)等算法已经成为该领域的先驱,尽管它们不能被认为是DL(word2vec中的神经网络较浅,GloVe实现了一个计数 -基于模型的方法),用它们训练的模型被用作许多DL中的输入数据,用于NLP方法。 这是如此真实,以至于在我们的领域中使用单词嵌入现在通常被认为是一种好的做法。
一开始,对于一个需要词嵌入的给定的NLP问题,我们倾向于从一个与领域相关的大语料库中训练我们自己的模型。 当然,这不是使文字嵌入民主化的最好方法,所以预先训练好的模型慢慢地开始到来。 受过维基百科,Twitter,Google新闻,网页抓取等训练,这些模型可让您轻松地将文字嵌入整合到您的DL算法中。
今年证实,预训练词嵌入模型仍然是NLP中的一个关键问题。 例如,来自Facebook AI Research(FAIR)实验室的 fastText 以294种语言发布了预先训练 好的媒体 ,这对我们的社区来说是一项伟大的工作和贡献。 除了大量的语言之外,这是非常有用的,因为fastText使用字符n-gram作为特征。 这允许fastText避免OOV(超出词汇量)问题,因为甚至一个非常罕见的词(例如特定领域术语)也可能共享一些具有更常见词的字符n-gram。 从这个意义上来说,fastText比word2vec和GloVe表现得更好,并且对于小数据集来说,表现要好得多。
但是,虽然我们可以看到一些进展,但在这方面还有很多工作要做。 例如,伟大的NLP框架spaCy以本地方式将字词嵌入和DL模型集成到了NER和Dependency Parsing等任务中,允许用户更新模型或使用自己的模型。
我认为这是要走的路。 在将来,对于易于在NLP框架中使用的特定领域(例如生物学,文学,经济等)预先训练好的模型将是非常好的。 为了我们的使用情况,可能的最简单的方式就是对它们进行细化的能力。 同时,开始出现适应词嵌入的方法。
调整通用嵌入到特定用例
也许使用预先训练的单词嵌入的主要缺点是训练数据与我们问题的实际数据之间存在单词分布差距。 假设您有经济学上的生物学论文,食谱或研究论文。 因为你可能没有足够大的语料库来训练良好的嵌入,所以通用嵌入语言很可能会帮助你提高结果。 但是如果可以将通用嵌入调整为适合您的特定用例呢?
这种适应性通常被称为NLP中的跨域或域适应技术,并且非常接近于转移学习 。 Yang等人提出了一个非常有趣的工作。 今年。 他们提出了一个正则化的skip-gram模型,用于学习目标域的嵌入,给定源域的嵌入。
关键的想法是简单而有效的。 想象一下,我们知道在源域中w这个单词嵌入w_s ws。 为了计算w_t wt(目标域)的嵌入,作者向w_s ws添加了两个域之间的一定数量的传输。 基本上,如果这个词在这两个领域都很频繁,那意味着它的语义不是依赖于领域的。 在这种情况下,传输量很高,因此在两个域中产生的嵌入倾向于相似。 但是由于特定领域的词在一个领域比另一个领域更频繁,所以转移的数量很小。
这是一个关于单词嵌入的研究课题还没有被广泛的探索,我认为它将在近期得到更多的关注。
情感分析是一个令人难以置信的副产品
青霉素,X光或甚至是后来的意外发现。 今年, Radford等人。 正在探索字节级循环语言模型的特性,目的是预测亚马逊评论文本中的下一个字符,当时他们发现训练模型中的单个神经元对情感价值有很高的预测能力。 是的,这个单一的“情感神经元”能够以相当准确的方式将评论分类为正面或负面。
检讨神经元的极性与价值。
图像源
注意到这种行为之后,作者决定在斯坦福情绪树库 ( Stanford Sentiment Treebank)上测试这个模型,发现它的准确性是91.8%,而之前的最好的是90.2%。 这意味着,使用少得多的例子,他们的模型以无监督的方式进行训练 ,至少在一个特定的但广泛研究的数据集上实现了最先进的情感分析。
情绪神经元在工作
由于模型在角色层次上工作,所以神经元在文本中改变了每个角色的状态,看到它的行为是相当惊人的。
情绪神经元的行为。
图像源
例如, 最好的单词之后,神经元的值变为强正值。 然而,这种效果随着可怕的词语的消失而消失,这是有道理的。
生成极性偏见的文本
当然,训练好的模型仍然是一个有效的生成模型,所以它可以用来生成类似亚马逊评论的文本。 但是,我觉得很棒的是,你可以通过简单地覆盖情感神经元的价值来选择生成的文本的极性。
情绪固定为正值情绪固定为负面
最好的吊床! 保持原状并保持其形状。 舒服(我喜欢它上面的深霓虹的图片),看起来很可爱。他们也不合适。 直到最高的棍棒。 与我有其他芽一样。 学会了避免的教训。
就是我在找什么。 漂亮的裤子,完全匹配缝与我自己的其他裤子的颜色对比。 强烈推荐,也很高兴!收到的包裹是空白的,没有条形码。 浪费时间和金钱。 作者选择的NN模型是由Krause等人提出的乘法LSTM 。 (2016),主要是因为他们观察到,它们正在探索的超参数设置比正常的LSTM更快地收敛。 它有4,096个单位,并受到8200万亚马逊评论的语料库的训练。
为什么训练有素的模式能够以一种精确的方式捕捉到情感概念仍然是一个开放而迷人的问题。 同时,你可以尝试训练你自己的模型并进行实验。 当然,如果您有时间和GPU,那么在这四款NVIDIA Pascal图形处理器(GPU)上,对这个特定模型的培训需要花费一个月时间才能完成。
Twitter中的情感分析
无论是人们对企业品牌的评价,分析营销活动的影响,还是衡量上次竞选期间对希拉里·克林顿(Hillary Clinton)和唐纳德·特朗普(Donald Trump)的全球感受,Twitter中的情感分析都是一个非常强大的工具。
唐纳德·特朗普vs希拉里·克林顿:Twitter上的情绪分析。
图像源
SemEval 2017
Twitter中的情感分析已经引起了NLP研究人员的大量关注,同时也引起了政治和社会科学界的关注。 这就是为什么自2013年以来, SemEval提出了一个具体的任务。
今年共有48支参赛队参加了评选,表现了多大的兴趣。 为了让你了解在Twitter推出的SemEval究竟是什么 ,让我们来看看今年提出的五个子任务。
子任务A :给予推特,决定是否表达正面,负面或中性的情绪。
子任务B :给出一个推特和一个话题,分两种情况下传达给这个话题的观点:正面与负面。
子任务C :给出一个推特和一个话题,将推特中传达的情绪分为5个等级:强势,弱势,中性,弱势和强势。
子任务D :给出一组关于某个主题的推文,估计推文在正和负类别中的分布。
子任务E :给出一组关于某个主题的推文,估计推特在五个类别中的分布情况:强势,弱势,中性,弱势和强大。
正如你所看到的,子任务A是最常见的任务,有38个团队参与了这个任务,但是其他的则更具挑战性。 组织者指出,DL方法的使用脱颖而出并且持续增长,今年有20个团队使用了卷积神经网络 (CNN)和长期短期记忆 (LSTM)等模型。 此外,尽管SVM模型仍然非常流行,但是一些参与者将它们与神经网络方法或者使用了词嵌入特征相结合。
BB_twtr系统
今年我发现,一个纯粹的DL系统BB_twtr 系统 (Cliche,2017)在英语的5 个子任务中排名第一。 作者将10个CNN和10个biLSTM的集合结合起来,训练出不同的超参数和不同的预训练策略。 您可以在论文中看到网络体系结构的细节。
为了训练这些模型,作者使用了人类标记的推文(给出了一个数量级,子任务A有49,693个),并且构建了一个包含1亿个推文的未标记数据集,通过简单的标记来提取一个遥远的数据集推特表示积极的积极表情符号,如:-),反之亦然消极鸣叫。 推特是小写,标记,网址和表情符号被替换为特定的令牌 , 等等)并且字符重复是统一的,因此,例如,“niiice”和“niiiiiiiice”变成“niice”。
为了对用作CNN和biLSTM的输入的单词嵌入进行预训练,作者使用word2vec,GloVe和fastText(全部使用默认设置)在未标记的数据集上。 然后他使用遥远的数据集来提炼嵌入以添加极性信息,然后使用人类标记的数据集再次提炼它们。
使用以前的SemEval数据集的实验表明,使用GloVe会降低性能,并且对于所有的金标准数据集没有一个唯一的最佳模型。 然后作者将所有模型与软投票策略结合起来。 由此产生的模型比2014年和2016年的历史最好的历史成绩更胜一筹,其他年份也非常接近。 最后,它在英语的2017年5个半月度子任务中排名第一。
即使这种组合不是以一种有机的方式进行,而是以一种简单的软投票策略进行的,这项工作表明了将DL模型结合起来的潜力,以及几乎端到端的方法(输入必须经过预处理)在Twitter中的情感分析中可以超越监督的方法。
一个令人兴奋的抽象概括系统
自动汇总是自动翻译 ,是最早的NLP任务之一。 有两种主要的方法: 基于抽取的 ,摘要是通过从源文本中提取最重要的段而建立的 ,而基于抽象的是通过生成文本来构建摘要。 历史上,基于抽取的方法是最常用的,因为它们比基于抽象的方法简单。
在过去的几年里,基于RNN的模型在文本生成方面取得了惊人的成果。 它们对于简短的输入和输出文本表现得非常好,但对于长文本往往是不连贯和重复的。 在他们的工作中, Paulus等人 提出了一种新的神经网络模型来克服这个局限性。 结果令人兴奋,如下图所示。
作者使用biLSTM编码器读取输入,并使用LSTM解码器生成输出。 他们的主要贡献是分别关注输入和连续产生的输出的一种新的内部注意策略,以及结合标准监督词语预测和强化学习的新的训练方法。
关注内部策略
提出的内部注意策略的目标是避免输出中的重复。 为了达到这个目的,它们在解码时使用时间上的注意力来查看输入文本的前一段,然后决定下一个将要生成的字。 这迫使模型在生成过程中使用输入的不同部分。 它们还允许模型从解码器访问以前的隐藏状态。 然后将这两个函数组合起来,为输出摘要选择最好的下一个单词。
强化学习
要创建一个总结,两个不同的人将使用不同的单词和句子的命令,这两个摘要可能被认为是有效的。 因此,一个好的总结不一定是尽可能与训练数据集中的序列相匹配的单词序列。 知道这一点,作者避免了标准的教师强迫算法,它将每个解码步骤(即对于每个生成的单词)的损失最小化,并且他们依赖强化学习策略,这被证明是一个很好的选择。
几乎是端到端的模型的好结果
该模型在CNN /每日邮报数据集上进行了测试,并取得了最新的成果。 与人类评估者的具体实验表明,此外,人的可读性和质量的提高。 这些结果令人印象深刻,给予了这样的基本预处理:输入文本被标记,小写,数字被替换为“0”,并且数据集的一些特定实体被去除。
完全无监督机器翻译的第一步?
双语词典的归纳,即用两种语言的源语和单语语料库来识别单词翻译对,是一个古老的NLP任务。 自动生成的双语词典有助于其他NLP任务,如信息检索和统计机器翻译 。 然而,这些方法大部分时间都依赖于某种资源,通常是一个初始的双语词典,这个词典并不总是可用或者很容易建立。
随着词嵌入的成功,出现了跨语言词嵌入的想法,目标是对齐嵌入空间而不是词典。 不幸的是,第一种方法也依赖于双语词典或平行语料库。 在他们的工作中, Conneau et al。 (2018)提出了一个非常有前途的方法,不依赖于任何特定的资源,并且对于多个语言对的语言翻译,句子翻译检索和跨语言单词相似性的任务优于现有技术的监督方法。
作者开发的方法是将输入的两组单词嵌入在单语数据上独立训练,并学习它们之间的映射,使得翻译在公共空间中接近。 他们使用fastText在维基百科文档上训练无监督的单词向量。 以下图片说明了关键的想法。
建立两个词嵌入空间之间的映射。
图像源
红色的X分布是英语单词的嵌入,蓝色的Y分布是意大利语单词的分布。
首先,他们使用敌对学习来学习要执行第一次原始对齐的旋转矩阵W. 他们根据Goodfellow等人提出的主张,基本上培养了一个生成对抗网络 (GAN) 。 (2014)。 要了解GAN是如何工作的,我建议你这篇由Pablo Soto撰写的优秀文章 。
为了在对抗性学习方面对问题进行建模,他们将鉴别器定义为具有确定的角色,给定从WX和Y随机采样的一些元素(参见上图中的第二列),每个元素属于哪种语言。 然后,他们训练W以防止鉴别者做出好的预测。 这在我看来非常聪明和优雅,直接的结果是相当不错的。
之后,他们再应用两个步骤来完善映射。 一是为了避免映射计算中罕见字引入的噪声。 另一个是建立实际的翻译,主要是使用学习的映射和距离度量。
在某些情况下的结果是令人印象深刻的关于最先进的。 例如,对于英语 - 意大利语单词的翻译,在P @ 10的情况下,它们胜过1.500个单词的最佳平均精确度近17%。
英语 - 意大利语词汇平均精度。
图像源
作者声称,他们的方法可以用作无监督机器翻译的第一步。 如果是这样,那将是非常好的。 同时,让我们看看这个新的有前途的方法能走多远。
专门的框架和工具
有很多通用的DL框架和工具,其中一些被广泛使用,比如TensorFlow , Keras或者PyTorch 。 然而,面向特定开源NLP的DL框架和工具刚刚兴起。 今年对我们来说是好年,因为一些非常有用的开源框架已经提供给社区。 其中三个特别引起了我的注意,你可能会觉得有趣。
AllenNLP
AllenNLP框架是构建在PyTorch之上的一个平台,用于在语义NLP任务中轻松使用DL方法。 其目标是让研究人员设计和评估新模型。 它包含了常用语义NLP任务模型的参考实现,如语义角色标注,文本引用和共因解决。
ParlAI
ParlAI框架是对话研究的开源软件平台。 它是用Python实现的,其目标是为对话模型的共享,培训和测试提供一个统一的框架。 ParlAI提供了一个与Amazon Mechanical Turk轻松集成的机制。 它还提供了该领域流行的数据集,并支持多种模型,包括内存网络,seq2seq和细心的LSTM等神经模型。
OpenNMT
OpenNMT工具箱是专门用于序列到序列模型的通用框架。 它可以特别用于执行诸如机器翻译,摘要,图像到文本和语音识别之类的任务。
最后的想法
用于NLP问题的DL技术的不断增量是不可否认的。 一个很好的指标是过去几年在ACL , EMNLP , EACL和NAACL等关键NLP会议上的深度学习论文比例的变化。
然而,真正端到端的学习才刚刚开始出现。 我们仍然在处理一些经典的NLP任务来准备数据集,比如清理,标记或统一一些实体(例如URL,数字,电子邮件地址等)。 我们也使用通用嵌入,其缺点是不能捕捉到特定领域术语的重要性,而且它们对于多词表达式表现不佳,这是我在我工作的项目中反复发现的一个关键问题。
这对于DL应用于NLP来说是一个伟大的一年。 我希望2018年带来更多的端到端的学习工作,并且具体的开源框架得到更多的发展。 请在评论部分随意与我们分享您对这些作品和框架的看法,以及那些您今年喜欢的内容,这里我不提这些。
哦...如果你喜欢这个帖子,你应该订阅我的头条号,谢谢鼓励支持我继续出文。