龙空技术网

深度学习:循环神经网络(RNN)

微说互联网 972

前言:

如今姐妹们对“循环神经网络算法有哪几种”大概比较看重,我们都想要学习一些“循环神经网络算法有哪几种”的相关资讯。那么小编同时在网络上搜集了一些关于“循环神经网络算法有哪几种””的相关内容,希望姐妹们能喜欢,同学们一起来了解一下吧!

前面《深度学习:卷积神经网络(CNN)》介绍的CNN网络结构,层与层之间有连接,但是每层之间的节点无连接。这种结构适合于图像识别,但不适合对序列数据建模。比如预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子前后的单词是有关联的。

RNN(Recurrent Neuron Network)就是一种对序列数据建模的神经网络,即一个序列当前的输出与之前的输出也有关。

RNN结构

RNN基本结构如上图。箭头右侧是左侧网络展开后的示例。如果我们输入RNN模型的是包含10个单词的句子,那么按照上图的展开方式,将会展开为10层的神经网络,每个单词会对应一个层。

相比较于其他深度学习的网络结构在每层都使用不同的参数,一个RNN模型共享每一步的(U,V,W)参数,这样就减少了大量要学习的参数,每一步都相当于用同一套参数拟合不同的输入。

Seq2Seq

针对自然语言处理(NLP)任务,研究者们在2014年提出了基于RNN模型的Seq2Seq结构【1】,解决了非等长序列到序列的问题。Seq2Seq结构包括编码器 (Encoder) 和解码器 (Decoder) 两部分,因此也被称为Encoder-Decoder结构。

Encoder 用于编码序列的信息,将任意长度的序列信息编码到一个向量 c 里。 Decoder 是解码器,解码器得到上下文信息向量 c 之后可以将信息解码,并输出为序列。Encoder-Decoder结构不止一种,下图展示了常用的几种结构,主要区别在于Decoder不同。

Encoder-Decoder结构

RNN Encoder-Decoder 在实际的应用中,主要是解决序列到序列的问题,即"短语/一句话/一段话/一篇文章"到"短语/一句话/一段话/一篇文章"的问题。所以Seq2Seq 可以用于机器翻译、对话系统、自动文摘等。

由于RNN模型是在序列数据上进行训练的,为了能够记忆这种类型的数据,可以理解为类似人对之前的事情产生了记忆。但是由于RNN的设计结构,只对离得近的记忆更多,对较远的序列因素则记忆较差。为了解决这个问题,新的循环神经网络结构被设计出来。

LSTM

从RNN的网络结构上来看,因为输入在权重参数和激活函数的层层作用下,容易在传导过程中发生梯度消失或梯度爆炸的问题,造成之前的记忆指数级被遗忘,从而造成信息很难在很长的结构中进行传递的问题。这种长期依赖问题对于自然语言处理等场景来说是需要处理的问题。

为了解决这个问题,研究人员设计了LSTM(Long Short Term Memory Networks),也称为长期记忆网络。

RNN基本网络结构

LSTM网络结构

LSTM相比较于传统RNN,会多出三个门控制器,输入门(Input Gate)、输出门(Output Gate)和遗忘门(Forget Gate)。三种门控制器的结构相同,由Sigmoid函数(图中α符号)和点积运算(图中×符号)构成。

LSTM通过增加长期记忆单元Ct来保存长期记忆的信息。

长期记忆单元

每一个时刻,遗忘门用于控制上一时刻记忆的遗忘程度。

每一个时刻,输入门用于控制新记忆写入长期记忆的程度。其中tanh函数取值范围为[-1,1]。

长期记忆单元的整体更新是由遗忘门和输入门共同作用产生。

对于短期记忆的更新如图所示,其中表示输出门,它控制着短期记忆如何受长期记忆影响。

LSTM对基础RNN的优化具体体现在通过门控制器增加了对不同时刻的权重的控制,通过跨层权重的连接减少了梯度消失的影响。这与CNN中的跳层连接的思想也很相近。

GRU(Gated Recurrent Unit)

GRU作为LSTM的一种变体,将遗忘门和输入门合成了一个单一的更新门,另外还有一个重置门。重置门决定了如何将新的输入信息与前面的记忆相结合,更新门定义了前面记忆保存到当前时间步的量。

总的来说,标准LSTM和GRU的差别并不大,GRU的构造比LSTM少一个gate,在训练数据很大的情况下GRU能节省很多时间。

RNN变种

研究人员基于基本的RNN又设计出了新的RNN变种,例如双向循环神经网络、注意力(Attention)机制、深度循环网络等。

双向RNN

由于在某些自然语言处理的场景下,时刻t的输出,不仅会依赖于前面的上下文,还可能会依赖于后面的上下文。例如,预测一个句子中缺失的单词,也希望能够参考前面和后面的上下文,综合考虑进行预测。

如图所示,双向RNN有两个隐藏层RNN,输出结果是基于这两层的隐藏层输出综合计算出来的。

深度双向RNN

深度双向RNN与双向RNN非常相近,相当于多层的双向RNN叠加起来,这样就使得模型具有更强的拟合能力,但是需要更长的训练时间和训练数据才能让模型收敛。

注意力机制

注意力机制(Attention Mechanism)可以提升基于RNN中Encoder-Decoder模型的效果。注意力机制由于其较好的效果,广泛应用于机器翻译、语音识别、图像标注等领域。

注意力机制的思想可以参考这篇具有代表性的论文《Recurrent Models of Visual Attention》。人在观察图像时倾向于根据需求将注意力集中到图像的特定部分。而且人类会根据之前观察的图像学习到未来要观察图像时注意力应该集中的位置。可以将这部分经验融入模型中,让模型能够有针对性地学习到对预测有帮助的重要因素。

在自然语言处理中,注意力机制为每个词赋予不同的权重,使神经网络模型的学习变得更加灵活。

【1】Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation.

标签: #循环神经网络算法有哪几种