Raki的读paper小记:RWKV: Reinventing RNNs for the Transformer Era

news2024/9/25 23:20:56

Abstract&Introduction&Related Work

  • 研究任务
    基础模型架构
  • 已有方法和相关工作
    • RNN,CNN,Transformer
    • 稀疏注意力(Beltagy等人,2020年;Kitaev等人,2020年;Guo等人,2022年)、近似全注意力矩阵(Wang等人,2020年;Ma等人,2021年;Choromanski等人,2020年)、将分块注意力与门控结合(Ma等人,2023年)FlashAttention(Dao等人,2022a年)MLP-Mixer,Attention Free Transformer(AFT)(Zhai等人,2021年)用计算效率更高的替代方法替换了点积自注意力,可以看作是一个多头注意力,其中每个特征维度对应一个头
  • 面临挑战
    • 训练以及推理开销太高
  • 创新思路
    • 提出了一种新的注意力机制,改变了线性注意力的结果
    • 受到AFT的启发,RWKV采取了类似的方法,但通过修改交互权重来简化它,使其可以转换成RNN。同时,也对RNN风格的递归组件进行了修改,以增加上下文长度,例如Recurrent Memory Transformer和Linear Recurrent Units,还提出了像S4(Gu等人,2022年)及其变体这样的状态空间模型(SSM)
  • 实验结论
    • RWKV利用线性注意机制、时间混合和token偏移等技术,捕捉和传播顺序信息,具有稳定梯度和较深层次的优势,具有高效处理顺序数据的能力。
    • RWKV模型能够在时间顺序模式下进行递归推理,与自注意力相比,在处理长序列时具有恒定的速度和内存占用。设计结合了注意力机制和RNN更新方式,通过时间相关的softmax运算和层归一化等技术确保梯度稳定性和学习能力。
    • 模型采用自定义CUDA内核、FFN与R门、小初始化嵌入和自定义初始化等附加优化,提高了计算效率和训练稳定性。

经典注意力机制:
Attn ⁡ ( Q , K , V ) t = ∑ i = 1 T e q t ⊤ k i v i ∑ i = 1 T e q t ⊤ k i . \operatorname{Attn}(Q,K,V)_t=\large\frac{\sum_{i=1}^Te^{q_t^\top k_i}v_i}{\sum_{i=1}^Te^{q_t^\top k_i}}. Attn(Q,K,V)t=i=1Teqtkii=1Teqtkivi.

AFT把注意力机制改成:
Attn ⁡ + ( W , K , V ) t = ∑ i = 1 t e w t , i + k i v i ∑ i = 1 t e w t , i + k i , \operatorname{Attn}^+(W,K,V)_t=\large\frac{\sum_{i=1}^te^{w_{t,i}+k_i}v_i}{\sum_{i=1}^te^{w_{t,i}+k_i}}, Attn+(W,K,V)t=i=1tewt,i+kii=1tewt,i+kivi,

{ w t , i } ∈ R T × T \{w_{t,i}\}\in R^{T\times T} {wt,i}RT×T是学习到的位置偏移,矩阵中每个元素是一个标量

RWKV

受AFT的启发,我们让RWKV中的每个 w t , i w_t, i wt,i成为一个channel-wise time decay vector,乘以从当前时间向后追溯的相对位置: w t , i = − ( t − i ) w , w_{t,i}=-(t-i)w, wt,i=(ti)w, 维度为d,d是通道数
在这里插入图片描述

RWKV与其他模型的结构对比:

在这里插入图片描述
RWKV的模型结构
在这里插入图片描述
RWKV架构由一系列堆叠的残差块组成,每个残差块由一个时间混合和一个通道混合子块组成,具有递归结构
递归在RWKV中有两种表述方式:

  1. 作为当前输入和上一个时间步骤的输入之间的线性插值(我们称之为时间偏移混合或token偏移技术,如图3中的对角线所示)这可以针对输入embedding的每个线性投影(例如时间混合中的R、K、V,以及通道混合中的R、K)进行独立调整,并且作为时间依赖的WKV的更新,其公式化在方程式14中。 WKV计算与AFT(Zhai等人,2021年)类似,但现在W是一个通道-wise向量,乘以相对位置,而不是AFT中的成对矩阵。还引入了一个向量U,用于单独关注当前token,以弥补W可能出现的退化问题。
    在这里插入图片描述

在其中,WKV计算wkvt扮演了Transformer中Attn(Q, K, V)的角色,而不会产生二次成本,因为交互是在标量之间进行的。直观地说,随着时间t的增加,向量 o t o_t ot 依赖于一个较长的历史,由逐渐增加的项的总和来表示。对于目标位置t,RWKV在位置间隔 [ 1 , t ] [1,t] [1t]内执行加权求和,然后与接受度 σ ( r ) σ(r) σ(r) 相乘。因此,交互在给定时间步内是乘性的,而在不同时间步内是加性的
在这里插入图片描述

在这里插入图片描述
time-mixing的公式与模型示意图:
在这里插入图片描述
各个模型的复杂度对比:
在这里插入图片描述

Experiments

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Conclusions

RWKV是一种利用基于时间混合组件潜力的新型RNN模型。RWKV引入了几个关键策略,使其能够捕捉局部性和长程依赖,并解决当前架构的局限性:

  1. 通过标量公式将二次的QK注意力替换为线性成本
  2. 重新构造递归和顺序归纳偏置以实现有效的训练并行化和高效的推理
  3. 使用自定义初始化增强训练动态

我们在各种NLP任务上对所提出的架构进行了基准测试,显示出与SoTA相当的性能,同时减少了成本。进一步的实验涉及表达能力、可解释性和扩展性,展示了模型的能力,并揭示了RWKV与其他LLM之间的行为相似之处。

RWKV为在顺序数据中建模复杂关系提供了一个可扩展和高效的新途径。虽然已经提出了许多替代Transformer的方法,并声称具有类似的特点,但RWKV是首个用数百亿参数预训练模型来支持这些主张的研究

Limitations

尽管提出的RWKV模型在训练和推理期间展现出了有希望的效率,但也应该意识到并解决一些限制,以便在未来的研究中加以应对。首先,RWKV的线性注意力确实带来了显著的效率提升,但它也可能限制了模型在需要回忆极其详细信息的非常长上下文任务中的性能。这是因为相比标准Transformer的二次注意力维持的完整信息,RWKV通过单个向量表示在许多时间步上传递信息。换句话说,模型的循环结构本质上限制了它“回顾”之前的标记的能力,与传统的自注意机制相对立。虽然学习的时间衰减有助于防止信息丢失,但与完整的自注意力相比,它在机制上存在一定的限制。

这项工作的另一个限制是与标准Transformer模型相比,prompt engineering的重要性增加了。RWKV中使用的线性注意力机制限制了从prompt中传递到模型继续部分的信息。因此,精心设计的提示可能对模型在任务中表现良好至关重要

Remark

是个好工作,但是跟RetNet一样,个人对其超长距离建模能力保持怀疑,希望后续工作能增加到万级别tokens来证明一下模型的真正实力?

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

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

相关文章

组合模式——树形结构的处理

1、简介 1.1、概述 树形结构在软件中随处可见,例如操作系统中的目录结构、应用软件中的菜单、办公系统中的公司组织结构等。如何运用面向对象的方式来处理这种树形结构是组合模式需要解决的问题。组合模式通过一种巧妙的设计方案使得用户可以一致性地处理整个树形…

Flowable-中间事件-补偿中间抛出事件

定义 补偿中间抛出事件用于触发一个补偿,当执行到达补偿中间抛出事件时触发该流程已完成活动 的边界补偿事件(Compensate Boundary Interrputing Event),完成补偿操作后自动执行后继路线。 图形标记 补偿中间抛出事件显示为普通…

【elasticsearch系】1.初识玩转elasticSearch

首先给大家介绍下我使用的版本是7.17.3这个版本,关于之前6.x的版本还是有些区别的。 elasticSearch Elasticsearch 是一个分布式文档存储。Elasticsearch 不是将信息存储为列式数据行,而是存储已序列化为 JSON 文档的复杂数据结构。存储文档时&#xff0…

PHP8的数据类型-PHP8知识详解

在PHP8中,变量不需要事先声明,赋值即声明。 不同的数据类型其实就是所储存数据的不同种类。在PHP8.0、8.1中都有所增加。以下是PHP8的15种数据类型: 1、字符串(String):用于存储文本数据,可以使…

【深度学习】High-Resolution Image Synthesis with Latent Diffusion Models,论文

13 Apr 2022 论文:https://arxiv.org/abs/2112.10752 代码:https://github.com/CompVis/latent-diffusion 文章目录 PS基本概念运作原理 AbstractIntroductionRelated WorkMethodPerceptual Image CompressionLatent Diffusion Models Conditioning Mec…

【13】STM32·HAL库-正点原子SYSTEM文件夹 | SysTick工作原理、寄存器介绍 | printf函数使用、重定向

目录 1.sys文件夹介绍(掌握)2.deley文件夹介绍(掌握)2.1deley文件夹函数简介2.2SysTick工作原理2.3SysTick寄存器介绍2.4delay_init()函数(F1)2.5delay_us()函数(F1)2.6delay_ms()函…

网络安全-防御需知

目录 网络安全-防御 1.网络安全常识及术语 资产 漏洞 0day 1day 后门 exploit APT 2.什么会出现网络安全问题? 网络环境的开放性 协议栈自身的脆弱性 操作系统自身的漏洞 人为原因 客观原因 硬件原因 缓冲区溢出攻击 缓冲区溢出攻击原理 其他攻击…

Java另一种debug方法(not remote jmv debug),类似python远程debug方式

这种Debug类似python的debug方式,是运行时将业务代码及依赖推送到Linux并使用Linux的java运行运行程。只要本地能运行,就能自动将代码推送到Linux运行,不需打包及设置远程debug jvm参数,适合一些项目Debug调试 运行时会推送一些依…

Flowable-中间事件-空中间抛出事件

定义 空中间抛出事件是一个 Throwing 事件,在 intermediateThrowEvent 元素下不加入任何的事件定 义元素,就构成一个空中间抛出事件。它通常用于表示流程中的某个状态,在实际使用的过程中可 以通过添加执行监听器,来表示流程状态…

js原型以及原型链

目录 原型隐式原型显式原型constructornew操作符 重写原型对象原型链继承原型链继承借用构造函数继承组合构造继承 原型继承寄生继承组合寄生继承 原型继承关系 原型 在JavaScript中,每个对象都有一个内置属性[[prototype]],这个属性指向一个另一个对象…

Nginx实现反向代理和负载均衡

Nginx安装 本文章主要介绍下,如何使用Nginx来实现反向代理和负载均衡,Nginx安装和基础知识,可参考我的这篇文章 Nginx安装。 Nginx实现反向代理 实现反向代理需要准备两台Nginx服务器。一台Nginx服务器A,ip为 192.168.206.140&…

Linux下查找python路径

本地目前装了几个版本的python,这里记录下查找python路径的方法。 1:whereis命令 whereis python2:which命令 which python与whereis相似,但which会返回第一个找到的执行文件的位置。 3:find命令 find命令可以搜索系…

Power BI-云端报表定时刷新--ODBC、MySQL、Oracle等其他本地数据源的刷新(二)

ODBC数据源 一些小众的数据源无法直接连接,需要通过微软系统自带的应用“ODBC数据源”连接。 1.首次使用应安装对应数据库的ODBC驱动程序,Mysql的ODBC驱动需要手动安装 2.在web服务中进行数据源的配置 Mysql数据源 1.Powerbi与Gateway第一次连SQL…

❤️创意网页:创意视觉效果粒子循环的网页动画

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:欢迎踏入…

【雕爷学编程】MicroPython动手做(15)——掌控板之AB按键2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

【嵌入式Linux项目】基于Linux的全志H616开发板智能家居项目(语音控制、人脸识别、安卓APP和PC端QT客户端远程操控)有视频功能展示

目录 一、功能需求 二、开发环境 1、硬件: 2、软件: 3、引脚分配: 三、关键点 1、设计模式之工厂模式 2、wiringPi库下的相关硬件操作函数调用 3、语音模块的串口通信 4、线程 5、摄像头的实时监控和拍照功能 6、人脸识别 四、编…

❤️创意网页:炫酷的网页 - 创造华丽粒子动画

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:欢迎踏入…

操作系统攻击:早期WindowsMS10-046漏洞

目录 概述 漏洞成因 利用过程 漏洞复现 漏洞修复 概述 本次介绍早期的windows高危漏洞——MS10_046_SHORTCUT_ICON_DLLLOADER , 该漏洞可以通过浏览器跳转网络资源的方式利用,结合xss攻击用户的系统 危险性极高。 漏洞成因 漏洞成因: m…

param.grad、requires_grad、grad_fn、grad/梯度为None?

基本概念 1)is_leaf 叶子节点和非叶子节点的区别:计算图中的节点分为叶子节点和非叶子节点,叶子节点可以理解成没有其他tensor再利用它进行计算(例如b a1,那么b需要a进行计算,那么a就不是叶子结点&…

服务器介绍

本文章转载与b战up主谈三国圈,仅用于学习讨论,如有侵权,请联系博主 机架型服务器 堆出同时服务百万人次机组 刀型服务器 服务器炸了 比如用户访问量暴增 超过机组的峰值处理能力,进而导致卡顿或炸服, 适合企业的塔式…