从 RNN 到 Transformer,再到 RWKV
本文目录8 节
1. RNN:带记忆的函数
普通神经网络一般是:
输入 x -> 输出 yRNN 不一样。它多了一个隐藏状态,也就是 memory:
当前输入 x_t + 上一次记忆 h_{t-1}-> 当前输出 y_t + 新记忆 h_t公式上可以写成:
h_t = f(x_t, h_{t-1})这个 h_t 就是 RNN 的核心。
它不是保存完整历史文本,而是把前面读过的内容压缩成一个向量。
比如一句话:
我 今天 晚上 想 吃 火锅RNN 会一个 token 一个 token 地读:
读到“我” -> 更新记忆读到“今天” -> 更新记忆读到“晚上” -> 更新记忆读到“想” -> 更新记忆读到“吃” -> 更新记忆读到“火锅” -> 更新记忆所以 RNN 的本质是:
状态机 + 神经网络它强在省。无论前面有多少 token,它理论上只需要保留一个 state。
但问题也在这里:压缩会丢信息。
如果开头说:
小明最讨厌香菜。中间隔了很多内容,最后问:
小明吃火锅不要加什么?普通 RNN 只能指望那个 h_t 还记得“香菜”。但如果前面内容太长,它很容易忘。
这就是 RNN 的老问题:
长期依赖困难梯度消失梯度爆炸后来 LSTM 和 GRU 出现,本质上就是给 RNN 加了门控机制,让它学会:
哪些旧信息要保留哪些旧信息要忘掉哪些新信息要写入当前输出要读多少记忆所以 LSTM / GRU 不是推翻 RNN,而是改良 RNN 的记忆机制。
2. Transformer:用显存换“可回看历史”
Transformer 和 RNN 最大的区别是:
它不把所有历史压缩成一个 state,而是让当前位置可以直接看历史 token。
RNN 是:
所有过去 -> 压缩成 h_t -> 预测下一个Transformer 是:
当前位置 -> 通过 attention 直接访问前面的 token -> 预测下一个所以 Transformer 更像随身带完整笔记本,需要的时候可以翻前文。
这也是它强的地方。
比如:
第 1 句:小明讨厌香菜。第 200 句:他吃火锅时不要加什么?Transformer 可以通过 attention 直接关注到前面的“香菜”。
RNN 只能靠压缩 state 记住。
但是 Transformer 的代价也很明显:推理时要保存 KV Cache。
每输入一个 token,Transformer 会为它算出:
KeyValue然后把这些 K/V 缓存起来。
所以推理时的状态大概是:
模型参数+当前激活+KV Cache上下文越长,KV Cache 越大。
RNN / RWKV 则更像:
模型参数+当前 state这就是区别。
所以你说“Transformer 保留了历史状态,模型更大”,大方向对,但要拆开:
Transformer 不一定参数更多,真正贵的是推理时保存每个历史 token 的 KV Cache。
也就是说:
Transformer:历史记忆 = 每个 token 都存一份优点 = 精确回看,不容易忘缺点 = 贵,KV cache 吃显存
RNN:历史记忆 = 压缩成一个 state优点 = 省,适合流式缺点 = 容易丢细节3. Transformer 怎么变成语言模型?
Transformer 本身只是一个序列特征处理器。它变成语言模型,需要接上几个东西:
原始文本-> tokenizer-> token ID-> embedding-> position information-> causal Transformer blocks-> hidden state-> vocab head-> logits-> softmax-> next-token probability-> cross entropy loss假设训练句子是:
我 今天 晚上 想 吃 火锅训练时会错开一位:
输入:我 今天 晚上 想 吃
目标:今天 晚上 想 吃 火锅模型每个位置都要预测下一个 token:
看到“我” -> 预测“今天”看到“我 今天” -> 预测“晚上”看到“我 今天 晚上” -> 预测“想”看到“我 今天 晚上 想” -> 预测“吃”看到“我 今天 晚上 想 吃” -> 预测“火锅”GPT 类模型用的是 causal mask,也就是每个位置只能看自己和前面的 token,不能偷看未来。
比如:
位置1 只能看 1位置2 可以看 1,2位置3 可以看 1,2,3位置4 可以看 1,2,3,4没有 causal mask,模型训练时就会直接看到答案,推理就废了。
所以 GPT 可以理解成:
GPT = Decoder-only Transformer + Causal Mask + Next Token Prediction最终,模型输出的是词表上每个 token 的概率。
比如上下文是:
我 今天 晚上 想 吃模型可能输出:
火锅:0.31烧烤:0.19面条:0.14代码:0.0008然后通过采样或贪心选择一个 token,再把它接回上下文,继续预测下一个。
这就是自回归生成。
4. 训练目标:不是背训练集,而是学条件概率分布
语言模型的训练目标通常是:
最大化 P(真实下一个 token | 前文上下文)也就是:
给前面的 token,预测下一个 token训练时用交叉熵 loss:
正确 token 概率越高 -> loss 越低正确 token 概率越低 -> loss 越高关键点是:
训练目标不是“输出和训练集最像的完整句子”,而是在每个上下文后面,给正确下一个 token 更高概率。
这就是为什么模型能输出训练集中没有的句子。
因为它不是从训练集里抽一整句出来,而是逐 token 生成。
训练集中可能有:
我喜欢吃苹果我喜欢吃香蕉她喜欢吃火锅他讨厌吃香菜模型可以生成训练集中未必出现过的:
我喜欢吃火锅因为它学到了组合规律:
我喜欢 + 吃 + 火锅语言是组合系统。有限 token 可以组合出无限句子。
所以 LLM 更像:
概率压缩器而不是:
训练集复印机当然,实话说,模型也会记忆一部分训练数据。尤其是:
高频重复文本短而固定的事实代码片段许可证文本名言模板化网页所以它不是完全不记忆,而是:
主要学分布和模式少量记忆具体样本5. 内插和外推:泛化是有范围的
模型能生成训练集之外的内容,是因为它学会了模式重组。
但这个能力不是无限的。
大概可以分三层:
训练分布内:稳分布边缘:看模型能力和上下文分布外:容易胡说内插 interpolation 是在训练数据覆盖过的区域之间组合。
比如模型见过:
RustCLI 工具文件读取错误处理你让它写一个:
Rust 命令行批量重命名文件工具这通常比较稳。因为这些东西都在它熟悉的分布附近。
外推 extrapolation 是把学过的规律往未知区域延伸。
比如:
刚发布的新 API公司内部业务规则小众 beta 框架真实实验结果最新政策这种模型就容易把旧模式硬套上去。
幻觉很多时候就是这样来的:
模型到了分布外但仍然继续输出“看起来像答案”的 token它不会天然知道自己不知道。因为底层训练目标是预测下一个 token,不是严格判断真伪。
所以:
内插:把学过的东西重新组合外推:把学过的规律往未知区域延伸幻觉:外推失败但语言形式还很像真的这也是为什么 LLM 解释经典概念、写常见代码、改文案很强;但查最新 API、判断冷门事实、做医疗法律金融决策时,需要工具、数据和验证。
6. RWKV:把 attention 的思想压进 RNN 形式
RWKV 可以理解成:
像 RNN 一样推理像 Transformer 一样训练它全称是:
Receptance Weighted Key Value它想解决的问题是:
Transformer 强,但 KV Cache 贵RNN 省,但记忆太糙所以 RWKV 走中间路线。
普通 RNN 是:
h_t = f(x_t, h_{t-1})它把当前输入和旧记忆混在一起,更新成新状态。
RWKV 更像:
当前 token 产生 K / V / R历史信息按时间衰减累计R 决定当前要读多少历史输出 = 门控后的加权历史 value几个核心组件:
R = Receptance,接收门,控制读多少历史W = Weight / time decay,控制历史信息怎么衰减K = Key,决定当前信息的重要性V = Value,真正被累积的内容所以 RWKV 不是老式 RNN 复活,而是:
把 attention 改造成可以递归更新的状态形式普通 RNN 的历史是:
history -> 一个 hRWKV 的历史更像:
history -> 带时间衰减的 K/V 累积状态这比普通 RNN 更细。
它能让不同通道学习不同的记忆长度:
有些信息短期有效有些信息需要保留很久有些通道衰减快有些通道衰减慢这就像一堆不同半衰期的记忆槽。
所以 RWKV 比普通 RNN 强,主要不是因为“循环”变厉害了,而是因为它的 state 更新方式更像 attention。
7. RWKV 和 Transformer / RNN 的位置
可以这么对比:
普通 RNN:历史被压缩进一个 hidden state省,但容易忘
LSTM / GRU:加入门控机制比普通 RNN 更会保留和遗忘
Transformer:保留每个历史 token 的 K/V cache强,但贵
RWKV:用可学习时间衰减 + K/V 累积 + Receptance 门控把 attention 思想压缩进 RNN state推理省,训练又能并行RWKV 的卖点是:
无传统 KV Cache推理 state 小适合流式生成适合长上下文低显存场景训练可以并行化但也别神化。
RWKV 没有 Transformer 那种 full attention 的精确回看能力。对于需要精确检索某个很早 token 的任务,纯 RWKV 可能不如 Transformer 稳。
所以本质取舍是:
Transformer:用显存换精确历史访问
RNN / RWKV:用压缩 state 换推理效率8. 最终心智模型
可以把这几类模型放在一张图里:
RNN:我只保留一份滚动摘要
Transformer:我保留完整历史笔记,需要时直接翻
RWKV:我也只保留滚动摘要但这个摘要是 attention 风格的 K/V 衰减状态比普通 RNN 精细很多训练目标在 LLM 里基本都一样:
给前文,预测下一个 token差别不是目标,而是:
历史怎么保存历史怎么读取训练能不能并行推理成本多高长上下文是否稳定一句话总结:
RNN 是状态压缩,Transformer 是历史直连,RWKV 是 attention 化的状态压缩。语言模型不是在复印训练集,而是在学习训练数据里的 token 条件概率分布;它能组合出新内容,但内插强、外推弱,越出训练分布越需要验证。