递归神经网络(RNN)
RNN是专门用于处理顺序信息的神经网络的方法。RNN将计算应用于以先前计算结果为条件的输入序列。这些序列通常由固定大小的标记向量表示,他们被顺序送至循环单元。下图说明了一个简单的RNN框架。
RNN的主要优势在于能够记忆先前的计算结果并在当前计算中使用该信息。这使得RNN模型适合于在任意长度的输入中都具有上下文依赖性,这样可以为输入创建适当的组合。RNN已被用于研究各种NLP任务,例如机器翻译、图像字幕和语言建模等。
与CNN模型相比,RNN模型在特定的自然语言任务中可以同样有效甚至更好。因为它们模拟了数据不同的方面,这才会使它们有效,具体的效果取决于任务所需的语义。
RNN期望的输入通常是单热(one-hot)编码或词嵌入,但在某些情况下,它们与由CNN模型构造的抽象表征耦合。简单的RNN容易遭受消失的梯度问题,这使得网络难以学习和调整较早层中的参数。其他变体正在出现已解决这个问题,例如长短期记忆(LSTM)网络,残留网络(ResNets)和门控循环网络(GRU)后来被引入以克服这一限制。
RNN变体
LSTM由三个门(输入,遗忘和输出门)组成,并通过三者的组合计算隐藏状态。GRU类似于LSTM,但只包含两个门,效率更高,因为它们不那么复杂。一项研究表明,很难说RNN哪些门控更有效,通常只是根据可用的计算能力来挑选它们。研究及实验表明各种基于LSTM的模型用于序列到序列映射(通过编码器-解码器框架),其适用于机器翻译,文本摘要,人工对话建模,问题回答,基于图像的语言生成以及其他任务。
总的来说,RNN可以用于许多NLP系统,例如:
- 字级分类(NER);
- 语言建模;
- 句子级别分类(例如,情感极性);
- 语义匹配(例如,将消息与对话系统中的候选响应相匹配);
- 自然语言生成(例如,机器翻译,视觉QA和图像字幕);
注意力机制
本质上,注意力机制是一种技术,其受益于允许上述基于RNN框架的解码器使用最后隐藏状态以及基于输入隐藏状态序列计算的信息(即上下文矢量)的需要。这对于需要在输入和输出文本之间进行某些对齐的任务特别有用。
注意力机制已成功用于机器翻译,文本摘要,图像字幕,对话生成和基于内容(aspect-based)的情感分析。并且已经有人提出了各种不同形式和类型的注意力机制,它们仍然是NLP研究人员研究各种应用的重要领域。
递归神经网络(Recursive Neural Network)
与RNN类似,递归神经网络是对连续数据建模非常适用。这是因为语言可以被视为递归结构,其中单词和短语构成层次结构中其他更高级别的短语。在这种结构中,非终端节点由其所有子节点的表示来表示。下图说明了下面的一个简单的递归神经网络。
在基本递归神经网络形式中,组合函数(即网络)以自下而上的方法组合成分来计算更高级别短语的表示(参见上图)。在变体MV-RNN中,单词由矩阵和向量表示,这意味着由网络学习的参数表示每个成分的矩阵。另一种变型,即递归神经张量网络(RNTN),使得输入矢量之间的更多交互能够避免大的参数产生,如MV-RNN的情况。递归神经网络更能显示出灵活性,并且它们可以与LSTM单元耦合以处理诸如梯度消失之类的问题。
递归神经网络用于各种应用,例如:
- 解析;
- 利用短语级表示来进行情绪分析;
- 语义关系分类(例如,主题消息);
- 句子相关性;
强化学习
强化学习是通过机器学习的方法,训练代理执行离散动作,然后奖励。正在通过强化学习来研究几种自然语言生成(NLG)任务,例如文本摘要。
强化学习在NLP上的应用受到一些问题的阻力。当使用基于RNN的发生器时,标准答案会被模型生成的答案所取代,这会迅速提升错误率。此外,对于这样的模型,词级训练的目标不同于测试度量的目标,例如用于机器翻译和对话系统的n-gram重叠测量,BLEU。由于这种差异,当前的NLG类型系统往往会产生不连贯,重复和枯燥的信息。
为了解决上述问题,业内采用称为REINFORCE的强化算法来解决NLP任务,例如图像字幕和机器翻译。这个强化学习框架由一个代理(基于RNN的生成模型)组成,它与外部环境相互作用(在每个时间步骤看到的输入词和上下文向量)。代理根据策略(参数)选择一个动作,该策略会在每个时间步骤预测序列的下一个单词。然后代理会更新其内部状态(RNN的隐藏单元)。这一直持续到达最终计算奖励序列的结尾。奖励功能因任务而异,例如,在句子生成任务中,奖励可以是信息流。
尽管强化学习方法显示出了希望,但它们需要适当地处理动作和状态空间,这可能限制模型的表达能力和学习能力。记住,独立的基于RNN的模型力求表现力和表达语言的自然能力。
对抗训练也被用来训练语言生成器,其目的是欺骗训练有素的鉴别器,以区分生成的序列和真实的序列。如果一个对话系统,通过policy gradient(策略网络),可以在强化学习范例下构建任务,其中鉴别器就像人类图灵测试员一样,鉴别器基本上是受过训练以区分人类和机器生成的对话。
无监督学习
无监督的句子表征学习涉及以无监督的方式将句子映射到固定大小的向量。分布式表征从语言中捕获语义和句法属性,并使用辅助任务进行训练。
研究员与用于学习词嵌入的算法类似,提出了跳过思维模型,其中任务是基于中心句子预测下一个相邻句子。使用seq2seq框架训练该模型,其中解码器生成目标序列,并且编码器被视为通用特征提取器-甚至在该过程中学习了字嵌入。该模型基本上学习输入句子的分布式表征,类似于在先前语言建模技术中如何为每个单词学习词嵌入。
深度生成模型
诸如变分自动控制器(VAE)和生成对抗网络(GAN)之类的深度生成模型也可以应用于NLP中,通过从潜在代码空间生成逼真句子的过程来发现自然语言中的丰富结构。
众所周知,由于无约束的潜在空间,标准的自动编码器无法生成逼真的句子。VAE在隐藏的潜在空间上施加先验分布,使模型能够生成适当的样本。VAE由编码器和发生器网络组成,编码器和发生器网络将输入编码到潜在空间中,然后从潜在空间生成样本。训练目标是在生成模型下最大化观测数据的对数似然的变分下界。下图说明了用于句子生成的基于RNN的VAE。
生成模型对于许多NLP任务是有用的,并且它们本质上是灵活的。例如,与标准自动编码器相比,基于RNN的VAE生成模型被提出用于产生更多样化且格式良好的句子。其他模型允许将结构化变量(例如,时态和情感)结合到潜在代码中以生成合理的句子。
由两个竞争网络组成的GAN(生成器和鉴别器)也被用于生成逼真的文本。例如,将LSTM用作生成器,CNN用作区分真实数据和生成样本的鉴别器。在这种情况下,CNN表示二进制句子分类器。该模型能够在对抗训练后生成逼真的文本。
除了鉴别器的梯度不能通过离散变量适当地反向传播的问题之外,深层生成模型同时也是难以评估的。近年来已经提出了许多解决方案,但这些解决方案尚未标准化。
内存增强网络(Memory-Augmented Network)
在输出结果生成阶段由注意力机制访问的隐藏向量表示模型的“内部存储器”。神经网络还可以与某种形式的内存耦合,以解决视觉QA,语言建模,POS标记和情感分析等任务。例如,为了解决QA任务,将支持事实或常识知识作为存储器的形式提供给模型。动态存储器网络是对先前基于存储器的模型的改进,其采用神经网络模型用于输入表征、注意力机制和应答机制。
结论
到目前为止,我们现在已经知道了基于神经网络的模型(如CNN和RNN)的容量和有效性。我们也意识到将强化学习、无监督方法和深度生成模型正在被应用于复杂的NLP任务(如可视化QA和机器翻译)。注意力机制和记忆增强网络在扩展基于神经的NLP模型的能力方面是强大的。结合这些强大的技术,我们相信会找到令人信服的方法来处理语言的复杂性。
原文链接
本文为云栖社区原创内容,未经允许不得转载。