| 第5行: |
第5行: |
| | == RWKV 模型简介 == | | == RWKV 模型简介 == |
| | | | |
| − | === '''RWKV:''' === | + | === RWKV: === |
| | | | |
| | * 近年来,基于Transformer架构的大规模语言模型在自然语言处理领域取得了显著成功,但其自注意力机制存在内存和计算复杂度随序列长度平方级增长的问题,限制了其在长序列任务中的效率。同时,传统RNN虽然具有线性复杂度,但在训练并行性和长程依赖建模方面存在不足。在此背景下,RWKV(Receptance Weighted Key-Value)架构被BlinkDL提出,旨在结合Transformer的高效训练能力(可并行化)和RNN的推理效率。 | | * 近年来,基于Transformer架构的大规模语言模型在自然语言处理领域取得了显著成功,但其自注意力机制存在内存和计算复杂度随序列长度平方级增长的问题,限制了其在长序列任务中的效率。同时,传统RNN虽然具有线性复杂度,但在训练并行性和长程依赖建模方面存在不足。在此背景下,RWKV(Receptance Weighted Key-Value)架构被BlinkDL提出,旨在结合Transformer的高效训练能力(可并行化)和RNN的推理效率。 |
| 第11行: |
第11行: |
| | * 2023 年 9 月 20 日,RWKV 开源项目正式加入 Linux 开源基金会。如今的 RWKV 项目是一个开源的非盈利组织,隶属于 Linux 基金会,部分算力曾由赞助商支持。 | | * 2023 年 9 月 20 日,RWKV 开源项目正式加入 Linux 开源基金会。如今的 RWKV 项目是一个开源的非盈利组织,隶属于 Linux 基金会,部分算力曾由赞助商支持。 |
| | | | |
| − | === '''名称含义''': === | + | === 名称含义: === |
| | | | |
| | * '''R''':Receptance,作为过去信息的接受程度的接受向量 | | * '''R''':Receptance,作为过去信息的接受程度的接受向量 |
| 第17行: |
第17行: |
| | * '''K & V''':类似传统注意力机制中的 Key 和 Value 概念 | | * '''K & V''':类似传统注意力机制中的 Key 和 Value 概念 |
| | | | |
| − | === '''核心特点''': === | + | === 核心特点: === |
| | | | |
| | * 拥有 Transformer 的并行训练能力 | | * 拥有 Transformer 的并行训练能力 |
| 第27行: |
第27行: |
| | '''RWKV''' 是 '''RNN(循环神经网络)''' 的一个变体。在深入探讨 RWKV 之前,我们有必要先了解 '''RNN 的基本原理''',特别是其 '''隐藏状态(Hidden State)''' 的概念。 | | '''RWKV''' 是 '''RNN(循环神经网络)''' 的一个变体。在深入探讨 RWKV 之前,我们有必要先了解 '''RNN 的基本原理''',特别是其 '''隐藏状态(Hidden State)''' 的概念。 |
| | | | |
| − | === '''RNN 架构与隐藏状态''' === | + | === RNN 架构与隐藏状态 === |
| | '''循环神经网络(RNN, Recurrent Neural Network)''' 是一种广泛应用于序列数据(如文本、语音、时间序列等)的深度学习模型。 | | '''循环神经网络(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(如单词或字符)。 |