RWKV论文燃爆!将RNN崛起进行到底!可扩百亿级参数,与Transformer表现相当!

news2025/1/11 14:25:55

67d4d8a00e137463b05ffa87bcb414ca.jpeg

深度学习自然语言处理 原创
作者:鸽鸽

万众期待的RWKV论文来啦!93f0ff3e82c10f68bc2e14d0a4d3632a.png

这股RNN崛起的“清流”,由民间开源组织发起,号称是第一个可扩展到百亿级参数的非transformer架构!

RWKV结合了RNN和Transformer的优势:一方面,抛弃传统的点积自注意力、使用线性注意力,解决transformer内存和计算复杂度随序列增长呈平方缩放的瓶颈;另一方面,突破了RNN梯度消失、并行化和可扩展性等限制。

居然实现O(Td)的时间复杂度和O(d)的空间复杂度!

b13a790a7d81c87e4c4f4dbb681a48c3.png
表:不同transformer的复杂度比较。T是序列长度,d是特征维度

今天我们基于这篇论文,讲讲RWKV背后的注意力时间混合通道混合模块的原理与组成。

论文:RWKV: Reinventing RNNs for the Transformer Era
地址:https://arxiv.org/pdf/2305.13048.pdf
代码: https://github.com/BlinkDL/RWKV-LM
模型:https://huggingface.co/BlinkDL/rwkv-4-raven

回顾RNN

流行的RNN架构(如LSTM)公式如下:

下图(a)展示了RNN的数据流,尽管RNN可以分解为两个线性块(和)和一个特定于RNN的块,但对于先前时间步的数据依赖阻止了RNN的并行化。

da8beb7a81c6c5ba283b0c53def67066.png
图:RWKV与QRNN和RNN(Vanilla、LSTM、GRU等)的架构对比。橙色表示时间混合、卷积或矩阵乘法,连续块表示这些计算可以同时进行;蓝色表示沿着通道或特征维度(按元素)同时操作的无参函数;绿色表示通道混合

RWKV 注意力进化史

要知道 RWKV 的线性注意力怎么来的,我们先看经典的transformer自注意力(省略multi-head和缩放因子):

其中核心的乘法是序列中每两两词元 (token) 之间成对的注意力分数的集合,对于每个时间步 t,分解为向量操作:

在Apple提出的 Attention Free Transformer (AFT) 中,引入成对位置偏差来替换点积,可以看作是每个特征维度对应一个头的多头注意力。上面的等式被写作:

其中每个是一个标量,组合成代表成对位置偏差的可学习参数矩阵.

在 RWKV 中,参数进一步简化为一个通道级时间衰减向量,乘以相对位置 :

其中 , 是通道数(特征维度)。

RWKV 模型架构

The Receptance Weighted Key Value (RWKV) 的名字来自于时间混合 (time-mixing) 和通道混合 (channel-mixing) 块中使用的四个主要元素:

  • (Receptance) :接受过去信息的接受向量;

  • (Weight):位置权重衰减向量(可训练的模型参数);

  • (Key) :键是类似于传统注意力中的向量;

  • (Value):值是类似于传统注意力中的向量。

每个时间步,主要元素之间通过乘法进行交互。RWKV 架构如图所示:

178754abc2342c3a2f10cfb6ea01c8f8.png
图:RWKV块元素(左)和带有用于语言建模的最终头部的RWKV残差块(右)

RWKV 架构由一系列堆叠的残差块组成,每个残差块由具有循环结构的时间混合和通道混合子块组成。该循环通过将当前输入和上一时间步的输入之间进行线性插值来实现(作者称为token shift),如下图中对角线所示。这个线性插值可以针对每个输入 embedding 的线性投影(例如时间混合中的和通道混合中的)独立调整。

be2f166546fcb5df2370769048c2f82a.png
图:用于语言建模的RWKV架构

时间混合块的公式如下:

其中,的计算扮演了Transformer中的角色,其中的时间衰减机制(方程中的)保持了对序列元素间位置关系的敏感性,逐渐减少过去信息对当前时间的影响。直观地说,随着时间的增加,向量依赖于一个长时间历史,由越来越多的项的总和所表示。对于目标位置,RWKV在位置间隔执行加权求和,然后乘以接受度。因此,交互在给定时间步内是乘法,并在不同的时间步上求和。

通道混合块采用平方ReLU激活,公式如下:

注意在时间混合和通道混合中,Receptance取sigmoid的情况下,可以直观地将其视为“遗忘门”,以消除不必要的历史信息。

在最后一个块之后,使用由LayerNorm和线性投影组成的简单输出投影头来获取在下一个token预测任务中使用的logits和计算训练期间的交叉熵损失。训练采用时间并行模式,而自回归推理和聊天则采用时间顺序模式。

评估

实验表明,与具有相同参数和训练token数量的传统transformer架构(Pythia、OPT、BLOOM、GPT-Neo)相比,RWKV在六个基准测试(Winogrande、PIQA、ARC-C、ARC-E、LAMBADA和SciQ)上均具有竞争力。RWKV甚至在四项任务中超越了Pythia和GPT-Neo.

469a98caf509001e82bbb6314f707f19.png
图:零样本表现:横轴是参数数量,竖轴是准确率

并且,增加上下文长度会导致Pile上的测试loss降低,这表明RWKV可以有效地利用长期的上下文信息。

47fb22be25c4cf189d7e441ea240a08d.png
图:增加上下文长度有助于在Pile上降低测试损失

有趣的是,在RWKV-4和ChatGPT / GPT-4的比较研究显示,RWKV-4对提示工程非常敏感。当将指令风格从适合GPT调整为更适合RWKV时,RTE的F1性能甚至从44.2%增加到74.8%。作者猜想是因为RNN不能回溯处理 ( retrospective processing) 来重新调整先前信息的权重。因此为了让性能更好,期望信息应该在问题之后展示。

3f14ed393b8d69f431fa51ec475387a1.png
RTE任务的ChatGPT提示
c0cb7e7b0dc4617817d5777916c8363e.png
RTE任务的RWKV提示

总结

RWKV与Transformer表现相当,且能在训练时能够并行、在推理时保持恒定的计算和内存复杂度。

但RWKV也存在局限:比起标准Transformer的平方注意力所维护的完整信息,线性注意力和递归架构使信息通过单个向量表示在多个时间步上漏斗式传递,可能限制模型回忆非常长的上下文中细节信息的能力。并且,提示工程变得更加重要。

另外,这篇论文还不是完全版本,有些地方的描述确实不太清晰具体,让我们期待完善后的版本!


进NLP群—>加入NLP交流群

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

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

相关文章

【送书】前端系列16集-vue3范型,vue-i18n-next,watch,watchEffect

送书活动:挑选1名粉丝同学哦 免费包邮送。截止时间:2023/5/26号 19 : 00参与底部评论区说说:请在评论中分享你的阅读收获。 中台落地手记——业务服务化与数据资产化 vue-i18n-next vue3 中使用 i18n 需要安装的是 [vue-i18n v9] 的版本 npm…

Nat Biotechnol –精准 CRISPR-Cas噬菌体疗法将为重症感染患者带来福音

治疗血液系统恶性肿瘤的化学药物常会引起骨髓功能抑制(bone marrow suppression)和胃肠道黏膜炎,并伴有肠道通透性增加。肠道细菌(包括大肠杆菌)从胃肠道易位是血流感染的常见原因。肠道细菌引起血流感染导致的死亡率为…

【这个问题纠结了我好多年】3dMax到底使用Intel还是AMD的CPU更好?

随着英特尔和 AMD 的新 CPU上市,是时候进行新一轮的硬件测试了。通过以极具竞争力的价格提供大量内核,AMD 已成为 CPU 领域的有力竞争者。作为回应,英特尔已开始增加其 CPU 中的内核数量。虽然它们提供的内核数量仍然不如 AMD,但它…

基于ESP32-CAM 和 OpenCV 设计的手势控制虚拟鼠标

概述 在本文中,我们将使用ESP32-CAM和OpenCV开发手势控制虚拟鼠标。ESP32 Camera Module和Python程序可用于无线控制鼠标跟踪和点击操作。 入门者必须具备 Python、图像处理、嵌入式系统以及物联网的丰富知识。首先,我们将了解如何控制鼠标跟踪和单击,以及运行 python 程序…

《Kali渗透基础》03. 被动信息收集

kali渗透 1:被动信息收集1.1:收集内容1.2:信息用途 2:域名信息收集2.1:nslookup2.1.1:命令参数2.1.2:示例 - 命令行2.1.3:示例 - 交互式 2.2:dig2.2.1:命令参…

chatgpt赋能python:PythonSplit连续空格

Python Split 连续空格 在Python编程中,split()方法是用来将字符串按照指定的分隔符划分成一个列表。默认情况下,分隔符是空格。但是,在实际应用中,我们可能会遇到连续空格的情况,这时候split()方法会出现一些问题。本…

让你不再好奇怎样无损放大图片

随着科技的不断进步,放大图片已经成为我们生活中不可避免的需求。但是,放大图片往往会导致图片失真、模糊或者变形等问题,让人感到十分困扰。那么,你知道怎样无损放大图片吗?接下来我将分享三个无损放大图片的方法给你…

顺丰科技携手飞桨自研“智能外呼机器人”,为客户打造优质服务体验

“您好,请问是李立先生吗”,或许不少人在拨通客服电话后发现是机器人客服,都希望能快点转人工。但顺丰的“客服机器人”却是“与众不同”的存在。 顺丰已成为国内领先的快递物流综合服务商、全球第四大快递公司,依托领先的科技研发…

DailyMart02:DDD领域分解与微服务划分

大家好,今天咱们继续更新DDD&微服务系列! DailyMart是一个简单的购物商城,主要销售书籍,包括实体书和电子书。本文将使用领域驱动设计(DDD)对DailyMart的业务进行分析与优化,以提高系统的内…

今天的技术干货由 ChatGPT 买单了~~

ChatGPT 技术最近有多火就不用再介绍了吧,连超级大佬都说了 ChatGPT 这是几百年不遇的、类似发明电的工业革命一样的机遇。 这种机遇当然不能错过,使用得当那就像玄幻小说里的男主角开了挂一样,用来做快速查询、资料搜集、辅助学习相当不错&a…

ip网络广播对讲的特点

随着科技的不断发展,通讯方式也在不断地变革。传统的对讲机已经无法满足现代化沟通的需求,特别是在大型企业、学校和安保等领域对讲机的局限性已经显现出来。而一种新型通讯方式:IP网络广播对讲正在逐渐受到人们的关注和使用。本篇文章将围绕…

chatgpt赋能python:Python工程师必知:掌握Pythonspdiags用于高效稀疏矩阵计算

Python工程师必知:掌握Python spdiags用于高效稀疏矩阵计算 在机器学习和数据分析中,我们常常需要处理大量的数据集来进行模型训练和预测,但是在实际应用中,很多数据集都是稀疏的。这时候,稀疏矩阵的计算就变得非常重…

2023年网络安全自治区职业院校技能大赛暨全国职业院校技能大赛新疆选拔赛任务书

2023年自治区职业院校技能大赛暨全国职业院校技能大赛新疆选拔赛任务书 一、竞赛时间 总计:360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件…

linux安装并启动nacos

前提准备 下载最新稳定版本,此处以nacos-server-2.1.0.tar.gz版本为例安装下载地址:https://github.com/alibaba/nacos/releases 二、具体步骤2.1 下载完成后解压:tar -zxvf nacos-server-2.1.0.tar.gz 2.2 将解压文件移动到/usr/local目录下…

生活中有趣好玩的产品设计

生活纷繁忙碌,设计无处不在。我们的衣食住行、吃喝玩乐都在跟设计打交道,创作奇才们用竭尽所能的心智引导和体验设计,吸引着我们的注意力。 这其中充满着做产品的思路,散发着智慧的光芒,留心观察就会发现很多有趣好玩的…

机器视觉陶瓷板外观检测设备有哪些优点?

随着制造业的不断发展,各种各样的产品被生产出来,其中陶瓷板是一种被广泛应用的材料。然而,由于制造过程中的各种因素,陶瓷板的表面可能存在各种缺陷,比如裂纹、气泡、凹凸不平等问题,这些问题会影响到产品…

惊呆!用streamlit快速搭建炫酷站点!

大家注意:因为微信最近又改了推送机制,经常有小伙伴说错过了之前被删的文章,比如前阵子冒着风险写的爬虫,再比如一些限时福利,错过了就是错过了。 所以建议大家加个星标,就能第一时间收到推送。&#x1f44…

C++ MFC 学习笔记+小型通讯录系统实现

MFC 最详细入门教程 [MFC常用函数总结](https://www.cnblogs.com/jiu0821/p/4606639.html) [C & MFC]https://www.cnblogs.com/gaohongchen01/p/4176963.html [MFC入门(一)]https://www.cnblogs.com/yangyuqing/p/10283641…

FPGA远程更新/远程调试的一种简单方法

之前介绍过一种远程(无线)更新的方式,详见《起飞!通过无线WIFI下载调试FPGA》,这种方式缺点有两个:一是速度较慢;二是我们的设备中需要增加一个无线设备,增加成本的同时增加了暴露的…

DOUBLETROUBLE: 1实战演练

文章目录 DOUBLETROUBLE: 1实战演练一、前期准备1、相关信息 二、信息收集1、nmap探测目标靶机端口2、扫描目标网址目录3、访问网站,发现secret下有个图片4、将图片下载5、查看图片所含内容6、破解密码并查看7、登陆邮箱8、创建反弹shell9、上传反弹shell10、监听11…