前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >引入额外门控运算,LSTM稍做修改,性能便堪比Transformer-XL

引入额外门控运算,LSTM稍做修改,性能便堪比Transformer-XL

作者头像
AI科技评论
发布于 2020-02-21 03:36:17
发布于 2020-02-21 03:36:17
4.8K0
举报
文章被收录于专栏:AI科技评论AI科技评论

作者 | 幻风

责编 | 贾伟

AAAI 2020 已经于 2月 7日 - 12 日在纽约举办,对于 AI 领域的研究者来讲,接下来最近的一个盛会将是4月26日在非洲埃塞俄比亚(亚斯亚贝巴)举办的 ICLR 2020。

ICLR会议是由深度学习三巨头之二的 Yoshua Bengio 和 Yann LeCun 牵头于2013年创办,旨在关注有关深度学习各个方面的前沿研究。尽管ICLR 2020也不过是第九届会议,但这个会议却已经成为业界人士心目中的顶级会议。特别是在前段时间清华发布的新版AI顶会评级中,ICLR更是被评为A级会议

本届ICLR 会议共共有 2594篇投稿,其中 687篇论文被接收,接收率为26.5%。本文为DeepMind和剑桥大学研究人员联合发表在ICLR 2020上的 Oral 论文,该论文在OpenReview网站上的评分为 6-8-8。

作者对该论文的介绍为:

An LSTM extension with state-of-the-art language modelling results. 一个LSTM 扩展,能够取得 SOTA 语言模型结果。

论文地址:https://arxiv.org/pdf/1909.01792.pdf

代码复现:https://github.com/deepmind/lamb

先进的神经网络模型的应用是自然语言理解(Natural Language Processing)的众多任务取得先进性进展的根本原因。但是现有的神经网络模型仍然不完美,比如存在泛化能力和语言建模能力不强等诸多问题。

针对这个问题,本论文对在自然语言理解中最常使用的神经网络模型 Long Short-Term Memory(LSTM)进行了改进,提出了形变的LSTM,通过引入额外的门控运算,使得输入x和状态hprw在输入到LSTM之前进行多轮交互计算,最终使得输入和上下文之间具有更加丰富的交互表示。这种改进并不复杂,但是这种简单的修改确在语言模型上取得了显著的效果。

研究意义

LSTM来源于循环神经网络RNN,其核心是解决了RNN所存在的遗忘性问题。

所以LSTM在普通RNN基础上,在隐藏层各神经单元中增加记忆单元,从而使时间序列上的记忆信息可控,每次在隐藏层各单元间传递时通过几个可控门(遗忘门、输入门、输出门),可以控制之前信息和当前信息的记忆和遗忘程度,从而使RNN网络具备了长期记忆功能,对于RNN的实际应用,有巨大作用。

LSTM已经成为了众多NLP任务的标配,甚至成为了现在主流的序列到序列模型的基础性组件,所以在LSTM中加以创新是非常有意义的。

主要思路

如图1所示,我们可以看到输入xt和状态ht是独立的输入到LSTM中。

图1 LSTM

作者认为这会带来一些问题,由于输入x和状态ht它们只在LSTM内部进行交互,在这之前缺乏交互,这可能会导致上下文信息的丢失。为此,本论文提出Mogrifier LSTM,不改变LSTM本身的结构,而是让输入和状态首先进行交互,然后通过这种方式增强模型的上下文建模能力。

图 2

如上述公式所示,我们可以看到原始的LSTM的计算步骤,其中f是遗忘门用来控制前一个时刻的记忆Cprev保留多少记忆;i是输入门,用来控制当前的信息j应输入多少;o是输出门(output),用来控制当前记忆单元应该输出多少。

本文并没有改变如图2所示的计算过程,也就是说并没有改变LSTM的原始结构。它将输入到LSTM中的x和hprev改变了,具体过程如图 3 所示。

图 3

如图3 所示,我们可以看到当x和h输入到LSTM之前进行了多轮的交互计算,其中x-1就是x,而h0就是hprev,它们经过的交互轮数记为r,r是一个超参数,当r=0的时候,相当于x和hprev直接输入到LSTM中,此时相当于原始的LSTM计算。将这个计算过程通过数学方式表示:

图 4

如公式所示,先根据公式(1),通过x-1和h0计算得到x1,然后根据公式(2),通过x1和h0计算得到h2,经过多轮迭代交互,最终得到融合x和h信息的h4和x5,然后将其作为输入,输入到LSTM中,进行如图2所示的计算。

图 4 所示的x和h的交互计算过程就是本篇论文的核心创新点,作者认为通过这种交互是计算可以增强输入和上下文之间的信息表示,但是这是作者的猜测,因为很多深度学习模型目前还不具备可解释性,但是从实验角度可以看出,通过这种方式构建的新型LSTM模型确实比原始的LSTM效果要好。下面通过实验看一下,改进的LSTM效果如何?

实验

本论文使用的数据集分为两类,一类是字级别的数据集,另外一类是词级别的数据集。其中字级别的数据集有Enwik8、PTB和MWC,而词级别的数据集有:PTB和Wikitext-2。下面看一下在这些数据集上的改进LSTM的表现。

图5参数解释:dn表示神经网络有多少层。MoS是混合softmax。MC是蒙托卡罗随机失活。

如图5所示,改进的LSTM在词级别的实验效果全面超越了原始的LSTM模型,可以证明改进之后的LSTM是具有意义的,但是它并没有超过当前主流的Transformer-XL。

如图6所示,改进的LSTM在字级别上的实验结果。可以看到,改进的LSTM比原始的 LSTM都要好,但是仍然比Transformer-XL差。

图6

之后该文的作者针对于改进的模型又做了几个小实验,第一个实验是判断交互轮数r对模型的影响,如图7所示。

图7

如图7所示,我们可以看到当交互轮数的增多,模型的效果越来越好,而在轮数r=4的时候模型效果达到最佳水平。

图8

之后作者又将如图3所示的模型进行改进,使得每个门计算都依赖最初的x和h。这个方法叫做no zigzag,如图8所示。为了降低模型的复杂度,将Qi和Ri矩阵分解为低秩的矩阵的乘积,这个叫做Full rank,将其与原始的LSTM、改进的LSTM、mLSTM进行比较,实现效果如图9所示。

图9

通过如图9所示的实验结果,可以看到Mogrifier中对Full rank、no zigzag、mLSTM(Multiplicative LSTM)的比较。可以看到,Full rank效果提升不大,而no zigzag有较大的提升。

之后作者又进行了逆复述任务,具体来说就是模型首先读一段文本,在收到一个特定字符后,再倒着输出该文本。通过这种方式可以检测模型是否很好的融合了上下文的信息表示,因为只有更好的学习上下文,才可以更好的完成逆复述任务。本论文将改进LSTM和LSTM模型进行了比较,实验结果如图10所示。

图10

如图10所示,可以看到对长度小于100的句子而言,二者都表现得很好,但随着文本长度的增加,Mogrifer逐渐能和LSTM拉开差距,尤其是在字典很大(10K)的时候。通过实验结果,我们可以得到一个结论:改进的LSTM可以显著的增强上下文的信息,将输入信息更好的融入到模型中。

总结

本论文的核心就是如图3所示的改进,作者为了证明改进的LSTM可以取得较好的效果,做了诸多的实验,作者认为能够取得较好效果的主要原因是因为使用这种方式可以显著增强上下文的信息表示,这也是原始的LSTM模型所存在的问题。但是这只是作者通过实验的猜测,这也是深度学习的局限性,不具备可解释性,所以作者做了诸多的假设。

个人的感悟:目前改进的RNN网络有多达上千种,比较有名是LSTM和GRU。本文将LSTM进行了改进,那么同理是否可以对GRU进行类似的改进,或者改进如图3所示的计算过程,使用新的计算方式或者引入注意力机制,通过注意力机制有选择的过滤一些次要特征,从而使主要特征更加显著。这也证明了我长期的一个观念,融合更多的信息到神经网络中,模型的集成度越高,神经网络的效果可能会越好,我觉得任何的模型都可以朝着这个方向进行轻微的改进,也许可以取得不错的效果。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI科技评论 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
使用机器人操作系统ROS 2和仿真软件Gazebo 9搭建机器人教程(一)
参考链接:https://github.com/bunchofcoders/basic_bocbot
zhangrelay
2020/02/19
3.9K0
使用机器人操作系统ROS 2和仿真软件Gazebo 9搭建机器人教程(一)
ROS2 框架下运行 Python
ROS2是怎么搭建这个房子的呢?它是要先创建一个统一的固定名字的文件夹“src”,然后在这个文件夹下面再去具体定义各个房间。
为为为什么
2024/07/12
7190
ROS2编程基础课程--中间件
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/19
1.2K0
小米机器狗铁蛋资料整理 cyberdog ros2
基本信息 铁蛋默认用户是mi, 密码为123 使用USB线连接Download接口, 可通过ssh mi@192.168.55.1连接铁蛋进行内部操作 软件架构 我们基于ROS 2实现了大部分的机器人应用, 如架构图所示, 包括多设备链接、多模态感知、多模态人机交互、自主决策、空间定位、导航和目标追踪等功能. 目前使用的DDS中间件是Cyclone DDS, ROS 2的版本为Galactic.
zhangrelay
2022/05/01
3.7K0
小米机器狗铁蛋资料整理 cyberdog ros2
webots和ros2笔记02-启程
看完01-资料篇https://zhangrelay.blog.csdn.net/article/details/112670542。
zhangrelay
2021/03/03
8750
ROS2编程基础课程--安装
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/18
1.2K0
ROS2机器人应用简明教程4工区
工区/工作区/工作空间(workspace简写为ws)是机器人操作系统核心概念之一。
zhangrelay
2020/07/03
9350
ROS2机器人应用简明教程4工区
ROS2之OpenCV的windows和linux差异在哪里
使用 rosdep install 看到 wnen 的错误只是 rosdep 告诉它不知道给定操作系统的“opencv2”是什么,因此它无法安装满足 cv_basics pacakge 的 package.xml 中列出的要求的东西.至于解决方案,建议参考问题#232795,该问题很好地解释了 rosdep 的工作原理以及您接下来可以做什么。
zhangrelay
2022/06/15
7590
ROS2极简总结-文件系统
$ sudo apt install ros-<distro>-package-name
zhangrelay
2021/12/02
3.3K0
ROS2极简总结-文件系统
【C++】ROS:ROS2环境配置与基础示例
ROS 2 (Robot Operating System 2)是一个开源的机器人操作系统,它是ROS(Robot Operating System)的下一代版本。它提供了一系列工具、库和约定,用于构建机器人应用程序。与ROS 1相比,ROS 2具有更强大的功能,更好的性能和更好的可靠性。
DevFrank
2024/07/24
2.2K0
【C++】ROS:ROS2环境配置与基础示例
Webots和ROS2使用说明(部分翻译)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/18
1.7K0
Webots和ROS2使用说明(部分翻译)
ROS2机器人编程简述humble-第二章-DEVELOPING THE FIRST NODE .2
0.1ROS2机器人编程简述新书推荐-A Concise Introduction to Robot Programming with ROS2
zhangrelay
2023/02/03
6290
ROS学习——第1讲 ROS概述及环境搭建
好事文章地址:https://cloud.tencent.com/developer/article/2469534
Arya
2024/11/22
6920
ROS学习——第1讲 ROS概述及环境搭建
ROS2编程基础课程--Actions
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/19
1.4K0
Tello和ROS的一些资料
之前,一些博文给出了Cozmo和Vector等地面小型机器人的资料,这篇博文,针对空中机器人---Tello。
zhangrelay
2019/01/31
2.6K0
Tello和ROS的一些资料
详细分析一个ROS2 CMakeLists.txt文件
ROS2的构建系统ament_cmake是基于CMake改进而来的。本篇文章我们详细介绍一下ament_cmake常用的语句。
首飞
2022/07/17
2.9K0
详细分析一个ROS2 CMakeLists.txt文件
Webots2021b和ROS2调试笔记21-07-27
先上结论: 凉 凉凉 透心凉 webots2021b刚发布时间不长,其ROS2接口包也不全。 2021b(win10)安装包小,很多库需要启动时联网下载。 很多节点不支持windows哦!如下: [WARNING] [webots_robotic_arm_node.EXE-2]: 'SIGINT' sent to process[webots_robotic_arm_node.EXE-2] not supported on Windows, escalating to 'SIGTERM' 还调试个毛线
zhangrelay
2021/12/02
7750
Webots2021b和ROS2调试笔记21-07-27
ROS1/2机器人操作系统发行版本(Distributions)和编译系统(Build Systems)
所有书都不可能是一本完备的 ROS 参考手册。几乎可以肯定,要真正动手使用 ROS 将要了解更多的细节。幸运的是,网上有关 ROS1 和 ROS2 的信息十分丰富。
zhangrelay
2022/05/01
1.3K0
ROS1/2机器人操作系统发行版本(Distributions)和编译系统(Build Systems)
ROS2与Rviz2的贪吃蛇代码学习
目前,这仅rclcpp针对 ROS2 Galactic/Humble 进行了测试,尽管它很可能在任何稍旧的设备上都可以正常工作。此外,您需要安装 rviz2 和 ncurses(用于用户输入),通过sudo apt-get install libncurses-dev.
zhangrelay
2022/06/05
5670
ROS2与Rviz2的贪吃蛇代码学习
ROS 2 Humble Hawksbill 之 f1tenth gym
# F1TENTH gym environment ROS2 communication bridge This is a containerized ROS communication bridge for the F1TENTH gym environment that turns it into a simulation in ROS2.
zhangrelay
2022/06/30
1.5K0
ROS 2 Humble Hawksbill 之 f1tenth gym
推荐阅读
相关推荐
使用机器人操作系统ROS 2和仿真软件Gazebo 9搭建机器人教程(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档