赞
踩
本文介绍今年NLP发展的核心技术:
第一个神经语言模型是Bengio等人在2001年提出的前馈神经网络
如图:
这个模型将从表C中查找到的n个单词作为输入向量表征(这种向量被现在的学者们称做“词嵌入”)。
这些词嵌入级联后被输入到一个隐藏层中,该隐藏层的输出又被输入到softmax层。
更多关于模型的信息。
语言建模通常是应用RNN时的第一步
一种非监督学习形式。
后来许多技术发展的核心,如:
这意味着近年来 NLP 的许多重要进展都可以归结为某些形式的语言建模。
为了“真正”理解自然语言,仅仅从文本的原始形式中学习是不够的。我们需要新的方法和模型。
多任务学习:在多个任务上训练的模型之间共享参数的一种通用方法。
在神经网络中,可以通过给不同层施以不同的权重,来很容易地实现多任务学习。
直观地说,多任务学习鼓励模型学习对许多任务有用的表述。这对于学习一般的、低级的表述形式、集中模型的注意力或在训练数据有限的环境中特别有用。详情请看这篇文章
在2008年,Collobert 和 Weston 将多任务学习首次应用于 NLP 的神经网络。在他们的模型中,查询表(或单词嵌入矩阵)在两个接受不同任务训练的模型之间共享,如下图所示。
Mikolov等人在2013年通过去除隐藏层,逼近目标,进而使这些单词嵌入的训练更加高效。
虽然这些技术变更本质上很简单,但它们与高效的word2vec配合使用,便能使大规模的词嵌入训练成为可能。
Word2vec有两种风格,CBOW 和 skip-gram,如下图:
CBOW:根据周围的单词预测中心单词
skip-gram:根据中心的单词预测周围单词
虽然这些嵌入在概念上与使用前馈神经网络学习的嵌入在概念上没有区别,但是在一个非常大的语料库上训练之后,它们就能够捕获诸如性别、动词时态和国家-首都关系等单词之间的特定关系,如下图所示。
2013 年和 2014 年是 NLP 问题开始引入神经网络模型的时期。
使用最广泛的三种主要的神经网络是:循环神经网络、卷积神经网络和递归神经网络。
循环神经网络(RNNs)
循环神经网络是处理 NLP 中普遍存在的动态输入序列的一个最佳的技术方案。后被LSTM所取代,它对消失和爆炸梯度问题更有弹性。双向 LSTM通常用于处理左右两边的上下文。
下图对 LSTM 单元进行了可视化显示。
卷积神经网络(CNNs)
卷积神经网络本来是广泛应用于计算机视觉领域的技术,现在也开始应用于语言。
文本的卷积神经网络只在两个维度上工作,其中滤波器(卷积核)只需要沿着时间维度移动。
下图显示了NLP中使用的典型 CNN。
卷积神经网络的一个优点是它们比 RNN 更可并行化,因为其在每个时间步长的状态只依赖于本地上下文(通过卷积运算),而不是像 RNN 那样依赖过去所有的状态。
使用膨胀卷积,可以扩大 CNN 的感受野,使网络有能力捕获更长的上下文。
CNN 和 LSTM 可以组合和叠加,卷积也可以用来加速 LSTM。
递归神经网络 RNN 和 CNN 都将语言视为一个序列。然而,从语言学的角度来看,语言本质上是层次化的:单词被组合成高阶短语和从句,这些短语和从句本身可以根据一组生产规则递归地组合。将句子视为树而不是序列的语言学启发思想产生了递归神经网络,如下图
递归神经网络从下到上构建序列的表示,这一点不同于从左到右或从右到左处理句子的 RNN。
在树的每个节点上,通过组合子节点的结果来计算新的结果。
由于树也可以被视为在 RNN 上强加不同的处理顺序,所以 LSTM 自然地也被扩展到树上。
RNN 和 LSTM 可以扩展到使用层次结构。单词嵌入不仅可以在本地学习,还可以在语法语境中学习;
语言模型可以基于句法堆栈生成单词;
图卷积神经网络可以基于树结构运行。
这是一个使用神经网络将一个序列映射到另一个序列的通用框架。
编码器:编码器神经网络逐符号处理一个句子,并将其压缩为一个向量表示;
解码器:解码器神经网络根据编码器状态逐符号输出预测值,并将之前预测的符号作为每一步的输入
如下图所示
这个框架现在是自然语言生成任务的首选框架,其中不同的模型承担了编码器和解码器的角色。
解码器模型不仅可以解码一个序列,而且可以解码任意表征。例如,可以基于图像生成标题(如下图所示)、基于表生成文本和基于应用程序中源代码更改描述。
sequence-to-sequence 学习甚至可以应用于 NLP 中输出具有特定结构的结构化预测任务。
为了简单起见,输出被线性化,如下图所示,用于进行选区解析。
神经网络已经证明了在有足够数量的训练数据进行选区分析和命名实体识别的情况下,直接学习可以产生这种线性化输出的能力。
注意力机制是神经网络机器翻译(NMT)的核心创新之一,也是使 NMT模型胜过经典的基于短语的MT系统的关键思想。sequence-to-sequence模型的主要瓶颈是需要将源序列的全部内容压缩为一个固定大小的向量。注意力机制通过允许解码器回头查看源序列隐藏状态来缓解这一问题,然后将其加权平均作为额外输入提供给解码器,如下面的图所示
注意力机制有很多不同的形式。
注意力机制广泛适用于任何需要根据输入的特定部分做出决策的任务,并且效果不错。
已被应用于一致性解析、阅读理解和一次性学习等诸多领域。
输入甚至不需要是一个序列,可以包含其他表示,如图像字幕。
注意力机制的一个额外的功能是,它提供了一种少见的功能,我们可以通过检查输入的哪些部分与基于注意力权重的特定输出相关来了解模型的内部工作方式。
注意力机制可以看作是模糊记忆的一种形式。
记忆由模型的隐藏状态组成,模型选择从记忆中检索内容。
研究者们提出了许多具有更明确记忆的模型,这些模型有不同的变体,如:神经图灵机、记忆网络和端到端记忆网络、动态记忆网络、神经微分计算机和循环实体网络。
记忆的访问通常基于与当前状态的相似度,类似于注意力,通常可以写入和读取。
模型在如何实现和利用内存方面有所不同。
例如:
端到端记忆网络多次处理输入,并更新记忆以实现多个推理步骤。
神经图灵机也有一个基于位置的寻址,这允许他们学习简单的计算机程序,如排序。
基于记忆的模型通常应用于一些特定任务中,如语言建模和阅读理解。在这些任务中,长时间保存信息应该很有用。记忆的概念是非常通用的:知识库或表可以充当记忆,而记忆也可以根据整个输入或它的特定部分填充。
预训练的词嵌入与上下文无关,仅用于初始化模型中的第一层。
一系列监督型任务被用于神经网络的预训练,而语言模型只需要无标签的文本;因此,训练可以扩展到数十亿个tokens, new domains, new languages。
语言模型嵌入可以作为目标模型中的特征,或者使用语言模型对目标任务数据进行微调。添加语言模型嵌入可以在许多不同的任务中提供比最先进的技术更大的改进,如下图所示:
基于字符的表示
在字符上使用 CNN 或 LSTM 以获得基于字符的词表示的做法现在相当普遍,特别是对于形态信息重要或有许多未知单词的丰富的语言和任务,效果更加明显。据我所知,序列标签使用基于字符的表示,可以减轻在计算成本增加的情况下必须处理固定词汇表的需要,并支持完全基于字符的 NMT
对抗学习
对抗学习方法已经在 ML 领域掀起了风暴,在 NLP 中也有不同形式的应用。对抗性的例子越来越被广泛使用,它不仅是作为一种工具来探究模型和理解它们的失败案例,而且也使自身更加鲁棒。(虚拟)对抗性训练,即最坏情况扰动和领域对抗性损失,同样可以使模型更加鲁棒。生成对抗网络(GANs)对于自然语言生成还不是很有效,但在匹配分布时很有用。
强化学习
强化学习已被证明对具有时间依赖性的任务有效,例如在训练期间选择数据和建模对话。RL 对于直接优化不可微的末端度量(如 ROUGE 或 BLEU)也有效,反而在汇总中优化替代损失(如交叉熵和机器翻译场景效果就不明显了。类似地,逆向强化学习在过于复杂而无法指定数据的情况下也很有用,比看图说话任务。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。