更改

跳到导航 跳到搜索
删除741字节 、 2025年7月20日 (日) 11:14
第31行: 第31行:     
== RWKV 模型结构 ==
 
== RWKV 模型结构 ==
−
'''RWKV''' 是 '''RNN(循环神经网络)''' 的一个变体。在深入探讨 RWKV 之前,我们有必要先了解 RNN 的基本原理,特别是其 '''隐藏状态(Hidden State)''' 的概念。
+
'''RWKV''' 是 '''[[循环神经网络]]''' 的一个变体。在深入探讨 RWKV 之前,我们有必要先了解 RNN 的基本原理,特别是其 '''隐藏状态(Hidden State)''' 的概念。
    
=== RNN 架构与隐藏状态 ===
 
=== RNN 架构与隐藏状态 ===
−
'''循环神经网络(RNN, Recurrent Neural Network, RNN)''' 是一种广泛应用于序列数据(如文本、语音、时间序列等)的深度学习模型。
+
'''[[循环神经网络]]([[RNN]], Recurrent Neural Network)''' 是一种广泛应用于序列数据(如文本、语音、时间序列等)的深度学习模型。
   −
==== RNN 的核心机制:隐藏状态 ====
+
==== [[RNN]] 的核心机制:隐藏状态 ====
−
RNN 在运行过程中会维护一个 '''隐藏状态(Hidden State)''',可以将其类比为 RNN 的“记忆”或“心理状态”。
+
[[RNN]] 在运行过程中会维护一个 '''隐藏状态(Hidden State)''',可以将其类比为 [[RNN]] 的“记忆”或“心理状态”。
   −
* 就像人类在思考时,大脑会保留与当前任务最相关的“关键信息”一样,RNN 的隐藏状态存储了网络在处理序列时的上下文信息。
+
* 就像人类在思考时,大脑会保留与当前任务最相关的“关键信息”一样,[[RNN]] 的隐藏状态存储了网络在处理序列时的上下文信息。
−
* 每当 RNN 处理一个新的输入(如一个 '''token'''),它会结合 '''当前隐藏状态''' 计算输出,并更新自身的隐藏状态,以便影响后续的计算。
+
* 每当 [[RNN]] 处理一个新的输入(如一个 '''token'''),它会结合 '''当前隐藏状态''' 计算输出,并更新自身的隐藏状态,以便影响后续的计算。
−
==== RNN 的工作流程 ====
+
==== [[RNN]] 的工作流程 ====
   −
# '''输入处理''':RNN 依次接收序列中的每个 token(如单词或字符)。
+
# '''输入处理''':[[RNN]] 依次接收序列中的每个 token(如单词或字符)。
−
# '''状态更新''':对于每个 token,RNN 结合 '''当前隐藏状态''' 计算输出,并生成 '''新的隐藏状态'''。
+
# '''状态更新''':对于每个 token,[[RNN]] 结合 '''当前隐藏状态''' 计算输出,并生成 '''新的隐藏状态'''。
 
# '''循环反馈''':更新后的隐藏状态会被传递到下一步,用于处理下一个 token。
 
# '''循环反馈''':更新后的隐藏状态会被传递到下一步,用于处理下一个 token。
−
# '''输出预测(可选)''':如果有任务需求(如语言建模),RNN 可以在每一步生成预测结果(如下一个可能的 token)。
+
# '''输出预测(可选)''':如果有任务需求(如语言建模),[[RNN]] 可以在每一步生成预测结果(如下一个可能的 token)。
    
这一过程不断循环,直到整个序列处理完毕或达到终止条件,如下图所示:[[文件:RNN.png|缩略图|替代=RNN结构示意图|居中|RNN结构示意图|800x800像素]]
 
这一过程不断循环,直到整个序列处理完毕或达到终止条件,如下图所示:[[文件:RNN.png|缩略图|替代=RNN结构示意图|居中|RNN结构示意图|800x800像素]]
第53行: 第53行:     
* '''LayerNorm'''
 
* '''LayerNorm'''
−
LayerNorm 的标准定义如下:
     −
:<math>\text{LayerNorm}(x) = \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} \cdot \gamma + \beta</math>
  −
  −
其中:
  −
  −
<math>x \in \mathbb{R}^d</math>:输入向量
  −
  −
<math>\mu = \frac{1}{d} \sum_{i=1}^{d} x_i</math>:均值
  −
  −
<math>\sigma^2 = \frac{1}{d} \sum_{i=1}^{d} (x_i - \mu)^2</math>:方差
  −
  −
<math>\epsilon</math>:小常数,防止除零
  −
  −
<math>\gamma, \beta</math>:可学习的缩放和平移参数
  −
  −
LayerNorm 通常作用于每个时间步的输入向量 <math>x_t</math>,即:
  −
  −
:<math>\tilde{x}_t = \text{LayerNorm}(x_t)</math>
  −
  −
然后将 <math>\tilde{x}_t</math> 用于后续的 TimeMix 操作,如:
  −
  −
:<math>k_t = W_k \cdot \left(\tilde{x}t \cdot (1 - w{\text{mixk}}) + \tilde{x}{t-1} \cdot w{\text{mixk}}\right)</math>
   
* '''TimeMix'''
 
* '''TimeMix'''
 
TimeMix 的核心计算过程如下:
 
TimeMix 的核心计算过程如下:
201

个编辑

导航菜单