在最近发表的论文中,Young及其同事汇总了基于深度学习的自然语言处理(NLP)系统和应用程序的一些最新趋势。本文的重点介绍是对各种NLP任务(如视觉问答(QA)和机器翻译)最新技术(SOTA)结果的回顾和比较。在这篇全面的综述中,你可以详细了解NLP深度学习的过去,现在和未来。此外,你还将学习一些 在NLP中应用深度学习的最佳实践。其中主题包括:
1、分布式表示的兴起(例如,word2vec);
2、卷积,循环和递归神经网络;
3、在强化学习中的NLP的应用;
4、无监督模型在表示学习中的最新进展;
5、将深度学习模型与增强记忆策略相结合;
什么是NLP?
自然语言处理(NLP)涉及构建计算机算法以自动分析和表示人类语言。基于NLP的系统现在已经实现了广泛的应用,例如Google强大的搜索引擎,以及最近阿里巴巴的语音助手天猫精灵。NLP还可用于教授机器执行复杂的自然语言相关任务的能力,例如机器翻译和对话生成。
长期以来,用于研究NLP问题的大多数方法都采用浅机器学习模型和耗时的手工制作特征。由于大多数的语言信息用稀疏表示(高维特征)表示,这导致诸如维数灾难之类的问题。然而,随着最近词嵌入(低维,分布式表征)的普及和成功,与传统的机器学习模型(如SVM或逻辑回归)相比,基于神经的模型在各种语言相关任务上取得了优异的成果。
分布式表征
如前所述,手工制作的特征主要用于模拟自然语言任务,直到神经网络的方法出现并解决了传统机器学习模型所面临的一些问题,如维数的灾难。
词嵌入: 分布向量,也称为词嵌入,基于所谓的分布假设-出现在类似语境中的单词具有相似的含义。Word嵌入是在任务上预先训练的,其目标是基于其上下文预测单词,通常使用浅层神经网络。下图说明了Bengio及其同事提出的神经语言模型 。
词向量倾向于嵌入语法和语义信息,并在各种NLP任务中负责SOTA,例如情感分析和句子组成。
分布式表征在过去被大量用于研究各种NLP任务,但是当连续的词袋(CBOW)和skip-gram模型被引入该领域时,它才开始流行起来。它们很受欢迎,因为它们可以有效地构建高质量的词嵌入,并且它们可以用于语义组合(例如,'man'+'royal'='king')。
Word2vec:2013年左右,Mikolav等人提出了CBOW和skip-gram模型。CBOW是构造词嵌入的神经网络方法,其目的是在给定上下文单词的情况下计算目标单词的条件概率。另一方面,Skip-gram是构建词嵌入的神经网络方法,其目标是在给定中心目标单词的情况下预测周围的上下文单词(即条件概率)。对于两种模型,通过计算(以无监督的方式)预测的准确性来确定单词嵌入维度。
使用词嵌入方法的挑战之一是当我们想要获得诸如“hot potato”或“Boston Globe”之类的短语的矢量表示时。我们不能简单地组合单个单词矢量表示,因为这些短语不代表单个单词的含义的组合。当考虑更长的短语和句子时,它会变得更加复杂。
word2vec模型的另一个限制是使用较小的窗口大小(window sizes)产生类似的嵌入,用于对比诸如“好”和“坏”之类的单词,这对于这种区分很重要的任务(例如情感分析)是不可取的。词嵌入的另一个限制是它们依赖于使用它们的应用程序,即为每个新任务重新训练任务特定的嵌入是一个探索的选项,但这通常是计算上昂贵的,并且可以使用负抽样更有效地解决。Word2vec模型还存在其他问题,例如没有考虑多义因素和其他可能从训练数据中浮现的偏见。
字符嵌入:对于诸如词性(POS)标记和命名实体识别(NER)之类的任务,查看单词中的形态信息(例如字符或其组合)是有用的。这对于形式丰富的语言也很有用,例如葡萄牙语,西班牙语和中文。由于我们在字符级别分析文本,因此这些类型的嵌入有助于处理未知单词问题,因为我们不再表示需要为了高效计算目的而需要减少的大词汇表。
最后,重要的是要理解即使字符级和字级嵌入都已成功应用于各种NLP任务,但长期影响仍受到质疑。例如,Lucy和Gauthier最近发现,词向量受限于它们如何很好地捕捉单词背后的概念意义的不同方面。换句话说,他们声称只有分布式语义不能用于理解单词背后的概念。最近,在自然语言处理系统的背景下,对意义表征进行了重要的辩论。
卷积神经网络(CNN)
CNN基本上是基于神经网络的方法,其应用于构成单词或n-gram以提取更高级特征的特征函数。由此产生的抽象特征已被有效地用于情感分析,机器翻译和问答(QA)系统,以及其他任务。Collobert和Weston是首批将基于CNN的框架应用于NLP任务的研究人员之一。他们的方法的目标是通过查找表将词转换为矢量表示,这使得一种原始的词嵌入方法,可以在神经网络训练期间学习权重(见下图)。
为了利用基本的CNN进行句子建模,首先要先将句子标记为单词,进一步将其转换为d 维的词嵌入矩阵(即输入嵌入层)。然后,在该输入嵌入层上应用卷积滤波器,其包括应用所有可能窗口大小(window size)的滤波器以产生所谓的特征映射。然后进行最大池操作,对每个过滤器应用最大操作以获得固定长度输出并减小输出的维数,并且该过程产生最终句子表征。
通过增加上述基本的CNN的复杂性并使其适应于执行基于词的预测,可以研究诸如NER,物体检测和POS(词性标记)的其他NLP任务。这需要基于窗口(window)的方法,其中对于每个单词,考虑相邻单词(句子)的固定大小窗口。然后将独立的CNN应用于句子中,并且训练目标是预测窗口中心的单词,也称为单词级分类。
CNNs的一个缺点是无法建模-长距离依赖关系,这对于各种NLP任务很重要。为了解决这个问题,CNN已经与时间延迟神经网络(TDNN)耦合,后者在训练期间可以立即实现更大的上下文范围。在不同的NLP任务中表现成功的其他有用类型的CNN,例如情绪预测和问题类型分类,被称为动态卷积神经网络(DCNN)。DCNN使用动态k-max池策略,其中过滤器可以在执行句子建模时动态地跨越可变范围。
CNN还用于更复杂的任务,对于不同长度的文本,例如物体检测,情感分析,短文本分类和讽刺检测。然而,其中一些研究报告说,在将基于CNN的方法应用于Twitter文本等微观文本时,外部知识是必要的。证明CNN有用的其他任务是查询-文档匹配,语音识别,机器翻译和问答等。另一方面,DCNN被用于分层学习捕获并将低级词汇特征组合成用于文本的自动概括的高级语义概念。
总体而言,CNN是有效的,因为它们可以在上下文窗口中挖掘语义线索,但是它们难以保持连续顺序和模拟远距离的上下文信息。RNN更适合这种类型的学习,接下来将对它们进行讨论。
原文链接
本文为云栖社区原创内容,未经允许不得转载。