递归神经网络研究进展
HojjatSalehinejad、沙兰Sankar、JosephBarfett、ErrolColak和ShahrokhValaee
1
递归神经网络研究进展
HojjatSalehinejad、沙兰Sankar、JosephBarfett、ErrolColak和ShahrokhValaee
索引术语-深度学习、长期依赖性、循环神经网络、时间序列分析。
I.一、生产
“浅层网络”是指具有一个输入层、一个输出层和最多一个没有循环连接的隐藏层的人工神经网络。随着网络层数的增加,网络的复杂性也随之增加。 更多的层数或递归连接通常会增加网络的深度,并使其能够提供各种级别的数据表示和特征提取,称为“深度学习”。一般来说,这些网络由非线性但简单的单元组成,其中,=61>层提供数据的更抽象的表示,并抑制不需要的可变性[1]。 由于每一层的非线性组合造成的优化困难,在2006年取得重大进展之前,没有太多关于深度网络架构的工作[2],[3]具有循环连接的ANN被称为循环神经网络<span id=116>(RNN),能够对序列数据进行建模,用于序列识别和预测[4]RNN由具有非线性动力学的高维隐藏状态组成[5]隐藏状态的结构作为网络的记忆和</span>隐藏层每次都以其先前的状态为条件[6]这种结构使RNN能够长时间存储、记忆和处理过去的复杂信号。RNN可以将输入序列映射到当前时间步的输出序列,并预测下一个时间步的序列。
在基于RNN的文献中,从阿尔奇设计到应用,都有大量的论文发表
H. Salehinejad是加拿大多伦多的多伦多大学电子&计算机工程系和加拿大圣路易斯的医学影像系的教授。加拿大多伦多多伦多大学迈克尔医院,电子邮件:salehinejadh@ smh. ca。
S. 桑卡尔就职于加拿大滑铁卢大学电气与计算机工程系,电子邮件:sdsankar@ edu. uwaterloo. ca。
J. Barfett和E. Colak是加拿大多伦多多伦多大学圣迈克尔医院医学影像系的电子邮件barfettj,colake@smh.ca。
S. Valaee在加拿大多伦多的多伦多大学电子&计算机工程系工作,电子邮件:valaee@ece.utoronto.ca。
表1:递归神经网络(RNN)的一些主要进展一览。
|
|
|
1990 | Elman |
|
1993 |
|
|
1994 | Bengio |
|
1997 | Hochreiter |
|
1997 |
|
|
1998 | LeCun |
|
2000 | Gers |
|
2001 |
|
|
2005 | Morin |
|
2005 |
|
|
2007 | Jaeger |
|
2007 |
|
|
2009 |
|
|
2010 | Mikolov |
|
2010 |
|
|
2011 | Martens |
|
2011 | Mikolov |
|
2011 | Sutskever |
|
2011 |
|
|
2012 | Gutmann |
|
2012 | Mnih |
|
2012 | Pascanu |
|
2013 | Mikolov |
|
2013 | Sutskever |
|
2013 |
|
|
2014 | Cho |
|
2015 | Zaremba |
|
2015 | Mikolov |
|
2015 |
|
|
2015 | Gregor |
|
2015 | Kalchbrenner |
|
2015 | Srivastava |
|
2017 |
|
|
发展在本文中,我们重点讨论离散时间RNN和该领域的最新进展。表I列出了RNN在时间上的一些主要进展。使用梯度下降(GD)的反向传播的发展为训练RNN提供了很好的机会。这种简单的训练方法加速了开发RNN的实际成就[5]。 然而,它带来了一些挑战,在建模长期的依赖,如消失和爆炸梯度问题,这是讨论这一点
2
本文
其余的文件组织如下。RNN的基本原理在第二节中介绍。第三节讨论了训练RNN的方法,第四节介绍了各种RNN架构。训练RNN的正则化方法将在第五节中讨论。最后,在第六节中简要介绍了RNN在信号处理中的主要应用。
二.一个简单的欧元汇率网络
RNN是一类有监督的机器学习模型,由具有一个或多个反馈回路的阿尔蒂神经元组成[7]反馈回路是随时间或序列(我们在本文中称之为时间)而循环的周期[8],如<span id=43>在图1中。以监督的方式训练RNN需要输入-目标对的训练数据集。目标是最小化输出和目标对之间的差异(即,损失值)。
A. 模型架构
一个简单的RNN有三层,分别是输入层、递归隐藏层和输出层,如图1a所示。输入层具有N个输入单元。该层的输入是通过时间t的向量序列,例如{. x1,x,xt+1,.},其中x=(x1,x2,...,xN)。 全连接RNN中的输入单元连接到隐藏层中的隐藏单元,其中连接由权矩阵WIH定义。隐藏层具有M个隐藏单元ht=(h1,h2<span id=98>,.,hM),它们通过循环连接在时间上相互连接,图1b。使用小的非零元素初始化隐藏单元可以提高网络的整体性能和稳定性[9]隐藏层将系统的状态空间或“内存”定义为
h= fH(o),(1)
哪里
o=WIHX+WHHh1+Bh,(2)
fH(·)是隐藏层激活函数,并且Bh是隐藏单元的偏置向量。隐藏单元通过加权连接WHO连接到输出层。
层具有P个单元y=(y1,y2,...,yP),其计算为y= fO(WHOh+Bo)(3)
其中fO(·)是激活函数,并且BO是输出层中的偏置向量。由于输入-目标对在时间上是连续的,因此在时间t=(1,.,T)的情况下。 等式(1)和(3)表明RNN由某些非线性状态方程组成,这些方程可随时间迭代。在每个时间步中,隐藏状态基于输入向量在输出层提供预测。RNN的隐藏状态是一组值,除了任何外部因素的影响外,它总结了许多时间步长上关于网络过去状态的所有唯一必要信息。这些综合信息可以定义网络的未来行为,并在输出层做出准确的预测[5]。 RNN使用简单的
t
t+1t+2时间
(B)随时间展开的RNN。
图1:一个简单的递归神经网络(RNN)及其随时间的展开结构。每个箭头显示层之间的单元的完整连接。为了使数字简单,没有显示偏差。
非线性激活函数。然而,这种简单的结构是能够建模里奇动态,如果它是通过时间步长良好的训练。
B。激活函数
对于线性网络,多个线性隐藏层充当单个线性隐藏层[10]非线性函数比线性函数更强大,因为它们可以在边界附近绘制非线性。RNN中的一个或连续隐藏层中的非线性是学习输入-目标关系的原因。
一些最流行的激活函数如图2所示。近年来,“sigmoid“、“tanh“和修正的艾德线性单元(ReLU)比其他激活函数受到了更多的关注。 “sigmoid”是一种常见的选择,它接受一个真实的-值并将其压缩到范围[0,1]。该激活函数通常用于输出层,其中交叉熵损失函数用于训练分类模型。 “tanh”和“sigmoid”激活函数是
和
分别“tanh”激活函数实际上是一个缩放的“sigmoid”激活函数,例如
σ(x)=
ReLU是另一个流行的激活函数,它对于正输入值是开放式的[3],定义为
y(x)=max(x,0)。(七)
激活函数的选择主要取决于问题和数据的性质。例如,“sigmoid”适用于输出在[0,1]范围内的网络,然而,“tanh“和“sigmoid“激活函数使神经元非常快地饱和,并且c可以使梯度消失。尽管有“tanh”,但“sigmoid”的非零集中输出
3
out | 1 0.5 0 −0.5 −1 | out | 1 0.5 0 −0.5 −1 |
−4 −2 0 2 4
| −4 −2 0 2 4
|
out | 1 0.5 0 −0.5 −1 | out | 1 0.5 0 −0.5 −1 |
−4 −2 0 2 4
| −4 −2 0 2 4
|
(e)sinnet直到饱和。(f)S形2:最常见的激活功能。
可能导致权重的梯度更新S中的不稳定动态。与“sigmoid”或“tanh”激活函数相比,ReLU激活函数导致梯度更稀疏,并大大加速了随机梯度下降(SGD)的收敛[11]。 ReLU在计算上是非常简单的,因为它可以通过将激活值阈值设置为零来实现。然而,ReLU不再抵抗大的梯度流,并且随着权重矩阵的增长,神经元在训练期间可能保持不活动。
C. 损失函数
损失函数通过比较输出y与相应的目标z来评估网络的性能,定义为
L(y,z)= 0t
这是每个时间步中损失的总和[12]损失函数的选择取决于问题。一些流行的损失函数是用于预测实值的欧几里得距离和汉明距离,以及分类问题输出概率分布的交叉熵[13].
三. TRAININGRECUREANEURALNETWORK
RNN的有效训练是一个主要问题。困难在于正确初始化RNN中的权重s。
网络和优化算法来调整它们,以最小化训练损失。网络参数之间的关系和隐藏状态随时间的动态变化会导致不稳定性[4]。 对文献中提出的方法的一瞥表明,主要焦点是降低训练算法的复杂性,同时加速收敛。然而,通常这样的算法需要大量的迭代来训练模型。 用于训练RNN的一些方法是多网格随机搜索,时间加权伪牛顿优化GD扩展卡尔曼滤波器(EKF)[15],Hessian-free,期望最大化(EM)[16],近似Levenberg-Marquardt[17]和全局<sp优化算法。在本节中,我们将详细讨论一些se方法。详细比较见[18].
A.初始化
RNN中权重和偏差的计算是至关重要的。一般规则是为权重分配较小的值。标准差为0.001或0.01的高斯绘制是合理的选择[9],[19]。 偏差通常设置为零,但输出偏差也可以设置为非常小的值[9]然而,参数的初始化取决于输入数据的任务和属性,例如维度[9]使用<span id=78>先验知识或半监督方式是其他方法[4].
B。基于梯度的学习方法
梯度下降(GD)是深度学习中一种简单而流行的优化方法。基本思想是通过找到模型中权重矩阵每个成员的误差函数导数来调整模型的权重[4]为了使总损失最小化,GD与<如果非线性激活函数是可微的,则误差相对于该权重的导数。 GD也称为批处理GD,因为它在每次优化迭代中计算整个数据集的梯度,以执行单个更新,
θt+1 = θt −
k (9)
其中U是训练集的大小,λ是学习率,dθ是参数集。这种方法对于非常大的数据集在计算上是昂贵的,并且不适合在线训练(即,当输入到达时训练模型)。
由于RNN是一个通过时间的结构,我们需要通过时间来扩展GD来训练网络,称为通过时间的反向传播(BPTT)[20]然而,通过时间计算误差导数是困难的[21]这主要是由于参数和动态之间的关系<span RNN的id=40>,这是非常不稳定的,使GD无效。随着依赖关系持续时间的增加,基于依赖关系的算法很难捕获依赖关系[4]。 损失函数关于权重的导数仅考虑当前输出与相应目标之间的距离,而不使用历史信息进行权重更新[22]。 RNN无法学习长距离时态
4
表II:比较主要梯度下降(GD)方法,其中N是网络中的节点数,O(·)是每个数据点。更多详细信息请参阅[14].
|
|
|
|
|
RTRL |
|
|
|
|
BPTT |
|
|
|
|
FFP |
|
|
|
|
GF |
|
|
|
|
BU |
|
|
|
|
yt |
dL dL dL
dh1dhtdh+1
dht+1 dht
xt- 1 |
时间
图3:随着网络随着时间的推移接收新的输入,单元的灵敏度会衰减(层中较浅的阴影),并且通过时间的反向传播(BPTT)会覆盖隐藏单元中的激活。这导致忘记早期访问的输入。
GD用于训练时的依赖性[4]这是由于梯度的指数衰减,因为它是通过时间反向传播的,这被称为消失梯度问题。在另一种偶然的情况下,反向传播的梯度可以指数地爆破,这增加了梯度的方差,并导致非常不稳定的学习情况,称为梯度爆炸问题[5]这些挑战在本节中讨论。主要GD方法的比较见表II,基于梯度的优化算法概述见[18].
1)通过时间的反向传播(BPTT):BPTT是
前馈网络反向传播的推广。用于学习RNN的标准BPTT方法及时“展开”网络,并通过时间向后传播错误信号。通过将图1B中的网络参数视为集合θ ={WHH,WIH,WHO,BH,B,BO},并且ht作为网络在时间t的隐藏状态,我们可以<span id=65>将梯度写成
(10)
其中,在时间t处损失函数梯度的展开为:
(11)
哪里
(12)
我们可以考虑Eq。作为等式(1)中的隐藏状态参数的雅可比矩阵,
其中f(·)是函数f(·)的逐元素导数,diag(·)是对角矩阵。
我们通常可以识别隐藏状态s随时间在网络中的长期和短期贡献。长期依赖性指的是输入和对应的隐藏状态在时间k <<t的贡献,而短期依赖性指的是其他时间[19]图3显示,随着网络随着时间的推移而进展,输入x1在</s的贡献pan>离散时间t−1通过时间消失到时间步长t +1(层中的深灰色变为更高的灰色)。另一方面,损失函数值Lt+1相对于时间t+1处的隐藏状态ht+1的贡献
在BPTT中的时间步长要比过去长得多。
2)消失梯度问题根据文献,可以通过使用强非线性来捕获真实的世界中的数据的复杂模式[6]然而,这可能导致RNN遭受消失梯度问题[4]这个问题指的是指数</span>当它们通过时间传播回来时,梯度幅度的收缩。这种现象导致网络的记忆忽略长期依赖性,并且几乎不学习时间上遥远的事件之间的相关性B。有两个原因:
1)标准的非线性函数,如sigmoid函数,其梯度几乎处处接近于零;
2)梯度的大小一遍又一遍地乘以
5
递归矩阵,因为它是通过时间反向传播。在这种情况下,当非递归矩阵的特征值小于1时,梯度迅速收敛到零。这通常发生在5-10步的反向传播[6].
在长序列上训练RNN时(例如,100个时间步),当权重较小时,梯度会收缩。一组真实的数的乘积可以分别收缩/爆炸为零/无穷大。对于基质,存在相同的类比,但是收缩/爆炸沿着沿着一些直接离子发生。文[19]证明了当ρ为递归权矩阵WHH的谱半径时,在ρ>1处,长期分量必随t→∞爆炸。 可以使用奇异值将其推广到非
||≤γ。||≤γ. (十四)
使用等式(13)雅可比矩阵
|| ∂hk+1 T · ′
卡宾枪
我们可以考虑||
我们可以得到损失函数分量
||
( )|| ≤ δt-k || || . (16)
这个方程表明,随着t-k变大,长期依赖性趋向于零,瓦尼问题发生。最后,我们可以看到,梯度消失问题出现的充分条件是递归权重矩阵W HH的最大奇异值(即,,λ1)
萨蒂斯λ1%3C
3)爆炸梯度问题:使用BPTT训练RNN的主要问题之一是爆炸梯度问题[4]随着权重变得更大,并且<span>的数量增加,在长序列上训练RNN的过程中可能会爆炸 id=43>训练期间的梯度大大增加。正如[19]中所述,这种情况发生的必要条件是λ1>
为了克服爆炸梯度问题,最近提出了许多方法。2012年,Mikolov提出了一种梯度模裁剪方法,以避免在大型数据集上使用BPTT和SGD等简单工具训练RNN时出现梯度爆炸问题[23],[24]在类似的方法中,Pascanu通过引入</spa提出了一种与Mikolov几乎相似的方法n>作为用于对梯度进行范数裁剪的阈值的超参数[19]。 这个参数可以由算法来设定,但是训练过程不是很敏感
并且对于相当小的阈值表现良好。
4)随机梯度下降:SGD(也称为在线GD)是GD的推广,广泛用于机器学习应用[12]SGD是鲁棒的,可扩展的,并且在许多不同的领域都表现良好,从光滑和强凸问题<span id=40>到复杂的非凸目标。 尽管GD中有冗余计算,
L(θt)
图4.经典动量和Nesterov加速梯度格式。
SGD每次执行一次更新[25]对于输入-目标对{xk,z},其中k∈{1,.,U},θ中的参数根据下式更新:
θt+1 = θt − λ ∂Lk (17)
这种频繁的更新导致损失函数输出的波动,这有助于SGD探索具有更高多样性的问题景观,希望找到更好的局部最小值。自适应学习率可以控制SGD的收敛,使得随着学习率的降低,探索减少而利用增加。它可以更快地收敛到局部最小值。加速SGD的经典技术是使用动量,其在跨迭代朝向目标的持续减少的方向上累积速度向量[26]。动量的经典版本适用于时间<span的损失函数L。 id = 88 t与A . A . A设置 。of parametersθA . A .
v . v+1=v . v- -λ = λ = λL .( )) ( 18 )
其中,μ L(·)是损失函数的梯度,μ∈[0,1]是动量系数[9],[12]如图4a所示,θ中的参数更新为
θt+1= θ+v+1。(十九)
The Nesterov accelerated gradient (NAG) is a first-order optimization method that provides more efficient convergence rate for particular situations (e.g., convex functions with de- terministic gradient) than the GD [27]. The main difference between NAG and GD is in the updating rule of the velocity vector v, as presented in Figure 4b, defined as 重试 错误原因
v . v+1 。=v . v- -λ = λ = λL .( + )v . v)( 20 )
在 哪里 ? 在 哪里 ?The The参数 in 参数 in 参数θAre更新 的 版本使用 usingEq .. ( 19 ). 由 . .ReasonableVigne-Tuningof of of ofThe The动量 ( moment )Coefµ它 是 一 个是 的 , 是 的 。possibleto增加 的 人数The The优化 优化 ( Optimization )per .formance[ 9 ] 。.
5)小批量梯度洗脱:小批量GD组分
设置一批训练数据的梯度,其中有多个训练样本。典型的小批量为50≤B≤256,但可以根据不同的应用而变化。喂养
6
小批量的训练样本加速了GD,并且适合于图形处理单元(GPU)上的处理负载分布。更新规则在B示例之后修改参数,而不需要等待扫描所有示例,例如
θ= θt-1-
由于基于GD的算法通常依赖于梯度的瞬时估计,因此它们对于时间序列数据[22]是缓慢的,并且对于n个非凸函数[28]的优化是无效的。=42>速率,这通常是棘手的并且取决于应用。
SGD比GD快得多,可用于跟踪更新。 然而,由于mini-batchGD更容易并行化,并且可以利用矢量化实现,因此它的性能明显优于GD和SGD[25]与SGD相比,良好的矢量化甚至可以导致更快的结果。此外,非随机初始化方案,例如逐层预训练,可以帮助更快地
6)Adam随机优化:自适应矩估计(Adam)是一种基于一阶矩的优化算法,它使用低阶矩的估计来优化随机目标函数[31]它需要初始化一阶矩向量m0和<span id=41>二阶矩矢量
时间戳为0时的v 0。se向量更新为
m+1= β1m+(1 - β1)g+1(22)
和
v+1= β2v+(1 - β2)g+1,(23)
其中gt+1是损失函数的梯度。矩估计值的指数衰减率建议为β1=0.9和β2=0.999[31]一阶矩和二阶矩估计值的偏倚校正为
t+1=t+1=v/(1 -β+1),(24)
和
t+1=v/(1 - β+1)。(二十五)
然后,参数更新为
θt+1= θt-
其中,n = 10-8。亚当算法实现起来相对简单,适用于非常大的数据集[31]。.
C.基于扩展卡尔曼滤波器的学习
卡尔曼滤波是一种基于随时间观察到的一系列测量值来预测系统未来状态的方法,该方法使用贝叶斯推断并估计每个时间步长的变量的联合概率分布[32]扩展卡尔曼滤波(EKF)是非线性版本的卡尔曼滤波器它放宽了状态转移和观测模型的线性前提条件。然而,它们可能反而需要是可微函数。 EKF训练RNN
假设权重的最佳设置是平稳的[22],[33]与反向传播相比,EKF帮助RNN更快地达到非平稳过程的训练稳态。 它可以在有限数据的训练中优于反向传播算法[15]类似于SGD,它可以在线方式用输入数据训练RNN[33].
EKF的一个更有效的版本是解耦EKF(DEKF)方法,它忽略了互斥的权重组的相互依赖性[32]这种技术可以降低计算复杂度和每个训练实例所需的存储。解耦的扩展卡尔曼滤波器(DEKF)将扩展卡尔曼滤波器独立地应用于每个神经元,以估计馈送它的最佳权重。 训练过程被建模为最优滤波问题。它递归而有效地计算最小二乘问题的解决方案,以最小化数据和曲线之间的平均距离为给定数据集找到最佳拟合曲线。在时间步t,所有提供给网络的信息直到时间t被使用,包括自学习过程s的第一次迭代以来计算的所有导数。然而,计算只需要上一步的结果,不需要存储该步骤之后的结果[22]。在RNN中基于卡尔曼的模型在计算上是昂贵的,并且在过去几年中很少受到关注。
D.二阶优化
二阶优化算法利用函数的二阶导数信息。假设具有良好的二阶展开逼近的二次函数,牛顿方法可以通过向全局最小值移动而比GD执行得更好、更快[34]这是因为GD中的优化方向是逆梯度的,并且在鞍点附近陷入困境</span>点或局部极值。基于GD的模型的另一个挑战是学习率的设置,这通常是棘手的,并且依赖于应用程序。然而,二阶方法通常需要计算Hessian矩阵和Hessian矩阵的逆,与GD方法相比,这在RNN中是一项困难的任务。
一般递归贝叶斯Levenberg-Marquardt算法可以在RNN的递归二阶训练中顺序更新权重和Hessian矩阵[35]这种方法优于RNN的标准实时递归学习和EKF训练算法[35]计算Hessian矩阵的挑战<span id=38>时间序列通过引入Hessian自由(HF)优化来解决[34].
E. 无Hessian优化
一个设计良好且初始化良好的HF优化器可以很好地优化非凸函数,例如训练深度神经网络的目标函数,给定合理的随机初始化[34]由于RNN在时间上共享权重,HF优化器应该是a<span id=40>良好的优化候选[5]通过HF优化训练RNN
7
可以减少由基于梯度的优化引起的训练困难艾德[36]通常,HF和截断牛顿方法在每个更新步骤之前计算Hessian矩阵的新估计,并且可以考虑曲线的突然变化[19]。 HF优化目标实值光滑目标函数的无约束最小化[28]与标准牛顿方法一样,它使用局部二次逼近来生成更新建议。它属于广泛的近似牛顿方法,适用于非常高维的问题,例如大型神经网络的训练目标[28]。.
通过向HF优化器添加新的阻尼机制,优化器能够在已知不可能使用GD学习的病理合成数据集上训练RNN[28]。 乘法RNN(MRNN)使用乘法(也称为“门控”)连接来允许当前输入字符确定从一个隐藏状态向量到下一个隐藏状态向量的转换矩阵[5]。 该方法通过将其应用于预测文本流中的下一个字符的任务,展示了使用该优化器训练的大型RNN的强大功能[5],[12].
HF优化器可以与现有预训练方法结合使用或作为现有预训练方法的替代方案,并且适用性更广泛,因为它依赖于更少的关于网络特定结构的假设。 HF优化在大的小批量上运行,并且能够检测权重空间中具有非常小的梯度但甚至更小的曲率的有希望的方向。 通过使用带有动量的SGD并将权重初始化为接近于零的小值,已经实现了类似的结果[9]。.
F. 全局优化
一般来说,进化计算方法初始化搜索代理的群体,并使其进化以找到局部/全局优化解[37]这些方法可以解决广泛的优化问题,包括多峰,病态,高维,凸和非凸问题。然而,进化算法在RNN优化中存在一些缺点,包括陷入局部极小值/极大值,收敛速度慢,网络停滞。
RNN中参数的优化可以被建模为一个非线性全局优化问题。用于训练RNN的最常见的全局优化方法是遗传算法[38]。 基于Alopex的进化算法(AEA)使用个体权重变化与全局误差度量变化之间的局部相关性,并仅使用局部计算同时更新网络中的所有权重[39]。 为特定应用选择最佳的神经网络拓扑结构与优化网络参数是不同的任务。在[40]中提出了一种混合多目标进化算法,用于训练和优化用于时间序列预测的RNN的结构。一些模型同时获得递归网络的结构和权重[38]。自适应进化策略(CMA-ES)是一种全局优化的参数整定方法
关于RNN的全局优化方法的已发表文献分散,并且没有受到研究界的太多关注。这一不足主要是由于这些方法的计算复杂性。然而,以低计算复杂度方式的此类方法的多代理哲学,例如具有小群体大小的模型[42],可能会导致比SGD好得多的性能。
四. REucurénEuroNetworksARchitectures
本节旨在概述RNN的不同架构,并讨论这些模型之间的细微差别。
A. 具有多层感知器的深度RNN
神经网络的深层架构可以表示比浅层架构莫尔有效的函数。虽然递归网络在时间上是固有的深度,因为每个隐藏状态是所有先前隐藏状态的函数[43],但已经表明内部计算实际上相当浅[44]。在[44]中,有人认为在RNN的过渡阶段添加一个或多个非线性层可以通过更好地分解原始输入的潜在变化来提高整体性能。 具有感知器层的RNN中的深层结构可以分为三类:
输入到隐藏,隐藏到隐藏,隐藏n到输出[44].
1)深度输入到隐藏:基本思想之一是将多层感知器(MLP)的结构引入过渡和输出阶段,分别称为深度过渡RNN和深度输出RNN。为此,可以引入两个操作符。 第一个是加法运算器,它接收两个向量,输入向量x和隐藏状态h,并返回一个摘要,
′
h =xh。(二十七)
该运算符等价于Eq。(1)另一个算子是表示为Eq的预测器,其等价于Eq。(3)并预测给定摘要h的输出为
y=0.01h。(二十八)
输入数据的高级表示意味着更容易表示数据的时态结构之间的关系。这种技术已经取得了比在语音识别[43]和单词嵌入[45]应用中向网络提供原始数据更好的结果。在输入中具有MLP的RNN结构隐藏层如图5a所示。为了增强长期依赖性,额外的连接在输入层和隐藏层之间建立了一条捷径,如
2)深度隐藏到隐藏和输出:深度RNN的重点是隐藏层。在该级别中,来自先前数据抽象和新输入的数据抽象和/或隐藏状态构造的过程是高度非线性的。 MLP可以对这种非线性函数进行建模,这有助于RNN快速适应快速变化的输入模式,同时仍然具有对过去事件的良好记忆。一个MLP之前,
8
图5:一些具有多层感知器(MLP)的深度递归神经网络(RNN)架构。
图6:通过时间展开的双向递归神经网络(BRNN)。
输出层(图5c中给出了一个示例)[44]深度隐藏到输出函数可以解开隐藏状态中的变化因素,并促进对目标的预测。该函数都具有网络的更紧凑的隐藏状态,这可能导致先前输入的更有信息量的历史摘要。
3)隐藏状态堆栈:构建深度RNN的另一种方法是拥有一个隐藏递归层堆栈,如图5d所示。这种类型的递归水平鼓励网络在不同的时间尺度上运行,并使其能够处理输入序列的多个时间尺度[44]然而,连续隐藏状态之间的转换通常是浅的,这导致</span>它可以表示的有限的函数族[44]因此,这个函数不能作为一个通用的近似,除非高层有反馈到低层。
虽然为了利用深度网络的贝内而增强RNN已经证明可以产生性能改进,但它也表明会引入潜在的问题。通过向网络过渡阶段添加非线性层,现在存在梯度必须通过其返回的附加层。这可能会导致梯度消失和爆炸等问题,导致网络无法充分捕获长期依赖关系[44]在RNN的过渡阶段添加非线性层也可以显着增加RNN的性能。降低了网络的计算速度。额外的层会显著增加网络的训练时间,必须在每次训练迭代时展开,因此不能并行化。
(0,0)
x2
图图7:二维递归神经网络(RNN)中的前向传递序列排序。隐藏层平面内的连接是循环的。沿着x1和x2的线显示了从左上角开始的扫描带,沿该扫描带沿着观察先前的点。
B。双向RNN
传统的RNN只考虑数据的先前上下文进行训练。虽然在语音识别等许多应用中,简单地查看先前的上下文就足够了,但探索未来的上下文也很有用[43]。pan>将输出延迟一定数量的时间帧。然而,这种方法需要为任何实现选择handpicked最佳延迟。双向RNN(BRNN)考虑过去和未来的所有可用输入序列来估计输出向量[46]为此,一个RNN在前向时间方向上从开始到结束处理序列。另一个RNN在负时间方向上从结束到开始向后处理序列,如图6所示。前向状态的输出不连接到后向状态的输入,反之亦然,两种状态神经元之间没有相互作用[46]。.
在图6中,向前和向后隐藏序列为→ ←
分别由h和h表示,在时间tT,前向隐藏序列被计算为
→ →
h= fH(W
其中它在t =(1,...,T)后向层是←←
h= fH(W
其在t=(T,...,①的人。在时间t的输出序列yt是
→ ←
y= Wh+Wh+Bo。(三十一)
BPTT是训练BRNN的一种选择。然而,向前和向后传递过程稍微复杂一些,因为状态和输出神经元的更新不再一次一个地进行[46]。 虽然简单的RNN受到导致当前时间的输入的约束,但BRNN通过使用过去和未来信息来扩展此模型。然而,BRNN的缺点是它们需要提前知道输入序列的开始和结束。 一个例子是通过音素标记口语句子[46].
C. 递归卷积神经网络
RNN的流行可以归因于它对序列数据建模的能力。以前检查过的型号
9
已经增强了简单RNN的底层结构,以提高其在学习一维序列的上下文依赖性方面的性能。然而,存在一些问题,这需要理解上下文依赖多个维度。 最流行的网络架构使用卷积神经网络(CNN)来解决这些问题。
CNN是机器视觉应用中非常流行的模型。CNN可以由多个卷积层组成,可选地在中间具有池化层,然后是完全连接的感知器层[11]。 典型的CNN通过使用卷积层来学习,以使用每层中的共享权重来提取特征。特征池化层(即,子采样)通过降低中间表示(即,特征图)以及输出对偏移和失真的敏感性。在最后一个卷积层提取的特征被馈送到全连接感知器模式l,用于特征的降维和分类。
将递归连接合并到每个卷积层中可以形成递归卷积神经网络(RCNN)[47] RCNN中单元的激活随着时间的推移而演变,因为它们依赖于相邻单元。这种方法可以集成的上下文信息,重要的对象识别任务。该方法通过层与层之间的权值共享,在保持参数个数不变的情况下,增加了模型的深度。使用从输出到隐藏层输入的递归连接允许网络对标签依赖性进行建模,并根据其先前的输出平滑自己的输出[48]这种RCNN方法允许将大输入上下文馈送到网络,而<span id=95>限制模型的容量。该系统能够以较低的推理代价对复杂的空间依赖关系进行建模。 随着上下文大小随着内置递归的增加而增加,系统会识别并纠正自己的错误[48]四向二维RNN可以增强CNN对长距离空间依赖性的建模[49]。 这种方法有效地将全局空间上下文嵌入到紧凑的局部表示中[49].
D. 多维递归神经网络
多维递归神经网络
是RNN对高维序列学习的另一种实现。该网络利用每个维度的循环连接来学习数据中的相关性。MDRNN是有向无环图RNN[50]的特殊情况,通过用D维网格[51]替换网络更新的一维链来推广到多维数据。 在这种方法中,单个递归连接被替换为大小为D的递归连接。图7中给出了一个二维示例。在每个时间步的向前传递过程中,隐藏层接收外部输入以及从沿着所有维度后退一步的自身激活。 在每个时间步的输入和先前隐藏层激活的组合以输入序列的顺序馈送。然后,网络存储产生的隐藏层激活[52]。MDRNN的误差梯度可以用BPTT计算。 与一维BPTT一样,
以前向传递的相反顺序ER处理该序列。在每个时步,隐藏层接收输出误差导数和它自己的未来导数[52]。.
RNN具有适合多维域的属性,例如对扭曲的鲁棒性和上下文的灵活使用。 此外,RNN还可以利用图像分析和视频处理中的固有序列模式,这些模式通常被其他阿尔奇忽略[53]然而,当试图对多维序列建模时,内存使用可能会成为一个重要的问题。随着网络中更多的重复连接增加,网络必须保存的保存状态的数量也增加。如果网络中有大量保存的状态,这可能会导致巨大的内存需求。MDRNN也成为消失梯度的牺牲品,并且可能无法沿着沿着所有维度学习长期顺序信息。虽然MDRNN的应用与RCNN一致,但还没有对这两种模型进行任何比较研究。
E. 长短期记忆
循环连接可以通过利用它们理解顺序依赖关系的能力来提高神经网络的性能。然而,从回流连接产生的记忆可能受到用于训练RNN的算法的严重限制。到目前为止,所有的模型都成为训练阶段梯度爆炸或消失的牺牲品,导致网络无法学习数据中的长期顺序依赖关系。以下模型是专门为解决这个问题而设计的,最流行的是长短期记忆(LSTM)RNN。
LSTM是减少消失和爆炸梯度影响的最流行和最有效的方法之一[54]这种方法将隐藏单元的结构从“sigmoid”或“tanh”改变为记忆单元,其中它们的输入和输出由门控制。这些门控制信息流到隐藏的神经元,并保留从以前的时间步提取的特征[21],[54].
结果表明,对于连续的s序列,LSTM模型的内部值可以无限增长[55]。即使连续序列具有自然重复的特性,网络也无法检测出哪些信息不再相关。 遗忘门学习控制存储在存储单元中的值衰减的速率的权重[55]对于输入和输出门关闭并且遗忘门不引起衰减的时段,存储单元简单地随时间保持其值,使得</span>在这些时间段内,误差的梯度在反向传播期间保持恒定[21]这种结构允许网络潜在地记住更长时间的信息。
LSTM在隐藏层中具有高复杂性。 对于相同大小的隐藏层,一个典型的LSTM比一个简单的RNN有大约四倍多的参数[6]提出LSTM方法的目的是引入一个可以改善学习长程依赖关系的方案,而不是找到最小或最优的参数。span>方案[21]与简单的LSTM相比,多维和网格LSTM网络部分增强了对长期依赖关系的学习,这将在本节中讨论。
10
yt
输入ate |
xt / ht-1
图图8:带有一个cell的LSTM内存块。虚线表示时滞。
1)标准LSTM:一个典型的LSTM单元由输入组成,
忘记,输出门和单元激活组件,如图8所示。这些单元接收来自不同来源的激活信号,并通过设计的倍增器控制细胞的激活。 LSTM门可以防止网络的其余部分在多个时间步修改存储单元的内容。LSTM递归神经网络比普通的RNN更长时间地保存信号和传播错误。这些属性允许LSTM网络处理具有复杂和分离的相互依赖性的数据,并在一系列序列学习领域中表现出色。
LSTM的输入门定义为
g= σ(WIGx+WHgh1+Wggg1+Bg),(32)
其中WIGi是从输入层到输入门的权重矩阵,WHg是从隐藏状态到输入门的权重矩阵,Wggi是从单元激活到输入门的权重矩阵,并且Bgi是t输入门的偏置。遗忘之门被定义为
g= σ(WIGx+WHgh1+Wggg1+Bg),(33)
其中WIG是从输入层到遗忘门的权重矩阵,WHgf是从隐藏状态到遗忘门的权重矩阵,Wggf是从单元激活到遗忘门的权重矩阵,并且Bgf是<span id=42>的偏置”忘记门。单元门被定义为
g= gtanh(WIGxt+WHgch1+Bgc)+gg1,(34)
其中WIGc是从输入层到单元门的权重矩阵,WHgc是从隐藏状态到单元门的权重矩阵,并且Bgc是单元门的偏置。输出门定义为
g= σ(WIGx+WHgoh1+Wggg+Bgo),(35)
其中WIGo是从输入层到输出门的权重矩阵,WHgo是从隐藏状态到输出门的权重矩阵,Wggo是从单元激活到输出门的权重矩阵,并且Bgo是<span id=43>输出门的偏置。最后,将隐藏状态计算为
h=gtanh(g)。(三十六)
图图9:S-LSTM的一个例子,一个基于树结构的长短期记忆网络。树节点可以考虑来自多个后代的信息。其他白色节点的信息被屏蔽。每个箭头处的短线(-)表示一个信息块。
2)S-LSTM:虽然LSTM内部机制有助于网络学习更长的序列相关性,但它可能无法理解比序列更复杂的输入结构。S-LSTM模型旨在克服梯度消失问题,并从输入中学习长期依赖关系。 S-LSTM网络由S-LSTM存储块组成,并基于层次结构工作。一个典型的存储器块由输入和输出门组成。在图9所示的树结构中,多个后代单元在一段时间内的内存递归地反映在一个内存单元上。该方法通过考虑来自树上的长距离的信息(即,分支)到主体(即,根)。典型的S-LSTM具有“sigmoid”功能,因此,门控信号在[0,1]的范围内工作。图9显示了越靠近根的门受到梯度消失问题的影响越小(深色圆圈),而树的较低级别处的分支由于梯度消失而失去了它们的记忆(浅色圆圈)。 可以使用破折号关闭门以不接收来自较低分支的信号。
与递归和LSTM模型相比,S-LSTM方法可以实现竞争性的结果。它具有扩展到其他LSTM模型的潜力。然而,它的性能无法与其他最先进的LSTM模型进行比较。读者可以参考[56]了解有关S-LSTM的更多细节
记忆细胞
3)堆叠的LSTM:ANN中的深度思想也适用于LSTM,通过在空间中堆叠不同的隐藏层与LSTM单元来增加网络容量[43],
[57]第57段。使用等式(1)中的隐藏层的L个LSTM的堆栈中的隐藏层l被定义为:
h= fH(WIHh-1+WHHh1+B),(37)
其中隐藏向量序列h被计算在
时间t=(1,...,T)for=(1,.,L)初始隐藏向量序列使用输入序列h0=(x1,...,[43]网络的输出为:
y=f0(WHOh+B0)。(三十八)
在堆栈式LSTM中,堆栈指针可以确定LSTM中的哪个单元提供前一个单元的状态和优先级单元。
11
时间步长[58]。 在这样的受控结构中,不仅控制器可以在恒定时间内从堆栈顶部推送到dpop,而且LSTM可以保持堆栈内容的连续空间嵌入[58],[59].
堆叠LSTM与不同RNN结构的组合用于不同的应用需要研究。一个例子是堆叠LSTM与频率的组合
4)双向LSTM可以通过在称为深度双向LSTM(BLSTM)的空间中堆叠LSTM单元的隐藏层来增加BRNN的卡帕克容量[43]BLSTM网络比单向LSTM网络更强大[61]这些网络理论上</span>在计算过程中涉及输入序列的所有信息。BLSTM的分布式表示特性对于不同的应用(如语言理解)至关重要[62]BLSTM模型利用了双向RNN部分中讨论的相同优势,同时还克服了
消失梯度问题。
5)多维LSTM:经典的LSTM模型具有由单个遗忘门控制的单个自连接。它的激活被认为是一维LSTM。多维LSTM(MDLSTM)使用来自先前单元状态的互连来沿着每N个维度沿着扩展LSTM的存储器[52],[63]MDLSTM接收N维排列中的输入(例如,图像的两个维度)。隐藏状态向量(h1,.,hN)和记忆向量(m1,.,m,N)被馈送到阵列的每个输入端。内存向量定义为
m =
g ⊙ mj + g ⊙ g , (39)
其中,k是逐元素乘积,并且使用等式(32)至等式(34)计算门。(36)、[57].
空间LSTM是MDLSTM[64]的一个特例,它是一个用于图像建模的二维网格。该模型通过顺序阅读其小邻域中的像素来生成图像中特定像素的隐藏状态向量[64]。像素的状态通过将状态隐藏向量馈送到以下项的因式分解混合来生成:
条件高斯尺度混合(MCGSM)[64].
6)网格LSTM:随着网格大小和LSTM空间深度的增加,MDLSTM模型变得不稳定。网格LSTM模型通过改变输出内存向量的计算提供了一种解决方案。该方法针对多维数据的深度顺序计算。该模型将LSTM单元沿着输入数据的时空维度以及层之间连接起来。与MDLSTM模型不同,块计算N个变换并输出N个隐藏状态向量和N个存储器向量。 维度的隐藏状态向量为
h= LSTM(H,m,W,W,W,Wc),(40)
其中LSTM(·)是标准LSTM过程[57],H是输入隐藏状态向量的级联,定义为
H =[h1,.,hN]T. (四十一)
图10:时间时差分回流神经网络(dRNN)的架构输入门和遗忘门分别由时间-1和的DoS控制,[65].
二维网格LSTM网络将LSTM单元沿着空间维度添加到堆叠的LSTM。三维或更多维LSTM类似于MSLSTM,然而,已经沿着空间深度沿着添加了LSTM单元并且执行N路交互。网格LSTM的更多细节在[57]中提供。.
7)差分递归神经网络:当LSTM
在理解长期序列依赖性方面表现出了更好的学习能力,但有人认为,其门控机制无法全面区分序列中的显着和非显着信息[65]。因此,LSTM无法捕获任务中的时空动态模式,例如动作识别[65],其中序列通常可以包含许多非显着帧。差分递归神经网络(dRNN)涉及检测和捕获重要的时空序列以学习输入中的动作动态[65]dRNN中的LSTM门监控连续帧之间重要运动的信息增益的变化。通过计算隐藏状态s的导数(DoS),可以检测到信息的这种变化。一个大的拒绝服务揭示了行为状态的突然变化,这意味着时空结构包含信息动力学。在这种情况下,图10中的门允许信息流更新定义为
s=g⊙s1+g⊙s1/2(42)
哪里
s1/2= tanh(Whsht-1+WxsX+Bs)。(四十三)
DoSds/d量化了每个时间t的信息变化。小的DoS使存储单元远离输入的任何影响。更具体地说,该单元控制输入门,
g=σ(Σr
(44)
遗忘门单元作为
g=σ(Σr
(45)
输出门单元为
g=σ(Σr
12
表III:主要长短期记忆(LSTM)架构之间的比较。
|
|
|
LSTM |
|
|
S-LSTM |
|
|
Stacked LSTM |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
其中,DoS具有R的上限。BPTT可以训练dRNN。与简单的LSTM相比,1阶和2阶dRNN具有更好的训练性能;
然而,它具有额外计算复杂度。
8)其他LSTM模型局部-全局LSTM(LG-LSTM)架构最初是为语义对象解析而提出的[66],其目标是提高复杂局部(像素邻域)和全局(整个图像)上下文的利用率。关于图像的每个位置的实际信息。当前版本的LG-LSTM已经将LSTM层的堆栈添加到中间卷积层。 这种技术直接增强了视觉特征,并允许对网络参数进行端到端学习[66]LG-LSTM与各种CNN模型的性能比较显示出高精度性能[66]。预计该模型可以通过用LG-LSTM层替换所有卷积层来实现更大的成功。
匹配LSTM(mLSTM)最初是为了自然语言推理而提出的。匹配机制存储(记住)最终预测的关键结果,并忘记不太重要的匹配[62]。 mLSTM的最后一个隐藏状态有助于预测前提和假设之间的关系。 与其他方法的不同之处在于,mLSTM不是将前提和假设嵌入整个句子,而是将假设与前提进行逐字匹配[62].
RNN在时间和频率上的递归,称为F-T-LSTM,在[67]中提出。该模型通过使用频率LSTM扫描f个频带来生成频谱信息的总和玛丽。 然后,它将输出层的激活作为LSTM的输入。频率LSTM的公式类似于时间LSTM[67]在降水临近预报的输入到状态和状态到状态转换中具有卷积结构的卷积LSTM(ConvLSTM)模型在[68]中提出。/span>多个ConvLSTM层来构建
图11:门控递归单元GRU)。更新门z决定是否要用新的隐藏状态h更新隐藏状态。复位门控制是否需要忽略先前的隐藏状态。
一个端到端的可训练模型[68]。表III中提供了主要LSTM模型之间的比较。
F. Gated Recurrent Unit
虽然LSTM已经被证明是避免梯度消失或爆炸的可行选择,但是它们在其架构中给定多个存储器单元时具有更高的存储器要求。递归单元自适应地捕获门控递归单元(GRU)中不同时间尺度的依赖关系[69]类似于LSTM单元,GRU具有门控单元,可以调节单元内部的信息流,但没有<sp其具有分离的存储器单元。与LSTM相比,GRU在每个时间步暴露整个状态[70],并计算现有状态和新计算的状态之间的线性和。GRU的框图如图11所示。GRU中的激活被线性建模为
~
h=(1 -z)h1+zh,(47)
其中更新门zt控制激活的更新瓦尔ue,定义为
z= σ(Wzx+Uzh1),(48)
13
其中W和U是要学习的权重矩阵。候选激活是
t
= tanh(Whx+Uh(rh1)),(49)
其中rt是一组休息门,定义为
r= σ(Wx+Uh1)(50)
其允许单元通过阅读输入序列的第一个符号来忘记先前的状态。GRU网络和LSTM网络之间的一些相似之处和差异在[69]中概述,研究发现,两个模型仅在某些测试中表现得比另一个更好,这表明无法建议哪个模型更好。
G. 记忆网络
传统的RNN具有较小的内存大小来存储来自过去输入的特征[71],[72]。记忆神经网络(MemNN)利用成功的学习方法进行推理,具有可读和可写的记忆组件。 MemNN是一个对象数组,由输入、响应、生成和输出特征映射组件组成[71],[73]它将输入转换为内部特征表示,然后根据新输入更新记忆。然后,它使用输入和更新的存储器来计算输出特征并对其进行解码以产生输出[71]该网络不容易使用BPTT进行训练,并且需要在每一层进行监督[74]MemNN的版本是端到端MemNN,其可以从输入-输出对端到端地训练[74]。 它在若干时间步后生成输出,中间步骤使用存储器输入/输出操作来更新内部状态[74]。.
递归记忆网络(RMN)利用了LSTM和MemNN[75]。RMN中的内存块获取LSTM的隐藏状态,并使用注意力机制将其与最近的输入进行比较。RMN算法分析训练模型的注意力权重,并随着时间的推移从LSTM中保留的信息中提取知识[75]。该模型是为语言建模而开发的,并在三个大型数据集上进行了测试艾德。结果表明,该算法的性能与LSTM模型相比,然而,该模型继承了LSTM和RMN的复杂性,需要进一步开发。
情景记忆是从语义和情景记忆中获得灵感的,这对于大脑中的复杂推理是必要的[73]。 情景记忆被称为动态记忆网络框架的记忆,它记住自传体细节[73]。这种记忆指的是对所存储的经验事实的一般化表征。事实是从以问题为条件的输入中检索出来的。通过对事实的推理,这导致了最终的陈述。该模块对事实执行多次传递,同时关注不同的事实。 每个通道的输出被称为一个片段,它被汇总到内存中[73]。与MemNN相关的工作是动态记忆网络(DMN)。 MemNN中添加的内存组件可以提高其学习长期依赖关系的性能[71]这种方法已经显示出自然语言问答的性能
st
xt
图图12:具有上下文特征的递归神经网络(长记忆)。
应用[73] MemNN的泛化和输出特征图部分与DMS中的情景记忆具有一些类似的功能。MemNN独立处理句子[73],而DMS通过序列模型处理句子[73]FacebookbAbI数据集上的性能结果显示,DMN通过18个任务,准确率超过95%,而MemNN通过16个任务准确度较低[73]情景记忆的几个步骤在[73]中讨论.
H.结构约束递归神经网络
另一种处理消失梯度问题的模型是结构约束递归神经网络(SCRN)。该网络B对隐藏状态在训练过程中快速变化的观察,如图12所示。[6]在这种方法中,通过添加一个特定的递归矩阵来扩展SCRN结构,该矩阵等于识别长期依赖性。全连接的递归矩阵(称为隐藏层)产生一组快速变化的隐藏单元,而对角矩阵(称为上下文层)支持上下文单元状态的缓慢变化[6]。=96>由外部输入供电。 虽然这个模型可以防止递归矩阵货车的梯度,但它在训练中并不有效[6]。在这个模型中,对于大小为d的字典,t是上下文单元的状态,定义为
s=(1α)Bx+ αs1,(51)
其中α是上下文层权重,通常设置为0。95,Bd×s是上下文嵌入矩阵,x是输入。隐藏层定义为
h= σ(Ps+Ax+Rh1),(52)
其中Ad×m是token嵌入矩阵,Pp×m是隐藏层和上下文层之间的连接矩阵,Rm×m是隐藏层