更改

添加281字节 、 2025年7月20日 (日) 11:34
第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">
201

个编辑