编者按:近日,中国电子科学技术大学和澳大利亚伍伦贡大学的研究者合作发表论文,介绍了他们创造的独立循环神经网络(indrnn),这种新型rnn能有效解决网络收敛时的梯度爆炸和消失问题,并能够处理更长的序列。以下是论智对原文的大致编译,如有不足之处还请指正。
循环神经网络(rnn)已经被广泛用于序列数据的处理。然而,由于常见的梯度消失和爆炸问题以及很难学习长期模式,rnn通常难以训练。为了解决这些问题,研究人员提出了长短期记忆(lstm)和门控循环单元(gru),但使用双曲正切和sigmoid函数又会使梯度随图层衰减。因此,构建高效可训练的深度网络是具有挑战性的任务。另外,rnn图层中的所有神经元都纠缠在一起,它们的行为很难解释。为了解决这些问题,本文提出了一种新型rnn模式,成为独立循环神经网络(indrnn),其中每层中的神经元都相互独立,并且它们跨层连接。最终实验结果表明,indrnn管理起来很容易,能防止梯度爆炸和消失,同时还能让网络长期学习。
独立循环神经(indrnn)网络介绍
在这片论文中,我们提出了独立循环神经网络(indrnn),用公式可以表示成:
其中循环权重u是一个向量,⊙表示阿达马积(hadamard product)。同一图层中的每个神经元都与其他神经元不相连,通过叠加两层或更多层的indrnn,可以将神经元连接。对于第n个神经元,隐藏层hn,t可以通过以下公式得到:
其中wn和un分别表示第n行的输入权重和当前权重。每个神经元只接收当前状态隐藏层和输入其中的信息。也就是说indrnn中的每个神经元都有独立的时空特征。传统上,随着参数被共享,rnn被视为多层感知器。与传统的rnn不同,这次提出的indrnn将随时间独立地聚合空间模式。
indrnn随时间进行反向传播
对于神经网络每一层随时间进行的梯度反向传播,indrnn中的梯度可以对每个神经元单独计算,因为一层网络之间没有互相连接的部分。具体计算过程可参见原论文。
多层indrnn
如上所说,indrnn的同一个图层中的神经元是彼此独立的,通道间的信息会随时间在多层indrnn之间传播探索。为了说明这一点,我们将一个双层的indrnn和传统单层rnn进行比较。简单起见,indrnn和传统rnn都忽略了偏差。假设一个有n个神经元的双层神经网络,其中第二层的循环权重为零,那么就表示第二层只是一个完全连接层。
考虑到参数的数量,对于一个有n个神经元的rnn网络来说,输入的维数为m,则传统rnn的参数数量为m×n+n×n。而只有一层的indrnn的参数数量为m×n+n。对于一个两层的indrnn,其中每层都有n个神经元的网络来说,参数的数量为m×n+n×n+2×n。总之,虽然indrnn的神经元是彼此独立的,但多层indrnn中跨层的信息可以很好地得到解释。
基本的indrnn结构如图所示:
其中“weight”和“recurrent+relu”表示每一步处理输入的循环过程,relu是激活函数。通过堆叠这种基础架构,可以建立一个深度indrnn网络。由于权重层用来处理输入,那么它很自然地就扩展到其他多个图层中加深处理过程。同样,用来处理输入的图层也可以像cnn中的残差结构一样。由于indrnn的简单结构,我们可以很容易地将其扩展到不同的网络结构中。例如,除了简单的堆叠indrnn或者堆叠用于处理输入的图层,我们还可以以残差网络的方式进行堆叠。下图展示了残差indrnn的示例:
在每个步骤,梯度可以从恒等映射(identity mapping)直接传播到其它层。由于indrnn能随时间的推移解决梯度爆炸和消失的问题,梯度可以在不同步骤之间高效传播。因此,网络可以比传统的rnn更深更长。和其他网络一样,更深更长的indrnn网络可以进行端对端训练。
实验过程
接下来,就要对indrnn进行测试。首先是常用的adding problem,这是评估rnn模型性能的常用方法。两个长度为t的序列被输入到模型中,第一个序列在(0,1)范围内均匀采样,而第二个序列两个入口处为1,其余都为0。序列有三种长度,t=100、500和1000,分别用于实验,测试模型是否有长期记忆的能力。
参与实验对比的有传统采用tanh的rnn、lstm、irnn(采用relu的rnn)。rnn、lstm和irnn都只有一层,而indrnn有两层。每个模型包含128个隐藏单元,rnn、lstm和两层indrnn的参数数量分别为16k、67k和17k。最终测试结果如下:
首先,对短序列来说(t=100),大多数模型表现得很好(除了采用tanh的rnn),它们收敛到一个非常小的错误(比标准还要小)。
当序列长度增加时,irnn和lstm模型出现了收敛困难。当长度达到1000时,irnn和lstm无法减少错误。然而,indrnn仍然可以将错误迅速收敛。这表明indrnn的长期记忆优于传统rnn和lstm。
从表格中我们也能看出,传统rnn和lstm只能维持在中等长度记忆(500到1000)。为了研究indrnn在超长序列上的记忆,我们又做了一个5000的实验,如下图所示:
可以看出,indrnn仍然表现得很好。注意有噪音的出现,是因为indrnn的初始学习速率(2×10-4)较大,一旦学习速率降低,模型性能就更加稳定。这说明indrnn能有效地解决梯度爆炸和消失的问题。
序列mnist分类
序列mnist的分类是评估rnn模型的又一常用方法。网络按顺序读取mnist数字的像素,之后执行分类。为了让任务更加困难,mnist的像素被随机交换。由于采用tanh的rnn不会以高精度收敛,只有采用relu的indrnn能被评估。这里我们使用了6层indrnn,每层有128个神经元。为了加速训练,每层之后插入了批标准化(bn)。结果如下表所示,与现有方法相比,indrnn的性能更好。
其他实验
除了上述两个实验,研究人员还对indrnn进行了语言建模测试和基于骨架的动作识别。语言建模是在词汇数据集treebank上进行的。结果如下:
与现有方法相比,indrnn比传统的rnn和lstm表现的更好。
动作识别测试是在ntu rgb+d数据集上进行的,该数据及是目前动作识别最大的数据集,它包含56880个序列,其中包括60中动作类别。最终的评估及过如下:
indrnn的性能比rnn和lstm的性能明显要好。
结语
这篇论文中,研究人员介绍了独立循环神经网络(indrnn),其中每个图层中的神经元都是相互独立的,并且它能很好地解决梯度爆炸和消失的问题,性能也比传统的rnn和lstm要好。
鸿蒙概念股龙头一览代码 鸿蒙概念股龙头是哪几只
IC设计与半导体库存调整或将在第三季度恢复平衡
阿里巴巴推出每秒撰写2万行广告文案的AI新工具
无铅转换的加速进程与SMT的问题
商汤科技2021花式打卡新玩法
独立循环神经(IndRNN)网络介绍
机器学习模型可以帮助化学家更快地制造出具有更高功效的分子
深度解析国内激光设备市场 激光焊接或迎爆发元年
PCB设计中,掌握各层的意义才是基础的
电磁干扰EMI如何解决传导干扰?
浅谈贝加莱灵活的包装控制技术
基于AKH-0.66K系列开口式电流互感器的功能和技术参数
华为回应:从芯片问题上看,中国所有行业都应该清醒
SMT加工避免PCB翘曲的常见方法
微软警告你,VR别玩过不然就像抽“大麻”
医用缝合针弹性测试仪采购建议,希望对您有帮助!
光伏直流熔断器为什么要做UL248认证?意义何在 ?
小米6评测:不一样的美,七年巅峰之作
虹科方案 | 车辆零部件温度采集解决方案
中国自主研发的机器人首次成功登顶珠峰