ICLR 2020 | Reformer ,一种高效的Transformer

本文介绍的是iclr2020入选 oral 论文《reformer: the efficient transformer》,作者来自uc 伯克利和谷歌大脑。

作者 | 李光明

编辑 | 丛 末

ICLR 2020 | Reformer ,一种高效的Transformer

论文地址:https://openreview.net/pdf?id=rkgNKkHtvB

Transformer是NLP中广为应用的成熟技术,在许多任务中取得了骄人的成绩,尤其是长序列文本上表现突出,但却极其耗费算力和内存资源,Transformer网络一层的参数量约0.5B,需要2G的内存空间,单层网络的Transformer在单台机器上尚可满足,但鉴于以下考虑,整个Transformer网络所需要的资源是惊人的:

一个N层的网络需要的内存资源要多于一层所需内存的N倍,因为同时需要存储激活结果,在反向传播时使用。Transformer前馈全连接神经网络的宽度(神经单元数)要比attention激活的宽度(可理解为embedding的size)多,需要更多的内存消耗。对一个长度为L的序列,Attention层的复杂度是,这对长序列文本处理是无法接受的。

针对上述问题,这篇文章通过下面几项技术解决上面提到的几个问题:

使用可逆残差层取代标准残差层,在训练阶段只需要存储一层的激活结果而不是N层(N是网络层数)(消除了网络中N的倍数)。分离前馈全连接层的激活部分,分区块进行处理,消除对内存的消耗。使用局部敏感哈希(Local-Sensitive Hashing, LSH)技术把计算attention部分的复杂度(主要来自于点乘)从降至(其中L代表序列长度)。

1

LSH Attention

Transformer的注意力计算公式(encoder和decoder相同)如下:

ICLR 2020 | Reformer ,一种高效的Transformer

不妨假设Q, K, V的 shape 都是[, , ],计算复杂度主要来源于,其 shape为[, , ],处理64k长度的序列时,即使 为1,一个64k * 64k的 float矩阵需要16G内存,这通常是不切实际的。

其实,矩阵并不需要全部存储在内存中,只需要计算每个query 的存储在内存中,反向传播梯度时,再重新计算一次即可,虽然低效,但能够节省内存(文中将此方法作为实验阶段的baseline)。

进一步分析,其实并不需要计算和全部keys的结果,因为点乘的最大值会在softmax之后得到最大的权重,从而在attention的结果中影响最大,因此只需要关心与相近的key即可(得到较大的点乘值),这样可以大幅提升效率。LSH是寻找最近邻的有效手段,它会赋予每个向量一个Hash值,并且相近的向量会大概率获得相同的Hash值,相距较远的向量则不同。

ICLR 2020 | Reformer ,一种高效的Transformer

上图是LSH的一个简单示意图,在示意图的上部分,x和y不属于近邻,所以在三次随意旋转后,有两次投影都不一样;而在示意图的下部分,x和y相距很近,在三次的随意旋转后,三次都投影都一样,这就是LSH的基本原理。

为计算LSH attention,首先重写的一次attention计算如下:

其中表示需要关注的key集合,是分区函数(可以理解成softmax的分母),为了书写方便,这里省去了。为了批处理方便,把公式进一步修改为:

ICLR 2020 | Reformer ,一种高效的Transformer

其中是比更大的集合(可以理解成全集),从公式可以看出,如果不属于的都被置为正无穷(趋近于0),相当于对应的 key 被 mask 掉了。LSH 的作用就是生成,仅限与在同一个 Hash 桶中的 key 才会参与 attention 计算,满足:

ICLR 2020 | Reformer ,一种高效的Transformer

下图的分别表示传统的系数attention矩阵,以及根据Hash分桶排序后的attention矩阵,从图中可以看出Hash值分桶可能发生不均匀的情况(跨多个桶的批处理是比较困难的),而且一个桶内的queries和keys数量也不一定相等,甚至有可能存在桶中只有queries而没有keys的情况。

为了解决这个问题,首先通过确保。接下来根据桶号和桶内序列位置对 queries 进行双层排序,排序后可以得到一个新的排序,排序后的 attention 矩阵,同一个桶的将聚集在对角线附近,如下图c所示(Q=K,文中的设定,实验阶段会验证此设定不会造成太大影响),接下来可以定义一种批处理方法,使得排序后的 m 个连续的块相互关联,如下图d所示,关联规则是后面的块只需要往前看一个块,并对设置如下:

其中(认为桶的长度超过平均桶长度两倍的概率很小)

ICLR 2020 | Reformer ,一种高效的Transformer

LSH attention的整个处理流程如下图所示:

文心一言 文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

文心一言 1008 查看详情 文心一言

ICLR 2020 | Reformer ,一种高效的Transformer

单个Hash函数仍然存在较小概率导致相似的item不能分到相同的桶里,可以通过多轮Hash函数避免这个问题,多轮Hash使用不同的Hash函数,有:

ICLR 2020 | Reformer ,一种高效的Transformer

其中

ICLR 2020 | Reformer ,一种高效的Transformer

多轮Hash过程可以并行。

2

可逆Transformer

可逆残差网络的思路是在反向传播梯度时,仅依赖模型参数,就可以利用后续网络层恢复任何给定层的激活结果,从而节省内存空间。标准的残差层是从一个输入到一个输出 的映射,而可逆层的输入输出都是成对的: ,计算公式如下:

ICLR 2020 | Reformer ,一种高效的Transformer
ICLR 2020 | Reformer ,一种高效的Transformer

逆向过程通过减残差实现:

ICLR 2020 | Reformer ,一种高效的Transformer
ICLR 2020 | Reformer ,一种高效的Transformer

将可逆残差网络的思想应用到 Transformer 中,充分结合 Attention 层和 Feed-Forward 层,上式中的变成 Attention 层,变成 Feed-Forward 层,于是有:

ICLR 2020 | Reformer ,一种高效的Transformer
ICLR 2020 | Reformer ,一种高效的Transformer

3

分块

Transformer 前馈网络的中间向量维度甚至更高维度,依然非常占用内存;其实,序列中不同位置的文本可以完全独立计算,因此可以拆分成多个区块并行计算:

ICLR 2020 | Reformer ,一种高效的Transformer

前述BP过程的可逆操作也可以分块并行。

4

实验

实验阶段会使用 imagenet64 和 enwik8-64K 两个数据集,依次验证可逆层和共享 Q-K(Q = K)不会对模型效果造成影响,进而分析验证 Hash Attention 和整个 Reformer 架构的结果。下图的困惑度曲线(信息论中衡量概率分布预测的指标,此处用来评价模型好坏)展示了共享 Q-K 对比独立的 Q-K (左)和可逆层(右)对比正常残差层在两个数据集上的效果,从图中可知共享 Q-K 和可逆层的使用并没有导致模型准度的降低。

ICLR 2020 | Reformer ,一种高效的Transformer

下图展示了LSH Attention的效果,随着hash函数量的增加,LSH Attention的精度损失随之减少,当hash函数量达到8个时,基本与full attention的效果持平。

ICLR 2020 | Reformer ,一种高效的Transformer

上图同时说明了hash函数量(可视为一个超参数)会影响Reformer整体效果,同样也会影响Reformer的性能,下图展示了hash函数量对性能的影响:

ICLR 2020 | Reformer ,一种高效的Transformer

随着序列长度的不断增加,full attention模型变得越来越慢,而Reformer基本变化不大,提速效果非常明显。

以上就是ICLR 2020 | Reformer ,一种高效的Transformer的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/268258.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
如何在项目中使用DeepSeek开源推理引擎?
上一篇 2026年10月13日 15:47:05
Flask Session购物车数量更新失效了,如何解决?
下一篇 2025年12月13日 22:16:40

相关推荐

  • 如何访问路由器配置界面 路由器管理地址全攻略

    如何访问路由器配置界面 路由器管理地址全攻略如何访问路由器配置界面 路由器管理地址全攻略如何访问路由器配置界面 路由器管理地址全攻略如何访问路由器配置界面 路由器管理地址全攻略

    答案是访问路由器配置界面需先获取IP地址,再通过浏览器登录。首先在电脑或手机上查找默认网关(如192.168.1.1),在浏览器地址栏输入该地址并回车,随后输入默认用户名和密码(通常为admin/admin或查看路由器标签)。若无法访问,检查IP是否正确、设备是否联网、重启设备或关闭防火墙。登录后可…

    2026年10月13日 • 用户投稿
    100
  • CPU怎么检测功耗 Intel XTU功耗监测设置教程

    CPU怎么检测功耗 Intel XTU功耗监测设置教程CPU怎么检测功耗 Intel XTU功耗监测设置教程CPU怎么检测功耗 Intel XTU功耗监测设置教程CPU怎么检测功耗 Intel XTU功耗监测设置教程

    要使用intel xtu监测cpu功耗,1.下载安装intel extreme tuning utility并重启电脑;2.启动软件并进入“system information”或“monitoring”界面;3.查看package power (w)、core power (w)、graphics…

    2026年10月13日 • 用户投稿
    100
  • 机器人操作系统二(ROS2)- 启程 Departure

    机器人操作系统二(ROS2)- 启程 Departure机器人操作系统二(ROS2)- 启程 Departure机器人操作系统二(ROS2)- 启程 Departure机器人操作系统二(ROS2)- 启程 Departure

    版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (creative commons) 是时候放下ROS1,开启ROS2的旅程了。It’s time to put down ROS1 and start the journey of ROS2. R…

    2026年10月13日 • 用户投稿
    100
  • QQ浏览器官方网站入口 QQ浏览器登录页面地址

    QQ浏览器官方网站入口 QQ浏览器登录页面地址QQ浏览器官方网站入口 QQ浏览器登录页面地址QQ浏览器官方网站入口 QQ浏览器登录页面地址QQ浏览器官方网站入口 QQ浏览器登录页面地址

    QQ浏览器官网入口为https://browser.qq.com,提供AI搜索、文档处理、多端同步等功能,支持跨平台使用。 QQ浏览器官方网站入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来QQ浏览器登录页面地址及官网入口,感兴趣的网友一起随小编来瞧瞧吧! https://browse…

    2026年10月13日 • 用户投稿
    600
  • CPU如何测试游戏性能 3DMark物理分数解析指南

    CPU如何测试游戏性能 3DMark物理分数解析指南CPU如何测试游戏性能 3DMark物理分数解析指南CPU如何测试游戏性能 3DMark物理分数解析指南CPU如何测试游戏性能 3DMark物理分数解析指南

    3dmark物理分数是评估cpu游戏性能的重要指标,其通过模拟游戏中的ai运算、物理碰撞和多线程处理任务来反映cpu的并行计算能力。要利用3dmark物理分数评估cpu性能,1.应选择time spy或fire strike测试场景;2.需关闭后台程序并设置高性能电源模式;3.运行测试并记录物理分数…

    2026年10月13日 • 用户投稿
    100
  • 微软 Windows Server 2025 首个热补丁将于秋季正式推行

    微软 Windows Server 2025 首个热补丁将于秋季正式推行微软 Windows Server 2025 首个热补丁将于秋季正式推行微软 Windows Server 2025 首个热补丁将于秋季正式推行微软 Windows Server 2025 首个热补丁将于秋季正式推行

    微软公司宣布,将以公开预览版的方式,针对 windows server 2025 评估版推出其首个热补丁功能,并计划于今年秋季全面上线。这一功能的引入,使得 windows server 2025 在处理关键安全更新时,无需经历传统的长时间重启流程,而是能够直接将更新分发并集成到系统中。 值得注意的…

    2026年10月13日 • 用户投稿
    400
  • win10系统语言改不了怎么办_win10系统语言修改教程

    首先检查并安装目标语言包,进入“设置-时间和语言-语言”添加所需语言并安装语言包;随后将该语言上移至首选列表顶部或设为默认,重启生效;若选项受限,需通过控制面板“高级设置”启用替代显示语言;若仍无效,使用DISM和SFC命令修复系统文件;可尝试修改注册表HKEY_LOCAL_MACHINESYSTE…

    2026年10月13日
    100
  • laravel如何使用Flysystem操作不同文件系统_Laravel Flysystem多文件系统操作方法

    laravel如何使用Flysystem操作不同文件系统_Laravel Flysystem多文件系统操作方法laravel如何使用Flysystem操作不同文件系统_Laravel Flysystem多文件系统操作方法laravel如何使用Flysystem操作不同文件系统_Laravel Flysystem多文件系统操作方法laravel如何使用Flysystem操作不同文件系统_Laravel Flysystem多文件系统操作方法

    Laravel通过Flysystem统一管理文件系统,支持本地、S3、OSS等多种存储。在config/filesystems.php中配置多个磁盘,如local、public、s3和oss,每个磁盘对应不同驱动和设置。使用Storage门面操作文件,如Storage::disk(‘pu…

    2026年10月13日 • 用户投稿
    100
  • 如何关闭杀毒软件_Win10彻底关闭Defender方法

    如何关闭杀毒软件_Win10彻底关闭Defender方法如何关闭杀毒软件_Win10彻底关闭Defender方法如何关闭杀毒软件_Win10彻底关闭Defender方法如何关闭杀毒软件_Win10彻底关闭Defender方法

    关闭windows defender的常见原因包括软件兼容性问题、避免与第三方杀毒软件冲突、开发者测试需求以及隐私顾虑;临时禁用可通过安全中心关闭实时保护等功能,适合短期操作,重启后可能自动恢复,安全性较高;若需长期禁用,则可使用组策略编辑器(专业版及以上)或注册表编辑器(所有版本),通过启用“关闭…

    2026年10月13日 • 用户投稿
    100
  • win10怎么清理dns缓存_win10刷新清理dns缓存命令

    win10怎么清理dns缓存_win10刷新清理dns缓存命令win10怎么清理dns缓存_win10刷新清理dns缓存命令win10怎么清理dns缓存_win10刷新清理dns缓存命令win10怎么清理dns缓存_win10刷新清理dns缓存命令

    1、清除DNS缓存可解决因本地缓存错误导致的网站访问问题,通过命令提示符运行ipconfig /flushdns即可完成清理;2、为确保操作成功,建议以管理员权限运行命令提示符或PowerShell;3、若存在其他网络异常,可执行netsh winsock reset重置Winsock并重启计算机;…

    2026年10月13日 • 用户投稿
    200
  • win10更新错误0x80070005怎么办_Windows更新错误0x80070005解决方案

    win10更新错误0x80070005怎么办_Windows更新错误0x80070005解决方案win10更新错误0x80070005怎么办_Windows更新错误0x80070005解决方案win10更新错误0x80070005怎么办_Windows更新错误0x80070005解决方案win10更新错误0x80070005怎么办_Windows更新错误0x80070005解决方案

    0x80070005错误通常由权限不足、磁盘空间不足或服务异常引起。1、以管理员身份运行更新程序;2、清理C盘确保至少20GB空闲;3、使用Windows更新疑难解答工具自动修复;4、通过命令提示符重置wuauserv、bits等更新组件服务;5、在组策略中禁用“空密码账户仅允许控制台登录”策略;6…

    2026年10月13日 • 用户投稿
    100
  • VisualStudio如何新建架构

    VisualStudio如何新建架构VisualStudio如何新建架构VisualStudio如何新建架构VisualStudio如何新建架构

    在软件开发过程中,架构设计是一个至关重要的阶段。visual studio 为开发者提供了高效便捷的方式来创建和管理项目架构。 一、新建项目 启动 Visual Studio 后,点击“创建新项目”选项。系统会列出多种项目模板,如 ASP.NET Web 应用程序、Windows 桌面应用等,可根据…

    2026年10月13日 • 用户投稿
    200
  • win10开机有三个系统选项怎么办图文解决教程

    win10开机有三个系统选项怎么办图文解决教程win10开机有三个系统选项怎么办图文解决教程win10开机有三个系统选项怎么办图文解决教程win10开机有三个系统选项怎么办图文解决教程

    最近几天,有不少朋友在手动重装系统后向我们反映,每次开机时都会看到两个甚至三个启动选项供用户选择,而其中只有一个能够正常进入windows系统。那么,如何处理这些多余的启动项呢?接下来就让小编为大家演示具体的操作步骤吧! 第一步,进入Windows系统后,按下Win+R组合键打开“运行”窗口,在弹出…

    2026年10月13日 • 用户投稿
    100
  • 使用wps怎么删除空白页的Mac方法_通过wps怎么删除空白页适配Mac系统

    使用wps怎么删除空白页的Mac方法_通过wps怎么删除空白页适配Mac系统使用wps怎么删除空白页的Mac方法_通过wps怎么删除空白页适配Mac系统使用wps怎么删除空白页的Mac方法_通过wps怎么删除空白页适配Mac系统使用wps怎么删除空白页的Mac方法_通过wps怎么删除空白页适配Mac系统

    空白页多由分页符、段落设置或表格引起;2. 开启“显示/隐藏编辑标记”查看并删除多余符号;3. 调整段落间距为0、取消固定行距;4. 表格后段落缩小字号或取消“段前分页”;5. 微调页边距或字体大小优化布局。 在使用WPS处理文档时,Mac用户经常会遇到无法直接删除的空白页。这类问题通常由分页符、段…

    2026年10月13日 • 用户投稿
    100
  • 【项目实战】自监控-12-自动发送邮件

    【项目实战】自监控-12-自动发送邮件【项目实战】自监控-12-自动发送邮件【项目实战】自监控-12-自动发送邮件【项目实战】自监控-12-自动发送邮件

    在这篇文章中,我们将探讨如何在项目中实现实时预警的自监控系统,并通过邮件通知的方式解决发现的问题。本文将详细介绍如何利用outlook发送邮件的具体步骤和代码实现。 前提条件: 使用该方法的前提是客户需事先安装Outlook(经测试,2010版本无问题),并需要提前登录用户。值得注意的是,在实际操作…

    2026年10月13日 • 用户投稿
    300
  • 如何在树莓派上安装Linux系统_RaspberryPiOS官方系统安装

    如何在树莓派上安装Linux系统_RaspberryPiOS官方系统安装如何在树莓派上安装Linux系统_RaspberryPiOS官方系统安装如何在树莓派上安装Linux系统_RaspberryPiOS官方系统安装如何在树莓派上安装Linux系统_RaspberryPiOS官方系统安装

    使用Raspberry Pi Imager可快速安装Raspberry Pi OS。准备树莓派、16GB以上MicroSD卡、读卡器、电源和电脑,下载Imager工具后选择系统版本、存储设备,可选配置Wi-Fi和SSH,写入镜像后插入SD卡启动,完成初始化设置即可。 在树莓派上安装官方的 Raspb…

    2026年10月13日 • 用户投稿
    200
  • windows linux工具有哪些

    windows linux工具有哪些windows linux工具有哪些windows linux工具有哪些windows linux工具有哪些

    windows linux工具有:1、putty;2、SecureCRT;3、Xmanager;4、WinSCP;5、Bitvise SSH Client;6、MobaXterm;7、DameWare SSH;8、SmarTTY等等。 本教程操作环境:linux5.9.8系统、Dell G3电脑。 …

    2026年10月13日 • 用户投稿
    800
  • 电脑没声音是怎么回事?

    电脑没声音是怎么回事?电脑没声音是怎么回事?电脑没声音是怎么回事?电脑没声音是怎么回事?

    电脑使用时间久了,难免会出现一些小问题,其中电脑没声音是一个比较常见的现象。相信不少人都曾遇到过这种情况,有时候重启电脑可以解决,但有些时候却一直没声音。针对这个问题,本文整理了详细的解决办法。 以下是关于电脑没声音的详细解决方案: 方法一:使用疑难解答功能 1、首先,在Windows 10系统托盘…

    2026年10月13日 • 用户投稿
    000
  • 部分企业将获得Win7系统免费一年安全更新

    部分企业将获得Win7系统免费一年安全更新部分企业将获得Win7系统免费一年安全更新部分企业将获得Win7系统免费一年安全更新部分企业将获得Win7系统免费一年安全更新

    去年,微软宣布为使用windows 7的企业用户延长付费的安全更新服务,最晚可延至2023年1月。此项服务将依据企业设备的数量收费,并且每年的升级费用会逐步提高。微软上个月还透露,windows 7扩展安全更新(esu)同样适用于中小型公司。 然而,今天微软推出了一项新优惠政策:对于在2020年1月…

    2026年10月13日 • 用户投稿
    200
  • win10系统如何使用PowerShell命令格式化磁盘

    win10系统如何使用PowerShell命令格式化磁盘win10系统如何使用PowerShell命令格式化磁盘win10系统如何使用PowerShell命令格式化磁盘win10系统如何使用PowerShell命令格式化磁盘

    日常使用win10系统时,常常需要对硬盘进行格式化处理,以优化磁盘性能。微软提供的windows powershell工具,可以帮助我们轻松完成磁盘格式化任务。对于不了解如何用powershell命令格式化磁盘的用户,可以参考以下步骤进行操作。 如何在win10系统中通过PowerShell命令格式…

    2026年10月13日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信