回复式神经网络及其应用研究综述
2020-10-20刘丹,叶茂
刘 丹,叶 茂
(电子科技大学 计算机科学与工程学院,成都 611731)
1 引 言
自20世纪80年代以来,人工神经网络(Artificial Neural Network,ANN)已经成为人工智能领域的研究热点.ANN是一种旨在模拟大脑神经系统对外界复杂信息的处理机制的数学模型,其在模式识别、智能机器人、自动控制等领域表现出了良好的智能特性.传统的全连接神经网络(Full Connected Neural Network,FCNN),也称前馈神经网络(Feed-forward Neural Network,FNN),如图1(左)所示.它采用单向多层结构,同一层的神经元之间没有相互连接,是彼此独立的.换句话说,对于FNN,一个输入对应一个输出,不同的输入之间是没有联系的.感知机在1957年首次被提出,作为最早的ANN,感知机是一种最简单的网络模型.作为深度FNN的经典网络——卷积神经网络(Convolutional Neural Network,CNN)[1]依靠其局部连接和共享权值的设计理念,在图像识别、自然语言处理等领域被广泛应用,尤其在手写数字识别任务中取得了良好的识别效果[2,3].但是,FNN无法处理在时间或空间上有前后关联的信息输入问题.所以,传统神经网络的应用受到了限制.
图1 (左)前馈神经网络和(右)回复式神经网络Fig.1 (left)FNN and(right)RNN
针对需要处理序列信息的学习任务,如文本翻译、智能对话、股票行情预测等,它们的输入是有时间顺序的序列数据,回复式神经网络(Recurrent Neural Network,RNN)作为一类用于处理和预测序列数据的神经网络模型应运而生.RNN在文本生成、机器翻译、语音识别、视频标记等任务中被广泛地应用研究,并且已经取得丰硕的研究成果[4-6].作为神经网络的一个重要模型,RNN克服了传统机器学习方法对输入输出数据的许多限制,无论从理论上还是应用层面上,深入分析研究回复式神经网络(RNN)具有重要的现实意义.图2是ANN的体系结构图,它包括前馈神经网络和反馈神经网络两大类型.
图2 人工神经网络分类Fig.2 Classification of the ANN
本文将首先阐述RNN的基本原理、计算过程和训练方法,然后针对传统RNN在实际应用中存在的缺陷,介绍几种流行的优化结构,包括模型结构特点、组件功能;接着描述RNN的常用应用领域、相关工作以及对RNN的未来研究发展方向展开探讨;最后总结全文内容.
2 RNN
1982年,美国加州理工学院物理学家Hopfield提出Hopfield网络模型用以解决组合优化问题,该网络拥有很强的计算能力并且具有联想记忆功能,这是最早的RNN的雏形.之后Jordan和Elman对其进行改进和简化,便有了最初的仅包含单个自连接节点的RNN模型.但是,由于梯度消失和梯度爆炸问题,训练RNN非常困难,致使RNN的应用受到限制.直到1997年,Hochreiter和Schmidhuber[7]提出长短时记忆(Long Short-Term Memory,LSTM)网络,该网络使用门控单元以及记忆状态大大缓解了早期RNN训练问题.LSTM模型的提出改进了RNN结构,拓宽了RNN的应用范围,为后续序列建模的发展奠定了基础.
与传统神经网络相比,RNN相当于加入了人的先验知识,即将数据信息按照时间顺序输入到对应模型.RNN最大的特点就是隐藏层神经元的状态不仅依赖于当前时刻的输入,也与当前系统前一时刻的隐藏状态相关,如图1(右)所示,RNN在隐藏层单元间添加了横向连接,这种结构使得神经元历史信息能够传递到当前神经元中,适合处理时间序列数据,因此RNN可以保持数据之间的依赖关系.
RNN的前向传播计算公式如公式(1)、公式(2)所示,其中x表示输入层,h表示隐藏层,y表示输出层,W和b分别表示权重参数和偏移项,σ为激活函数,t表示时间索引.
ht=σ(Wh[xt,ht-1]+bh)
(1)
yt=σ(Wyht+by)
(2)
由于RNN的循环连接方式,将公式(1)反复带入公式(2)中,可以看到RNN可以向前查看任意时刻的输入,因此,RNN具有记忆功能,尤其适用于注重信息时序性的任务.
(3)
对于RNN,因为要处理时序数据,所以它采用基于时间的反向传播(Back-Propagation Through Time,BPTT)算法.BPTT算法的基本原理和BP算法相同[8].RNN每一时刻t都会产生一个损失值losst,因此网络的总损失可以表示为L=∑tlosst.在RNN训练过程中,梯度一方面会按照空间结构传播(输出层,隐藏层,输入层),即yt→ht→xt,这种情况与BP算法一致;另一方面,梯度要沿着时间通道传播,即ht→ht-1→…→h1,此时,基于公式(1)循环迭代地计算各层梯度,这也是BPTT算法名称的由来.表1总结了BP算法和BPTT算法的特点和训练过程.
表1 BP算法和BPTT算法比较Table 1 Comparison of BP and BPTT algorithms
3 RNN的优化结构
RNN受限于短期记忆问题,根据其隐藏层单元状态的计算方式,越晚的时间步输入对后续影响越大,越早的输入对后续影响越小.如果一个输入序列足够长,RNN可能会遗漏该序列的前期重要信息,这就是RNN存在的短期记忆问题.另外,在使用BPTT算法训练RNN时,梯度会在反向传播的过程中快速消失,也就是所谓的梯度消失问题.当前已经存在大量的研究工作用于解决RNN存在的这些问题[7,10-12],其中最具代表性的优化结构算法是LSTM网络和GRU网络,它们都使用跳跃连接(SC)的技巧让梯度跨过一些时间步,从而只保留重要的信息.
3.1 LSTM
RNN隐藏层只有一个状态h,不能处理长期依赖问题,LSTM网络通过在隐藏层添加一个细胞状态c来保存长期依赖关系,然后利用门控单元来控制外部信息向长期状态c的流入和流出.如果将网络看作一个黑匣子,图3则简单明了的说明了RNN与LSTM的根本区别,即LSTM添加了门控单元和存储长期记忆的细胞状态c.
图3 RNN和LSTM的内部机制示意图Fig.3 Internal mechanism diagram of the RNN and LSTM
LSTM设计三个门控开关来控制外部信息向长期状态c的流入和流出.图4展示了LSTM单元结构.其中,输入门it控制当前网络输入xt有多少信息可以保存到记忆单元,遗忘门ft决定上一时刻的单元状态ct-1有多少信息可以保留到当前状态ct,而输出门ot则用来控制单元状态ct有多少信息可以输出到LSTM的当前的输出值ht.三个门的计算公式如下:
图4 LSTM单元结构Fig.4 Structure of LSTM cell
it=σ(Wi[ht-1,xt]+bi)
(4)
ft=σ(Wf[ht-1,xt]+bf)
(5)
ot=σ(Wo[ht-1,xt]+bo)
(6)
其中[ht-1,xt]表示t-1时刻的隐藏层状态向量ht-1和t时刻的输入状态向量xt的拼接.LSTM隐藏层的最终输出ht的计算方式为:
ct=ft⊙ct-1+it⊙tanh(Wc·[ht-1,xt]+bc)
(7)
ht=ot⊙tanh(ct)
(8)
其中⊙代表对应元素相乘.Gers等人[13]在LSTM的基础上提出窥视孔连接(Peephole Connection,PC),其主要思想是增加三个门控单元和记忆单元的连接,门控单元也可以观察到记忆单元的内容.但是,研究者们发现[14]在语言模型任务中,LSTM和带PC的LSTM网络性能基本相当,但是后者需要更多的网络参数,所以现在大多数研究工作都不使用带PC的LSTM网络结构.另外,实验证明输入门、输出门和输入激活函数对LSTM网络结构的性能影响很大.
综上所述,LSTM网络通过引入门控单元(输入门、输出门、遗忘门)和长期记忆细胞状态,有效克服了RNN中存在的梯度消失问题,尤其在长距离依赖的序列学习任务中表现优异.
3.2 门控回复式单元网络
GRU是RNN的另一种流行变体,它与LSTM单元非常相似,它将LSTM中的遗忘门和输入门合成了一个门,并且只使用隐藏状态来传输信息.由于同等规模下,GRU网络比LSTM网络的训练参数少,所有能够有效避免训练过程中的过拟合问题.
在GRU中,更新门zt代替了LSTM中的遗忘门和输入门,它决定了要丢弃哪些信息和添加哪些信息;另一个门是重置门rt,用于决定丢弃之前信息的程度.图5展示了GRU的内部结构,更新门zt和重置门rt的计算过程如下所示:
zt=σ(Wz[ht-1,xt]+bz)
(9)
rt=σ(Wr[ht-1,xt]+br)
(10)
图5 GRU单元结构Fig.5 Structure of GRU cell
在更新门zt,重置门rt的作用下,当前时刻隐藏层的候选输入状态h′t,当前时刻的隐藏层输出状态ht可由公式(11)、公式(12)计算所得.
h′t=tanh(Wh′[rt⊙ht-1,xt]+bh′)
(11)
ht=(1-zt)⊙ht-1+zt⊙h′t
(12)
综上所述,GRU网络可以看作是LSTM的变体,由于GRU网络中的变量参数少,因此可以用更少的时间来训练它.在手写句子识别、复调音乐识别等任务中[14],GRU和LSTM单元所表现出来的网络性能基本相同,但是在训练大数据集的情况下,LSTM表达性更优.
3.3 双向RNN
在经典的RNN中,神经元状态是从前向后单向传播的,然而,有些任务当前时刻的输出不仅与之前状态有关,也与后续状态相关.比如,要预测一个句子中缺失的词语,我们必须考虑上下文才能做出正确预测,这时就需要双向的RNN(Bi-directional RNN,BiRNN)来综合前后文信息.
(13)
(14)
(15)
图6表示BiRNN信息流向示意图.通俗地讲,BiRNN的隐藏层由两层神经元组成,一层处理按时间正向排序的输入序列,另一层处理反向排序的输入序列,而输出则由这两者综合计算得来.将传统的RNN单元替换为LSTM单元或者GRU结构,则BiRNN就变成了双向LSTM(Bi-directional LSTM,BiLSTM)网络或者双向GRU(Bi-directional GRU,BiGRU)网络.
图6 双向RNN示意图Fig.6 BiRNN schematic
综合来说,LSTM和GRU都能通过门控单元将时间序列信息中的重要特征保留,保证在长期的反向传播中梯度不会消失.在实际应用中,需要根据具体任务选择具体模型结构,不能笼统地说哪一种网络结构更优.
4 应用场景
4.1 机器翻译
机器翻译(Machine Translation,MT)是指利用计算机实现将源语言转换成目标语言的过程,是自然语言处理领域中的一个重要应用方向,具有很高的科学研究价值.传统的机器翻译方法需要依靠大量的人力和时间对众多平行语料进行分析,最终构造翻译系统.基于RNN的机器翻译模型,往往通过一个RNN将源语言输入序列(x1,x2,…,xT)转换成固定长度的特征向量v,然后通过另一个RNN将该固定向量转换成目标语言输出序列(y1,y2,…,yT′).根据条件概率公式,可以得到:
(16)
编码-解码器(Encoder-Decoder)模型[15,16]就是由两个RNN构造而成的机器翻译模型,也可以叫做Seq2Seq模型.该模型最重要的地方在于输入序列和输出序列的长度是可变的,可以用于翻译、聊天机器人、句法分析、文本摘要等任务.
4.2 语音识别
语音识别(Speech Recognition,SR)就是将声音波形转换成计算机可读的语言,进而通过解码技术转变为人类能够理解的文本的过程.RNN能够对语音的长时相关性进行建模,从而提高识别准确率[17].2015年,百度公开发布的采用LSTM+CTC(Connectionist Temporal Classification,CTC)[18]模型大幅度降低了语音识别的错误率,采用这种技术在安静环境下的标准普通话的识别率接近97%.Arisoy等人[19]提出使用BiRNN来解决语音识别语言建模任务,并证明了BiRNN在处理语音识别任务中优于单向的RNN结构.Tian等人[20]建议利用层级训练和指数移动平均方法来构造一个深层LSTM网络,它在语音识别任务中取得优异成果.
4.3 行为识别
行为识别(Action Recognition,AR)是计算机视觉领域的一个重要研究课题,它分为两类任务:一类是给定一段视频,需要定位其中每个行为的起始时间,并为每个行为分配类别标签;另一类是给定一段已经被预先剪切好地数据,只需要为该数据分配一个行为类别标签即可.行为视频中的帧与帧之间的时序关系在识别行为的过程中至关重要,而RNN能够学习到长期的时间依赖关系,已经被广泛地应用在该任务地学习中.Donahue等人[21]利用LSTM网络学习视频中的时间动力学和长期依赖关系.Liu等人[22]使用RNN来建模行为序列,利用序列预测学习的方法来解决行为识别问题.
4.4 情感分析
情感分析(Sentiment Analysis,SA)就是判断一段文本所表达的情绪状态,可以是正面、负面,也可以是开心、悲伤等.该任务属于典型的文本分类问题,即将一段变长的文本序列映射为文本的类别.为了学习到一个好的情感分析系统,算法必须考虑文本中单词的顺序.Can等人[23]提出利用RNN来训练一个情感分析模型.另外,一些研究者[24]利用多模态数据(文本、视频、音频等)训练多种RNN变体结构来解决情感分析任务.
4.5 其它应用
RNN作为深度学习算法中极为重要的一种,已经在众多领域大放异彩,除了上述介绍的几种应用场景外,RNN在对话(问答)系统、图像描述、推荐系统、步态识别、目标检测等领域也取得了优异成果[25-29].换句话说,一切与时序相关的计算机任务都可以尝试使用RNN来处理学习.
5 RNN的发展趋势
5.1 设计新的变体结构
从RNN到LSTM、GRU单元结构,传统的循环网络通过增加一些门控单元在一定程度上解决了RNN训练梯度消失问题和短期记忆问题.但是,这些复杂的单元内部结构以及循环网络本身的时序输入性,严重影响了网络的训练速度,如何有效提高循环网络训练效率、简化单元内部结构,依然是企业和学术研究者要解决的问题.
Bradbury等人[30]提出类回复式神经网络(Quasi-Recurrent Neural Network,QRNN),它交替使用跨时间步并行处理的卷积层来进行序列建模,实验表明QRNN在保持算法性能的基础上有效提高了网络训练和测试的速度.同理,研究者们设计只与当前时刻输入有关的门控单元来简化LSTM单元内部结构,提出简单回复式单元网络(Simple Recurrent Unit,SRU),SRU的门控单元丢弃时间依赖关系,但记忆单元仍保持时间依赖关系,这种设计能够在网络性能和训练速度之间获得权衡[31].Bouaziz等人[32]在原始LSTM基础上,设计并行的LSTM来执行多个并行同步输入序列,预测相应的输出.上海交通大学的研究者[33]提出切片回复式神经网络(Sliced Recurrent Neural Network,SRNN),它可以通过将序列分割成多个子序列来实现计算并行化,在不改变循环单元的情况下,SRNN的训练速度是标准RNN的136倍.
5.2 引入注意力机制
人脑神经机制的一个重要特征就是选择性,它表示人类过滤掉无用信息的能力,这就是所谓的注意力机制[34,35].RNN通过添加跨越时间点的自连接对时序数据建模,但是对于时序信息来说,不同时刻的输入的重要性对于学习任务来说是不一样的.注意力机制已经被广泛应用在自然语言处理、图像识别等各个领域,显著提升了模型表现能力.
He等人[36]提出一种新型的基于注意力机制的混合神经网络模型,该模型在BiLSTM网络的基础上添加单词级的注意力模块来提取文本语义信息.Huang等人[37]将注意力机制应用在情感分析任务中,提出利用多模态注意力融合模块探索图像和文本之间的内部关联性,甚至在弱标签的数据集上也验证了算法的有效性.除此之外,Sudhakaran等人[38]利用长短时注意力机制(Long Short-Term Attention,LSTA)学习行为视频的时间和空间特征.Xu等人[39]提出基于注意力机制的Encoder-Decoder模型用于图像描述任务,实验证明注意力机制为模型生成过程提供了更多可解释性,如图7所示.
图7 注意力的可视化Fig.7 Visualization of attentional map
5.3 结合其它网络
普通RNN主要着重对时序信息进行建模,然而,现实世界中的许多任务不仅仅与时序相关,往往集合多种网络结构优势才能更好的提升算法性能.比如,FCNN可以将输入数据映射到更离散的空间,经常在各种网络的最上层使用.CNN擅长学习局部信息,能够最大限度地过滤输入数据.随着深度学习热度的延续,更灵活的组合方式、更多的网络结构将会被开发出来.
Donahue等人[40]首次将CNN与LSTM进行结合,提出一种新型回复式卷积结构,该模型在视频识别与视频描述任务上都取得了很好的效果.Sainath等人[41]同时使用卷积结构、循环结构与全连接结构(即CNN、RNN、FCNN)构建神经网络模型,该模型在论文中的语音识别任务上比LSTM性能提升4-6%,充分地利用了几种网络结构的互补性.Minaee等人[42]结合CNN和LSTM网络来解决情感分析任务,CNN网络学习文本的局部结构特征,而LSTM网络学习时序关系.Lee等人[43]提出条件随机场(Conditional Random Field,CRF)和RNN的结合使用,用以解决命名实体识别问题.
6 结束语
目前,回复式神经网络已经成为深度学习领域中一类非常重要的网络模型,本文对其进行展开讨论.首先介绍了RNN的发展历程,并阐述其基本原理、网络计算方式和网络训练方法.其次,面对传统RNN在实际应用中存在的短期记忆和梯度消失问题,详细分析了RNN中被广泛使用的变体结构:LSTM、GRU和其对应的双向变体结构.接着总结了RNN的热门研究领域并分析相关研究工作.最后,结合近几年工业界和学术圈对RNN的研究进展,对RNN的发展趋势进行总结介绍,这也是我们未来研究的方向.