0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

独立循环神经(IndRNN)网络介绍

zhKF_jqr_AI 来源:未知 作者:李倩 2018-03-16 16:05 次阅读

编者按:近日,中国电子科学技术大学和澳大利亚伍伦贡大学的研究者合作发表论文,介绍了他们创造的独立循环神经网络(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要好。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4572

    浏览量

    98737

原文标题:独立循环神经网络(IndRNN):打造更长更深的RNN

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是RNN (循环神经网络)?

    循环神经网络 (RNN) 是一种深度学习结构,它使用过去的信息来提高网络处理当前和将来输入的性能。RNN 的独特之处在于该网络包含隐藏状态和循环
    发表于 02-29 14:56 974次阅读
    什么是RNN (<b class='flag-5'>循环</b><b class='flag-5'>神经网络</b>)?

    神经网络基本介绍

    神经网络基本介绍
    发表于 01-04 13:41

    【案例分享】基于BP算法的前馈神经网络

    传播的,不会回流),区别于循环神经网络RNN。BP算法(Back Propagation):误差反向传播算法,用于更新网络中的权重。BP神经网络思想:表面上:1. 数据信息的前向传播,
    发表于 07-21 04:00

    【案例分享】ART神经网络与SOM神经网络

    今天学习了两个神经网络,分别是自适应谐振(ART)神经网络与自组织映射(SOM)神经网络。整体感觉不是很难,只不过一些最基础的概念容易理解不清。首先ART神经网络是竞争学习的一个代表,
    发表于 07-21 04:30

    卷积神经网络CNN介绍

    【深度学习】卷积神经网络CNN
    发表于 06-14 18:55

    图像预处理和改进神经网络推理的简要介绍

    为提升识别准确率,采用改进神经网络,通过Mnist数据集进行训练。整体处理过程分为两步:图像预处理和改进神经网络推理。图像预处理主要根据图像的特征,将数据处理成规范的格式,而改进神经网络推理主要用于输出结果。 整个过程分为两个步
    发表于 12-23 08:07

    神经网络基本介绍

    神经网络基本介绍,人工神经网络(简称神经网络,Neural Network)是模拟人脑思维方式的数学模型。 神经网络是在现代生物
    发表于 12-06 15:07 0次下载

    循环神经网络(RNN)的详细介绍

    循环神经网络可以用于文本生成、机器翻译还有看图描述等,在这些场景中很多都出现了RNN的身影。
    的头像 发表于 05-11 14:58 1.3w次阅读
    <b class='flag-5'>循环</b><b class='flag-5'>神经网络</b>(RNN)的详细<b class='flag-5'>介绍</b>

    浅析循环神经网络的概念、变体及应用

    AI对话的未来已经取得了第一个重大突破,这一切都要感谢语言建模的发电厂,循环神经网络
    的头像 发表于 10-04 08:52 4561次阅读

    如何使用混合卷积神经网络循环神经网络进行入侵检测模型的设计

    针对电力信息网络中的高级持续性威胁问题,提出一种基于混合卷积神经网络( CNN)和循环神经网络( RNN)的入侵检测模型。该模型根据网络数据
    发表于 12-12 17:27 19次下载
    如何使用混合卷积<b class='flag-5'>神经网络</b>和<b class='flag-5'>循环</b><b class='flag-5'>神经网络</b>进行入侵检测模型的设计

    循环神经网络(RNN)和(LSTM)初学者指南

    最近,有一篇入门文章引发了不少关注。文章中详细介绍循环神经网络(RNN),及其变体长短期记忆(LSTM)背后的原理。
    发表于 02-05 13:43 718次阅读

    循环神经网络是如何工作的

    关于时间展开的循环神经网络,在序列结束时具有单个输出。
    发表于 07-05 14:44 959次阅读
    <b class='flag-5'>循环</b><b class='flag-5'>神经网络</b>是如何工作的

    基于层级循环神经网络的X线线图像腰椎识别

    基于层级循环神经网络的X线线图像腰椎识别
    发表于 06-27 11:24 23次下载

    基于循环神经网络的Modbus/TCP安全漏洞测试

    基于循环神经网络的Modbus/TCP安全漏洞测试
    发表于 06-27 16:39 30次下载

    PyTorch教程之循环神经网络

    电子发烧友网站提供《PyTorch教程之循环神经网络.pdf》资料免费下载
    发表于 06-05 09:52 0次下载
    PyTorch教程之<b class='flag-5'>循环</b><b class='flag-5'>神经网络</b>