​下一代Transformer:RetNet结构可视化及Vision RetNet展望

news2024/7/2 0:27:54

2d7d5df30d427ed1f8ef7493524aad63.gif

©PaperWeekly 原创 · 作者 | 岳廷

微软和清华大学的研究人员在论文《Retentive Network: A Successor to Transformer for Large Language Models》中提出了一种新的模型架构 RetNet,同时实现 Transformer 模型的高效并行训练、低延迟高吞吐量的推理以及良好的建模性能,被誉为“打破不可能三角形”。

ab9985390687e524356be6165c15bfd7.png

论文链接:

https://arxiv.org/pdf/2307.08621.pdf

代码链接:

https://github.com/microsoft/unilm/tree/master/retnet

本文将详细介绍 RetNet 的技术原理、实验结果以及未来在 CV 领域应用前景展望。

796a09ed4baf725051b507de7e5cffa4.png

4b6f358f0184cc5f1247eb3684ddc8e9.png

411377ad7be1ed9193aa2823b450f57a.png

RetNet技术原理

RetNet 的核心创新在于提出了一种新的序列建模机制——多尺度保留(Multi-Scale Retention,MSR)其核心为 Retention 机制,而 Retention 机制又可以表示为并行形式、递归形式和分块递归形式三种计算范式。Retnet 整体结构见下图:

93ef0cc5d9ba32e1687d228d4c1d0d99.png

1.1 保留(Retention)机制

Retention 机制是 RetNet 的关键组成部分。给定输入序列 ,, 是隐含层维度。

通过投影操作 ,将其映射到一维函数。再考虑一个序列建模的映射问题 。

将 通过 映射到 。为简单起见 , 表示 .

以循环迭代的方式建立映射关系:

2ce7dcee71cc6bba2d12f8250be75ff2.png

e5ee65e907b7357e59ff68eb604c036e.png

其中 A 是对角矩阵, 是内容相关投影向量:

aaa799cb6abb0381c8dcb67db50c62a8.png

 是可学习参数,得到 γθ。将 代入 ,公式 1 重新如下:

ea54695d6323754ed5e36361bae6fc21.png

其中

5900ecfb05fdb29553bf18cf34f2f253.png

是 Transformer 中著名的 xPos,用于相对位置编码。将 简化成标量,得到以下公式:

987c53ae91371242c1f21ad9c25682c4.png

这个公式对于训练样本来说,很容易并行化。

RetNet 的表达能力主要来源于保留机制中状态向量的设计。相比仅使用元素积的操作,通过递归保留了高维的状态 ,从而不会损害模型的表示能力。同时,这个设计又使得并行和递归两种表示成为可能。

1.2 Retention机制的三种表示形式

Retention 机制从循环网络开始推导,但由于其设计的特殊性,可以有三种表示形式,三种表示形式之间的关系和在训练推理中如何切换使用,下面将进行详细说明:

1442cb4a9760c6a5b4ea22d6c580c8fc.png

1. 并行表示

这是最基础的表示形式,通过 position encoding 实现内容相关的全连接。可以高效并行计算,适合训练

735b06135df20fca4b7fc0967e8ebbcb.png

2. 递归表示

这是通过状态迁移的递归方式进行建模,可以顺序地进行编码,适合推理

640d2e4a9c093dc046068f0f114f36e4.png

3. 分块递归表示

这是在并行表示和递归表示之间的折衷,对输入进行分块,每个块内部使用并行表示并行计算,而块与块之间使用递归表示传递信息。适合非常长的序列建模

ce996b0a45142403eced3261d5fa2155.png

对应伪代码如下:

62e6ef69c8aba0ede1efddcb6ea38174.png

三者之间的关系是:

  • 并行表示是最基础的形式,递归表示和分块递归表示都可以从中推导出来。

  • 递归表示专注于顺序建模,用于推理。

  • 分块递归表示融合了并行表示的并行计算和递归表示的递归连接,以兼顾计算速度和建模能力。

在训练和推理中,常见的使用方式是:

  • 训练阶段主要使用并行表示,以并行地处理训练数据,进行高效训练。

  • 推理阶段切换为递归表示,以降低内存和延迟,提高实际使用的效率。

  • 对于特别长的序列,可以在训练阶段采用分块递归表示,以平衡训练速度和建模能力。

所以三种表示可以根据实际需要,灵活切换使用,以发挥各自的优势。并行表示用于训练,递归表示用于推理,分块递归表示用于长序列建模。这种转换自如的设计是 RetNet 的关键创新之处。

1.3 门控多尺度保留模块(Gated Multi-Scale Retention) 

在原 Transformer Self-Attention 块中,Retnet 使用多头保留机制构建多尺度保留模块。具体来说,对输入 ,计算:

c348965c414472baa43ac5c8752bcb9d.png

这里 表示第 i 个头对应的保留率。不同头使用不同的 实现了多尺度建模。

然后将所有头连接起来,并进行门控及投影:

823477099e04b40dd79650448bda6185.png

9f1b7b1df2d1b79485a1dd25d15f47d9.png

  实现了非线性门控。将所有头拼接后再进行线性投影以混合特征。

此外,本文还使用 GroupNorm 对不同 head 的输出进行层内标准化:

e06c652fc226ed3fadabec7cba914fea.png

因为各个 head 参数不共享,方差统计特性不同,需要分头标准化。所有公式整理如下:

78ec155e5dd6b22fd75e997a3712da1b.png

到此为止,就构建了多尺度保留模块。它充分发挥了保留机制的能力,组合了多尺度建模、门控非线性化、分头标准化等有效手段,成为一个高效且富有表达力的模块。

1.4 总体网络结构

最终,本文使用标准的 Transformer 式结构来构建整个 RetNet 模型:

b38e74df399cd63b1d7ef76c9f392b05.png

c34747dea522e8b7b8a9b2a4a327eea4.png

其中堆叠 L 个 MSR 模块和 FFN 模块。LN 表示 LayerNorm 层,FFN 为前馈全连接网络。

这种结构充分融合了 Multi-Scale Retention 模块的创新与 Transformer 架构的优点。

需要说明的是,在训练过程中,本文使用保留机制的并行表示来进行高效的并行计算。而在部署过程中,则切换到递归表示,以实现低延迟和高吞吐量的推理。对于非常长的序列,本文还可以利用分块递归表示来进一步优化训练与建模。

上述转换自如的多表示能力,使得 RetNet 可以同时兼具 Transformer 的高效训练与递归网络的高效推理,这是其最大的创新之处。

1.5 RetNet实验结果

论文中在多个语言建模任务上进行了大量实验,与 Transformer 及其他高效变体进行比较。结果展现了 RetNet 在多个方面的优势。Retnet 的主要优势,是推理优势,因此本文主要关注其推理性能对比。

从下面的图中可以看到,在不同序列长度下,RetNet 的 GPU 内存占用、延迟和吞吐量都明显优于 Transformer。尤其是内存仅占 Transformer 的 30%,延迟降低 8 倍之多。这使其非常适合实际部署,在大模型成为主流的情况下这个数据,使得 retnet 非常有可能成为下一代 Transformer 替代品,因为 Retnet 大大降低了推理消耗

296b3c1c7482ab86431a84e033d6edc9.png

b8f80b82c30e3dd67b3710c1045e2a42.png

RetNet在CV任务中的应用前景

从本文的实验数据看,替代 Transformer 几乎板上定钉的事,但其在 CV 领域的应用前景如何?结合 Vision Transformer,展望 Vision Retnet,可以从以下几个方面探讨 RetNet 在视觉领域的应用前景:

1. 更好的全局注意力建模

图像中的物体通常具有整体的结构和形状,理解这些整体结构需要建模长程空间依赖。例如,识别一匹马需要结合头、身体、四肢等不同部分。但 Transformer 在较长的图像序列上表现较差。

RetNet 通过保存历史注意力分布明确地建模长程依赖。在处理图像时,可以将图像拆解为 Patch 序列,然后应用 RetNet。RetNet 会记忆各 Patch 之间的相关性,比如身体相关的 Patch。在处理后续 Patch 时可以利用这些记忆,从而建模整体结构。

2. 提高计算效率

传统的 CNN 和 Transformer 需要一次性处理整张图像,计算量非常大。

而 RetNet 可以将图像分割成小的 Patch 序列,然后递归地处理这个 Patch 序列。具体做法是: 

1. 将图像分割成 n*n 的小 Patch,形成序列(比如16*16) 

2. 对第一个 Patch,计算自注意力得到注意力分布 A1

3. 对第二个 Patch,同时参考上一步的 A1 和当前 Patch,计算新的注意力分布 A2

4. 如此递归处理所有 Patch,逐步构建完整的注意力分布

这种递归计算方式充分利用了前面的注意力分布,避免了重复计算。

相比一次性处理整张图像,这种 Patch 序列的递归计算可以显著降低计算量。根据 RetNet 论文,在相同配置下,计算量可以降低约 60%。

此外,这种 Patch 序列表示也带来了其他优势,比如可以自然地融合多尺度信息,以及增强对遮挡的鲁棒性。

总之,RetNet 通过图像 Patch 序列化可以实现分块递归计算,这是其提高计算效率的关键所在。这种设计充分发挥了 RetNet 的优势,值得在视觉任务中广泛应用。

3. 增强对遮挡的鲁棒性

图像中经常存在遮挡,遮挡的区域会提供错误的视觉信息。但 RetNet 通过记忆历史可以弥补这些错误,即使输入被遮挡,也可以用记忆进行推理。例如,处理一个被遮挡的人脸图像时,RetNet 可以回想起完整人脸的注意力分布,减少遮挡对识别的影响。

4. 支持基于注意力的图像生成

RetNet 的记忆机制不仅可以用于分析,也可以应用到生成任务中。在生成图像时,可以用记忆的注意力分布来引导生成更加连贯、自然的图片。例如生成连贯的文字图像时,可以用记忆的注意力分布来确定当前生成的内容与前文的关联性。

5. 与置信度相关的门控机制

对图像中不同区域可以赋予置信度。对于置信度高的区域,利用新的注意力分布;对于置信度低的区域,保留更多历史注意力信息。例如生成图像时,对已生成清晰区域利用当前分布;对仍不清晰的区域保留更多历史记忆,以生成更连贯的图像。

6. 多任务学习

不同视觉任务可以共享历史注意力记忆。例如同时进行分类、分割、检测等任务,记忆的注意力分布可以在任务间共享,实现多任务协同。

总之,RetNet 的工作记忆机制可以显著增强 Vision Transformer 对长程依赖的建模能力,并在计算效率、鲁棒性等方面带来优,有望成为视觉领域的重要工具。

efb69bb5a90c875903375706d98c328d.png

总结

总体来说,RetNet 是一个非常有前途的工作。它对传统 Transformer 框架进行了巧妙而原创的改进,使之可以“兼收并蓄”,在多个维度上实现更优的 trade-off。这种融会贯通和创新的设计思想,为构建下一代高效建模模型提供了重要参考和启发。

随着模型和数据规模不断扩大,如何在表达能力、训练效率、部署效率之间找到最佳平衡,将是所有预训练语言模型和基础模型架构需要面对的核心问题。RetNet 给出了一个非常有前景的解决方案。相信其技术思想和创新将对未来 Transformer 的发展产生深远的推动作用。也期待其能为计算机视觉等领域带来新的建模范式和进展。

更多阅读

6f19912c9bb22e07078df82bb9590c0e.png

1906377b6838579335c1f590ae84d82e.png

3ade95e26aba131d40bc00821f32d782.png

92b9f977d6ec67e8f378d8403110009a.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

1fd92b4bf1575a6f52c90e3d9907c3c8.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

2d74f40ac605f066d5547de7ea7686df.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构--拓扑排序

数据结构–拓扑排序 AOV⽹ A O V ⽹ \color{red}AOV⽹ AOV⽹(Activity On Vertex NetWork&#xff0c;⽤顶点表示活动的⽹)&#xff1a; ⽤ D A G 图 \color{red}DAG图 DAG图&#xff08;有向⽆环图&#xff09;表示⼀个⼯程。顶点表示活动&#xff0c;有向边 < V i , V j …

(二)Git在公司中团队内合作和跨团队合作和分支操作的全部流程(一篇就够)

&#xff08;一&#xff09;Git连接GitHub的全部流程https://blog.csdn.net/m0_65992672/article/details/132333727 团队内协作 项目经理通过git push将代码推送到远程仓库【也就是git、gitee等代码托管中心】,推完以后组员可以通过git clone克隆下来代码&#xff0c;如果组…

版本控制工具Git集成IDEA的使用(第一篇Gitee)

目录 一、Gitee的使用 1、注册网站会员 2、用户中心 3、创建远程仓库 4、配置SSH免密登录 二、集成IDEA&#xff0c;Git项目搭建 1、本地仓库搭建 1&#xff09;创建一个新项目 2&#xff09;打开终端&#xff0c;在当前目录新建一个Git代码库 3&#xff09;忽略文件 …

APP内嵌小游戏,全面提升用户活跃、留存

开发者想要提高APP的用户活跃度可以通过拉新的方式完成&#xff0c;但目前拉新的成本较高&#xff0c;而且新的目标用户一般很难留住&#xff0c;流失率也比较高。 此时&#xff0c;可以通过植入小游戏的方式来提高用户活跃度&#xff0c;游戏的优势在于可以快速吸引用户&…

无涯教程-Perl - system函数

描述 该函数执行PROGRAM指定的命令,并将LIST作为参数传递给该命令。 返回值是等待功能返回的程序的退出状态。要获得实际的退出值,请除以256。 语法 以下是此函数的简单语法- system PROGRAM, LISTsystem PROGRAM返回值 此函数返回wai返回的程序的退出状态 例 以下是显…

Everest Group发布“2023任务挖掘”报告:多家RPA厂商上榜

近日&#xff0c;全球知名信息咨询机构Everest Group发布了“2023任务挖掘”供应商报告。通过市场影响力&#xff08;市场应用、企业覆盖、价值交付&#xff09;、产品交付能力&#xff08;产品策略、数据收集和整合、任务智能化、产品培训支持、商业模式&#xff09;多个维度&…

视觉slam十四讲---第一弹三维空间刚体运动

1.旋转矩阵 1.1内积 1.2外积 1.3坐标系间的欧式变换 相机运动是一个刚体运动&#xff0c;它保证了同一个向量在各个坐标系下的长度和夹角都不会 发生变化。这种变换称为欧氏变换。 旋转矩阵&#xff1a;它是一个行列式为 1 的正交矩阵。 旋转矩阵为正交阵&#xff0c;它的逆…

召集令:CloudQuery 社区有奖征文活动来啦!

CloudQuery 社区第一期征文活动来袭&#xff01;&#xff01;&#xff01;只要你对 CloudQuery 产品感兴趣&#xff0c;或者是希望了解 CQ &#xff0c;都可以来参加&#xff0c;在本期活动中&#xff0c;我们也为大家准备了多种主题供你选择&#xff0c;CQ 使用案例、版本对比…

集合(map+set)

【数据结构1-3】集合 - 题单 - 洛谷 例题 P1551 亲戚 亲戚 - 洛谷 并查集 #include<bits/stdc.h> using namespace std; int n,m,q,f[10010],x,y,a,b; int find(int x)//找出x家的大佬 也就是二叉树的祖先节点 {if(f[x]x)//x是x的爸爸&#xff0c;简单的来说就是x没爸…

交流充电桩控制主板的模块结构

交流充电桩控制主板的模块结构 你是否好奇过&#xff0c;交流充电桩是如何给电动汽车充电的?充电桩的控制主板又是由哪些部分组成的呢?今天我们就来一探究竟! 首先&#xff0c;让我们来看看主控制器。主控制器可谓是交流充电桩主板的大脑&#xff0c;它负责控制充电桩的工作流…

【boost网络库从青铜到王者】第四篇:asio网络编程中的socket同步读(接收)写(发送)

文章目录 1、asio中的同步发送write_some()2、asio中的socket中的同步发送send() 可以在一次性同步发送所以数据出去3、asio中的write()发送数据4、asio中的同步接收read_some()5、asio中的socket中的同步接收receive()可以一次性同步接收对方发送的数据6、asio中的read()接收数…

OpenAI全球招外包大军,手把手训练ChatGPT取代码农 ; 码农:我自己「杀」自己

目录 前言 OpenAI招了一千多名外包人员&#xff0c;训练AI学会像人类一样一步步思考。如果ChatGPT「学成归来」&#xff0c;码农恐怕真的危了&#xff1f; 码农真的危了&#xff01; 当时OpenAI也说&#xff0c;ChatGPT最合适的定位&#xff0c;应该是编码辅助工具。 用Cha…

matlab使用教程(17)—多项式的定义和运算

1.创建并计算多项式 此示例说明如何在 MATLAB 中将多项式表示为向量以及根据相关点计算多项式。 1.1 表示多项式 MATLAB 将多项式表示为行向量&#xff0c;其中包含按降幂排序的系数。例如&#xff0c;三元素向量 p [p2 p1 p0]; 表示多项式 创建一个向量以表示二次多项式…

mysql 存储过大如何处理

文章目录 定位是否MySQL存储过大处理binlog大小查看目前存储策略设置binlog 保存时间 定位是否MySQL存储过大 查询当前文件夹大小 du -sh查询第一层文件夹大小 du -h -d 1处理binlog大小 查看目前存储策略 查询日志保存天数 show variables like expire_logs_days;0&…

大势智慧软硬件技术答疑第八期

1.DasViewer可以使用同一个账号登录多台电脑&#xff0c;然后同时进行格式转换操作吗&#xff1f; 答&#xff1a;可以的 2.在DasViewer里面添加了标注点&#xff0c;能手动修改标注点坐标、手动输入坐标值 吗&#xff1f; 答&#xff1a;目前DasViewer暂不支持手动输入坐标 …

Android12 偶现触摸失灵

生产线 在烧录固件时&#xff0c;会偶然出现稍完之后屏幕触摸用不了。前期以为是烧录没弄好&#xff0c;后面又发生&#xff0c;就怀疑与产品有关了。 首先进行抓日志分析&#xff1a;有问题的设备先确认下dmesg信息 adb连接设备进行日志抓取&#xff1a; logcat > /sdcard…

【Go】锁相关

mutex锁相关 mutex源码分析 Locker接口&#xff1a; type Locker interface {Lock()Unlock() }Mutex 就实现了这个接口&#xff0c;Lock请求锁&#xff0c;Unlock释放锁 type Mutex struct {state int32 //锁状态&#xff0c;保护四部分含义sema uint32 //信号量&#…

IDEA启动报错【java.sql.SQLSyntaxErrorException: ORA-00904: “P“.“PRJ_NO“: 标识符无效】

IDEA报错如下&#xff1a; 2023-08-17 11:26:15.535 ERROR [egrant-biz,b48324d82fe23753,b48324d82fe23753,true] 24108 --- [ XNIO-1 task-1] c.i.c.l.c.RestExceptionController : 服务器异常org.springframework.jdbc.BadSqlGrammarException: ### Error queryin…

看看安森美深力科NSI45090JDT4G 是如何点亮汽车内外照明系统解决方案

关于线性恒流调节器&#xff08;CCR&#xff09;&#xff1a;是一种用于控制电流的稳定输出。它通常由一个功率晶体管和一个参考电流源组成。CCR的工作原理是通过不断调节功率晶体管的导通时间来维持输出电流的恒定。当输出电流超过设定值时&#xff0c;CCR会减少功率晶体管的导…