| 第8行: |
第8行: |
| | === RWKV: === | | === RWKV: === |
| | | | |
| − | * 近年来,基于Transformer架构的大规模语言模型在自然语言处理领域取得了显著成功,但其自注意力机制存在内存和计算复杂度随序列长度平方级增长的问题,限制了其在长序列任务中的效率。同时,传统RNN虽然具有线性复杂度,但在训练并行性和长程依赖建模方面存在不足。在此背景下,RWKV架构(Receptance Weighted Key-Value)最初由彭博、BlinkDL提出,旨在结合Transformer的高效训练能力(可并行化)和RNN的推理效率。 | + | * 近年来,基于Transformer架构的大规模语言模型在自然语言处理领域取得了显著成功,但其自[[注意力机制]]存在内存和计算复杂度随序列长度平方级增长的问题,限制了其在长序列任务中的效率。同时,传统RNN虽然具有线性复杂度,但在训练并行性和长程依赖建模方面存在不足。在此背景下,RWKV架构(Receptance Weighted Key-Value)最初由彭博、BlinkDL提出,旨在结合Transformer的高效训练能力(可并行化)和RNN的推理效率。 |
| | * 正式发布的最新版本是RWKV-7,⽬前RMKV-8仍处于实验阶段。RWKV-7 "Goose"作为该系列的最新进展,通过恒定内存占用和每token恒定推理时间的设计,解决了传统Transformer的长序列处理瓶颈。 | | * 正式发布的最新版本是RWKV-7,⽬前RMKV-8仍处于实验阶段。RWKV-7 "Goose"作为该系列的最新进展,通过恒定内存占用和每token恒定推理时间的设计,解决了传统Transformer的长序列处理瓶颈。 |
| | * 2023 年 9 月 20 日,RWKV 开源项目正式加入 Linux 开源基金会。如今的 RWKV 项目是一个开源的非盈利组织,隶属于 Linux 基金会,部分算力曾由赞助商支持。 | | * 2023 年 9 月 20 日,RWKV 开源项目正式加入 Linux 开源基金会。如今的 RWKV 项目是一个开源的非盈利组织,隶属于 Linux 基金会,部分算力曾由赞助商支持。 |
| 第92行: |
第92行: |
| | [[文件:Tokenshift.png|缩略图|居中|rwkv-architecture-for-language-modeling<ref name=":1" />]] | | [[文件:Tokenshift.png|缩略图|居中|rwkv-architecture-for-language-modeling<ref name=":1" />]] |
| | *'''注意力层简化表达''' | | *'''注意力层简化表达''' |
| − | * <math>x_{t+1} = \sigma(Rx_t) \cdot \frac{\exp(Kx_t) \cdot (Vx_t) + \exp(W) \cdot a_t}{\exp(Kx_t) + \exp(W) \cdot b_t} </math> | + | *<math>x_{t+1} = \sigma(Rx_t) \cdot \frac{\exp(Kx_t) \cdot (Vx_t) + \exp(W) \cdot a_t}{\exp(Kx_t) + \exp(W) \cdot b_t} </math> |
| − | **xt:当前时间步的输入向量;
| + | *xt:当前时间步的输入向量; |
| − | **xt+1:下一时间步的输出;
| + | *xt+1:下一时间步的输出; |
| − | **R,K,V:分别表示 RWKV 中的 '''Receptance(门控)、Key、Value''' 投影矩阵;
| + | *R,K,V:分别表示 RWKV 中的 '''Receptance(门控)、Key、Value''' 投影矩阵; |
| − | **W:时间衰减常数,是可学习参数,用于模拟历史的指数衰减;
| + | *W:时间衰减常数,是可学习参数,用于模拟历史的指数衰减; |
| − | **at,bt:前一时刻累积的加权值与归一化因子,用于递归地保留历史信息;
| + | *at,bt:前一时刻累积的加权值与归一化因子,用于递归地保留历史信息; |
| − | **σ(Rxt):Receptance 门控函数,控制信息是否更新,相当于 LSTM 的门结构;
| + | *σ(Rxt):Receptance 门控函数,控制信息是否更新,相当于 LSTM 的门结构; |
| − | **分数部分(分子/分母):模拟了注意力加权求和的效果,只不过是用递推形式累积,而非对整段序列做自注意力计算。
| + | *分数部分(分子/分母):模拟了注意力加权求和的效果,只不过是用递推形式累积,而非对整段序列做自注意力计算。 |
| | 这个表达式体现的是 '''RWKV 用递推的方式模拟注意力机制'''。不同于 Transformer 的全局注意力(需要对所有 token 做乘积和归一化),RWKV 在每一个时间步只更新当前与历史的加权平均值,用指数衰减模拟注意力分布,极大地提高了推理效率。 | | 这个表达式体现的是 '''RWKV 用递推的方式模拟注意力机制'''。不同于 Transformer 的全局注意力(需要对所有 token 做乘积和归一化),RWKV 在每一个时间步只更新当前与历史的加权平均值,用指数衰减模拟注意力分布,极大地提高了推理效率。 |
| | * '''核心机制代码''' | | * '''核心机制代码''' |