Raki的读paper小记:Retentive Network: A Successor to Transformer for Large Language Models

Abstract&Introduction&Related Work

  • 研究任务
    语言模型的基础架构
  • 已有方法和相关工作
    • S4,H3,Hyena,Linear Transformer
    • 用核函数近似注意力,以便将自回归推理重写为循环形式
    • 回归到使用循环模型进行高效推理,但牺牲了训练并行性。为了弥补这一点,使用元素级操作[PAA+23]进行加速,但同时损害了表示能力和性能
    • 尝试用其他机制取代注意力,例如S4[GGR21]及其变体[DFS+22,PMN+23]
  • 面临挑战
  • 创新思路
    • RetNet = linear attention + rope + 显式衰减(即 γ \gamma γ
  • 实验结论
    实现了不可能三角,实现了O(1)推理
    在这里插入图片描述

在这里插入图片描述

Retentive Networks

先来看一下Retention跟Attention的区别,首先第一眼感觉retention有点像RNN和LSTM

attention的计算方式是QK做矩阵乘法,使用query和key计算权重分布,对value加权

retention使用了一个线性衰减参数 γ \gamma γ,使用了一个状态向量S

给定输入 X ∈ R ∣ x ∣ × d m o d e l X\in\mathbb{R}^{|x|\times d_{\mathrm{model}}} XRx×dmodel,我们将其投影到一维函数 v ( n ) = X n ⋅ w V v(n) = X_n · w_V v(n)=XnwV。考虑一个序列建模问题,通过状态 s n s_n sn v ( n ) v(n) v(n)映射为 o ( n ) o(n) o(n), 为简单起见,用 v n 、 o n v_n、o_n vnon 表示 v ( n ) v(n) v(n) o ( n ) o(n) o(n), 以递归方式形式化映射过程:

s n = A s n − 1 + K n T v n , A ∈ R d × d , K n ∈ R 1 × d o n = Q n s n = ∑ m = 1 n Q n A n − m K m T v m , Q n ∈ R 1 × d \begin{aligned}s_n&=As_{n-1}+K_n^\mathsf{T}v_n,&A\in\mathbb{R}^{d\times d},K_n\in\mathbb{R}^{1\times d}\\o_n&=Q_ns_n=\sum_{m=1}^nQ_nA^{n-m}K_m^\mathsf{T}v_m,&Q_n\in\mathbb{R}^{1\times d}\end{aligned} snon=Asn1+KnTvn,=Qnsn=m=1nQnAnmKmTvm,ARd×d,KnR1×dQnR1×d

将vn映射到状态向量sn,并通过线性变换来递归地编码序列信息。接下来使投影 Q n Q_n Qn K n K_n Kn变得与内容相关: Q = X W Q , K = X W K Q=XW_{Q},\quad K=XW_{K} Q=XWQ,K=XWK

将矩阵A对角化 A = Λ ( γ e i θ ) Λ − 1 A=\Lambda(\gamma e^{i\theta})\Lambda^{-1} A=Λ(γeiθ)Λ1,由 A n − m = Λ ( γ e i θ ) n − m Λ − 1 \text{ }A^{n-m}= \Lambda(\gamma e^{i\theta})^{n-m}\Lambda^{-1}  Anm=Λ(γeiθ)nmΛ1得到 o ( n ) o(n) o(n)改进后的输出表达式:
o n = ∑ m = 1 n Q n ( γ e i θ ) n − m K m ⊺ v m = ∑ m = 1 n ( Q n ( γ e i θ ) n ) ( K m ( γ e i θ ) − m ) ⊺ v m \begin{aligned} o_{n}& =\sum_{m=1}^nQ_n(\gamma e^{i\theta})^{n-m}K_m^\intercal v_m \\ &=\sum_{m=1}^n(Q_n(\gamma e^{i\theta})^n)(K_m(\gamma e^{i\theta})^{-m})^\intercal v_m \end{aligned} on=m=1nQn(γeiθ)nmKmvm=m=1n(Qn(γeiθ)n)(Km(γeiθ)m)vm

Q n ( γ e i θ ) n , K m ( γ e i θ ) − m Q_{n}(\gamma e^{i\theta})^{n},K_{m}(\gamma e^{i\theta})^{-m} Qn(γeiθ)n,Km(γeiθ)m 在xPos中被大家周知,这里使用了类似Transformer中提出的相对位置嵌入。我们进一步将γ简化为一个标量: o n = ∑ m = 1 n γ n − m ( Q n e i n θ ) ( K m e i m θ ) † v m o_n=\sum_{m=1}^n\gamma^{n-m}(Q_ne^{in\theta})(K_me^{im\theta})^\dagger v_m on=m=1nγnm(Qneinθ)(Kmeimθ)vm

The Parallel Representation of Retention

最后retention的公式如下:
Q = ( X W Q ) ⊙ Θ , K = ( X W K ) ⊙ Θ ‾ , V = X W V Θ n = e i n θ , D n m = { γ n − m , n ≥ m 0 , n < m Retention ( X ) = ( Q K ⊺ ⊙ D ) V Q=(XW_Q)\odot\Theta,\quad K=(XW_K)\odot\overline{\Theta},\quad V=XW_V\\\Theta_n=e^{in\theta},\quad D_{nm}=\left\{\begin{matrix}\gamma^{n-m},&n\geq m\\0,&n<m\end{matrix}\right.\\\text{Retention}(X)=(QK^\intercal\odot D)V Q=(XWQ)Θ,K=(XWK)Θ,V=XWVΘn=einθ,Dnm={γnm,0,nmn<mRetention(X)=(QKD)V
在这里插入图片描述
也可以写成循环的方式:
S n = γ S n − 1 + K n ⊺ V n Retention ( X n ) = Q n S n , n = 1 , ⋯ , ∣ x ∣ \begin{array}{l}S_n=\gamma S_{n-1}+K_n^\intercal V_n\\\text{Retention}(X_n)=Q_nS_n,\quad n=1,\cdots,|x|\end{array} Sn=γSn1+KnVnRetention(Xn)=QnSn,n=1,,x

保持机制的分块循环表示

为了加速训练,特别是对于较长的序列,这里采用了一种并行表示和循环表示的混合形式。将输入序列分成块。在每个块内,采用并行表示进行计算。跨块信息通过循环表示传递。具体来说,设B表示块长度。我们通过以下方式计算第i个块的保持输出:
Q [ i ] = Q B i : B ( i + 1 ) , K [ i ] = K B i : B ( i + 1 ) , V [ i ] = V B i : B ( i + 1 ) R i = K [ i ] ⊺ V [ i ] + γ B R i − 1 Retention ⁡ ( X [ i ] ) = ( Q [ i ] K [ i ] T ⊙ D ) V [ i ] ⏟ Inner-Chunk + ( Q [ i ] R i ) ⊙ ξ ⏟ Cross-Chunk , ξ i j = γ i + 1 \begin{aligned} &Q_{[i]}=Q_{Bi:B(i+1)},\quad K_{[i]}=K_{Bi:B(i+1)},\quad V_{[i]}=V_{Bi:B(i+1)} \\ R_{i}& =K_{[i]}^\intercal V_{[i]}+\gamma^BR_{i-1} \\ \operatorname{Retention}(X_{[i]})& =\underbrace{(Q_{[i]}K_{[i]}^{\mathsf{T}}\odot D)V_{[i]}}_\text{Inner-Chunk}+\underbrace{(Q_{[i]}R_i)\odot\xi}_\text{Cross-Chunk},\quad\xi_{ij}=\gamma^{i+1} \end{aligned} RiRetention(X[i])Q[i]=QBi:B(i+1),K[i]=KBi:B(i+1),V[i]=VBi:B(i+1)=K[i]V[i]+γBRi1=Inner-Chunk (Q[i]K[i]TD)V[i]+Cross-Chunk (Q[i]Ri)ξ,ξij=γi+1

跟attention的示意图对比:
在这里插入图片描述

Gated Multi-Scale Retention

在每一层中,我们使用 h = d m o d e l / d h = d_{model}/d h=dmodel/d个retention heads,其中d是头的维度。这些头使用不同的参数矩阵 W Q 、 W K 、 W V ∈ R d m o d e l × d m o d e l W_Q、W_K、W_V\in\mathbb{R}^{d_{\mathrm{model}}\times d_{\mathrm{model}}} WQWKWVRdmodel×dmodel 。多尺度保持(MSR)为每个头分配不同的γ。为了简单起见,我们在不同层之间设置相同的γ,并将它们固定。此外,我们添加了一个Swish门[HG16, RZL17]来增加保持层的非线性。具体而言,给定输入X,我们定义该层为:
γ = 1 − 2 − 5 − a r a n g e ( 0 , h ) ∈ R h h e a d i = Retention ⁡ ( X , γ i ) Y = G r o u p Norm h ( C o n c a t ( h e a d 1 , ⋯ , h e a d h ) ) M S R ( X ) = ( s w i s h ( X W G ) ⊙ Y ) W O \begin{aligned} \gamma& =1-2^{-5-\mathrm{arange}(0,h)}\in\mathbb{R}^h \\ \mathrm{head}_{i}& =\operatorname{Retention}(X,\gamma_i) \\ \boldsymbol{Y}& =\mathrm{Group}\text{Norm}_h(\mathrm{Concat}(\mathrm{head}_1,\cdots,\mathrm{head}_h)) \\ \mathop{\mathrm{MSR}}(X)& =(\mathrm{swish}(XW_{G})\odot Y)W_{O} \end{aligned} γheadiYMSR(X)=125arange(0,h)Rh=Retention(X,γi)=GroupNormh(Concat(head1,,headh))=(swish(XWG)Y)WO

组归一化(GroupNorm)[WH18]用于对每个头的输出进行归一化,遵循在[SPP+19]中提出的SubLN。请注意,不同的γ尺度会导致不同的方差统计数据。因此,我们分别对头的输出进行归一化。保持机制的伪代码总结在图4中:
在这里插入图片描述
归一化:
在这里插入图片描述
packed embeddings X 0 = [ x 1 , ⋯ , x ∣ x ∣ ] ∈ R ∣ x ∣ × d m o d e l X^0=[\boldsymbol{x}_1,\cdots,\boldsymbol{x}_{|x|}]\in\mathbb{R}^{|x|\times d_{\mathrm{model}}} X0=[x1,,xx]Rx×dmodel 作为模型输入,计算模型输出:

Y l = M S R ( L N ( X l ) ) + X l X l + 1 = F F N ( L N ( Y l ) ) + Y l \begin{aligned}Y^l&=\mathrm{MSR}(\mathrm{LN}(X^l))+X^l\\X^{l+1}&=\mathrm{FFN}(\mathrm{LN}(Y^l))+Y^l\end{aligned} YlXl+1=MSR(LN(Xl))+Xl=FFN(LN(Yl))+Yl

LN是layernorm
F F N ( X ) = g e l u ( X W 1 ) W 2 FFN(X) = gelu(XW_1)W_2 FFN(X)=gelu(XW1)W2

在训练过程中,我们使用并行和分块循环表示。序列内或块内的并行化有效地利用GPU加速计算。更重要的是,分块循环特别适用于长序列训练,无论是在FLOPs还是内存消耗方面都非常高效

在推理过程中,我们采用循环表示,这非常适合自回归解码。O(1)复杂度降低了内存和推理延迟,同时实现了相同的结果

与其他方法的差异:
在这里插入图片描述

Experiments

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

Conclusions

在本研究中,我们提出了保持网络(RetNet)用于序列建模,实现了多种表示方式,即并行、循环和分块循环。相比Transformer,RetNet在推理效率(内存、速度和延迟方面)、训练并行化和竞争性能方面都取得了显著优势。上述优势使得RetNet成为大型语言模型中理想的Transformer继任者,特别是考虑到O(1)推理复杂度带来的部署优势。未来,我们希望在模型规模[CDH+22]和训练步骤方面扩展RetNet。此外,通过压缩长期记忆,保持机制能够高效地与结构化提示[HSB+22b]结合使用。我们还将使用RetNet作为骨干架构来训练多模式大型语言模型[HSB+22a,HDW+23,PWD+23]。此外,我们对在各种边缘设备上部署RetNet模型,如移动手机等,也充满兴趣。

Remark

用线性注意力+rope位置编码+权重衰减,得到了在小任务上的效率和效果全方面吊打transformer的结果,但是长距离建模能力暂时未知,毕竟transformer的建模是能看到前面所有模块,而retnet是由前一个状态转移得来,有cherry picking可能,不过不管如何,都是一个了不起的工作,如tianxiang哥所说,文本的diffusion时期可能很快就要到来,一举成为取代attention方式decoder的超强方法,甚至于不用regressive方式的解码(but我自己觉得自回归就是我心目中的终极奥义了,至少是终极奥义的组成部分,不可能被完全不使用),期待后续工作推进在长序列上的建模能力,不管如何,在low resource的情况下,retnet这种架构必然会大展身手,毕竟transformer的推理代价过高导致很多情况都是不可能使用(以目前的硬件水平 不过我很相信老黄),嗯 希望成为或者引出下一个划时代的工作

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Coremail RSAC大会观察:在邮件安全领域AI既是矛也是盾

《Coremail RSAC大会观察&#xff1a;在邮件安全领域AI既是矛也是盾》 全球网络安全界的盛会——2023年RSAC大会于当地时间4月24日-27日在美国旧金山召开&#xff0c;大会以“Stronger Together&#xff08;一起变得更强大&#xff09;”为主题&#xff0c;议程主要包含安全研…

小红书软件,自动文案神器,爆文效率UP

小红书软件&#xff0c;自动文案神器&#xff0c;爆文效率UP&#xff01;#小红书推广#小红书营销#百收小红书 Hello大家好&#xff0c;我是百收&#xff0c;今天给大家分享的是小红书&#xff0c;三步快速打造爆款笔记可批量可复制。那话不多说先给大家看一下呃&#xff0c;学…

5个AI人工智能平台推荐,绘画、写作文案、文章一键生成

随着人工智能技术的快速发展&#xff0c;AI原创文章写作平台也愈加成熟和完善&#xff0c;让文章的创作变得更加便捷、高效、优质。下面介绍五个国内知名的AI原创文章写作平台&#xff0c;它们各有特色&#xff0c;可以满足您的不同需求。 5个AI人工智能平台推荐&#xff1a; …

沉浸式翻译

chrome沉浸式翻译插件 网页双语翻译&#xff0c;完全免费使用&#xff0c;支持Deepl/Google/Bing/腾讯/有道等。 一款免费、用户友好、简洁、革命性、广受好评的人工智能双语网络翻译扩展程序&#xff0c;可帮助您有效地弥合信息差距&#xff0c;也可在移动设备上使用&#xff…

ChatGPT新功能探索,沉浸式内容处理体验

ChatGPT已经正在广泛被企业接受&#xff0c;用来大幅提高效率。但传统的聊天模式在大篇幅文字处理时并不好用。因此新功能“沉浸内容处理模式”被推出&#xff0c;用来应对论文、邮件、文案的编写和优化。那我们就来体验一下这个新功能效果如何。以处理工作邮件为例。 一、从传…

大型语言模型 (LLM) 的两条发展路线:Finetune v.s. Prompt

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 在大型语言模型的研究中&#xff0c;研究者对其有两种不同的期待&#xff0c;也可以理解为是两种不同的路线&#xff0c;具…

违禁敏感词检测

很多站长和自媒体人都有这样的烦恼&#xff0c;因为不慎发布违禁、违规内容比如涉黄、恐怖暴力、赌博、低俗辱骂、政治敏感等&#xff0c;导致文章下架或者网站整改。 另外&#xff0c;自从新《广告法》出台后&#xff0c;作为广告、营销人等群体在写文案的过程中必须时时注意新…

ChatGPT神器Code Interpreter,用做数据分析如此丝滑!

前几天&#xff0c;OpenAI 宣布要在一周之内将官方插件 Code Interpreter 通过设置中的 Beta 面板向所有 ChatGPT Plus 用户提供。 这个消息让很多人激动了起来&#xff0c;毕竟此前 Code Interpreter 一直处于封闭测试阶段&#xff0c;只有一小部分用户真正使用过。这些内测用…

艾瑞巴蒂看过来!OSSChat 上线:融合 CVP,试用通道已开放

还在纠结于反复查找开源项目的技术文档&#xff1f; 团队常因频繁搜索开源项目主页导致效率低下&#xff1f; 每天都要问一遍【开源项目中那些“小白问题”究竟有没有更快的解决方法&#xff1f;】 对此&#xff0c;只想对你说&#xff1a;赶紧试试 OSSChat&#xff01;赶紧试…

AI生产力工具平台AI100.ai今日正式上线,ChatGPT API和Prompt机器人免费试用

上个月&#xff0c;AI100.ai开放注册&#xff0c;我们发出1000份免费测试邀请&#xff0c;得到了开发者的积极参与和反馈&#xff0c;加速了AI00.ai的功能优化。AI00.ai今日正式上线&#xff0c;为感谢广大开发者的支持&#xff0c;现面向开发者启动ChatGPT API免费试用活动&am…

免费、不用部署SD:AI二维码制作教程

大家好&#xff0c;我是可夫小子&#xff0c;《小白玩转ChatGPT》专栏作者&#xff0c;关注AIGC、读书和自媒体。 最近&#xff0c;风格化的AI二维码&#xff0c;应该没少见吧。生成的原理大家大概也知道&#xff0c;主要通过stable diffusion和一些插件来完成&#xff0c;但对…

宠物店小程序功能有什么_分享宠物店小程序开发制作功能介绍

宠物店微信小程序主要功能有&#xff1a; 1、宠物寄养支持在线提交寄养预约&#xff0c;自主选择宠物寄养位。上门接送或自主接送。一键提交&#xff0c;摆脱繁琐流程。 2、线下买单线下店铺消费也可以使用会员余额。 3、宠物服务可以选择一键搜索或服务分类查询需要的宠物服务…

猫狗分类,猫狗大战

项目全部代码在文章末尾 1、任务描述 Cats vs. Dogs&#xff08;猫狗大战&#xff09;数据集下载地址为https://www.kaggle.com/c/dogs-vs-cats/data。这个数据集是Kaggle大数据竞赛某一年的一道赛题&#xff0c;利用给定的数据集&#xff0c;用算法实现猫和狗的识别。 其中包…

Cats vs. Dogs(猫狗大战)数据集处理

猫狗大战数据集 Cats vs. Dogs&#xff08;猫狗大战&#xff09;数据集下载地址为https://www.kaggle.com/c/dogs-vs-cats/data。这个数据集是Kaggle大数据竞赛某一年的一道赛题&#xff0c;利用给定的数据集&#xff0c;用算法实现猫和狗的识别。 其中包含了训练集和测试集&a…

宠物管理|养犬登记|宠物识别|智慧城市监控|城市犬类管理系统

关键词&#xff1a;宠物识别、宠物面部识别、宠物管理、宠物社交、宠物培训、宠物保险、鼻纹识别、宠物登记、宠物比赛、宠物走失、宠物用品、智慧宠物&#xff1b; “犬类管理”正日益成为城市治理的重要话题之一。 据最新数据&#xff0c;2020年全国犬数量为5222万只&#…

一文读懂物联网大数据产业链

原文地址 大数据开启了一个大规模生产、分享和应用数据的时代&#xff0c;它给技术和商业带来了巨大的变化。麦肯锡研究表明&#xff0c;在医疗、零售和制造业领域&#xff0c;大数据每年可以提高劳动生产率0.5-1个百分点。物联网时代&#xff0c;大数据在核心领域的渗透速度有…

专访智齿科技徐懿丨企服公司四要素:智能、融合、产品复杂度、客单价

关注52AI&#xff0c;做AI的行业领先者。QQ人工智能行业交流群&#xff1a;626784247. 01 徐懿认为&#xff1a;客服企业的两大核心要素是“融合”以及“智能”&#xff0c;围绕这两点&#xff0c;该领域所有公司将被划分为四个象限&#xff0c;而客服行业未来的趋势一定是向着…

大数据的产业链分析,大数据完整的产业链构成

大数据的产业链分析大数据完整的产业链构成&#xff0c;可分为标准与规范、数据安全、数据采集、数据存储与管理、数据分析与挖掘、数据运维以及数据应用几个环节&#xff0c;覆盖了数据从产生到应用的整个生命周期。 大数据的产业链分析 1数据标准与规范 大数据标准体系是开展…

Tableau 聚合计算 - 分组求和(sum、fixed、include的使用)

一、聚合计算例子 有以下数据&#xff1a; // 计算1 SUM(IF [shuxue]123 then [yingyu] END)// 计算2 IF [shuxue]123 then {fixed [shuxue]: SUM([yingyu])} END// 计算3 IF [shuxue]123 then {SUM([yingyu])} END// 计算4 {fixed [shuxue]: SUM([yingyu])}// 计算5 {include…

我的一些关于商业计划书的经验

一年了&#xff0c;我一直在写一个关于传媒的商业计划书&#xff0c;着急要写个商业计划书&#xff0c;才发现这个事情还真是经验活&#xff0c;加上时间紧&#xff0c;最后搞的也不太好。回头自己系统的学习了一下理论知识包括各式。我曾问我 之前的一个导师说这个东西怎么写&…