| 第120行: |
第120行: |
| | [[文件: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>
| + | RWKV 模型通过递归方式模拟注意力机制,其注意力层的核心表达式如下: |
| − | *xt:当前时间步的输入向量;
| + | |
| − | *xt+1:下一时间步的输出;
| + | <math> |
| − | *R,K,V:分别表示 RWKV 中的 '''Receptance(门控)、Key、Value''' 投影矩阵;
| + | x_{t+1} = \sigma(R x_t) \cdot \frac{\exp(K x_t) \cdot a_t + \exp(W) \cdot (V x_t)}{\exp(K x_t) + \exp(W) \cdot b_t} |
| − | *W:时间衰减常数,是可学习参数,用于模拟历史的指数衰减;
| + | </math> |
| − | *at,bt:前一时刻累积的加权值与归一化因子,用于递归地保留历史信息;
| + | |
| − | *σ(Rxt):Receptance 门控函数,控制信息是否更新,相当于 LSTM 的门结构;
| + | 其中: |
| − | *分数部分(分子/分母):模拟了注意力加权求和的效果,只不过是用递推形式累积,而非对整段序列做自注意力计算。
| + | |
| − | 这个表达式体现的是 '''RWKV 用递推的方式模拟注意力机制'''。不同于 Transformer 的全局注意力(需要对所有 token 做乘积和归一化),RWKV 在每一个时间步只更新当前与历史的加权平均值,用指数衰减模拟注意力分布,极大地提高了推理效率。
| + | <math>x_t</math>:当前时间步的输入向量; |
| | + | <math>x_{t+1}</math>:下一时间步的输出向量; |
| | + | <math>R, K, V</math>:分别表示 RWKV 中的 Receptance(门控)、Key、Value 的线性投影矩阵; |
| | + | <math>W</math>:时间衰减常数,是一个可学习参数,用于模拟历史信息的指数衰减; |
| | + | <math>a_t, b_t</math>:前一时刻累积的加权值与归一化因子,用于递归地保留历史状态; |
| | + | <math>\sigma(R x_t)</math>:Receptance 门控函数,控制新信息是否被写入输出,功能类似于 LSTM 中的门控机制; |
| | + | 分数部分(分子/分母):模拟了注意力加权求和的效果,但通过递推方式实现,而非传统 Transformer 中的全局自注意力机制。 |
| | + | 该表达式体现了 RWKV 的核心思想:通过递推公式模拟注意力机制 。与 Transformer 中需对整个序列进行自注意力计算不同,RWKV 在每个时间步仅更新当前输入与历史信息的加权平均,利用指数衰减结构模拟注意力分布,从而大幅提升了推理效率,同时保持了长程依赖建模能力。 |
| | * '''核心机制代码''' | | * '''核心机制代码''' |
| | <syntaxhighlight lang="python3"> | | <syntaxhighlight lang="python3"> |