RNN 基础
本节定位
前面的 MLP 和 CNN 更擅长处理“静态输入”,而 RNN 要解决的是另一类问题:
输入不是一坨静态特征,而是一串有顺序的数据。
比如一句话、一个时间序列、一段日志、一串用户行为。
学习目标
- 理解为什么序列任务不能只靠普通 MLP 解决
- 直觉理解 RNN 的隐藏状态(hidden state)
- 看懂 RNN 在时间维度上的展开方式
- 手工走一遍最小 RNN 计算流程
- 掌握 PyTorch 中
nn.RNN的输入输出形状 - 理解 RNN 的优势和局限,为后面的 LSTM / GRU 做准备
一、为什么序列任务更难?
1.1 顺序本身就是信息
看这两句话:
- “我不喜欢这门课”
- “我喜欢这门课,不难”
如果只统计词频,它们都出现了:
- 我
- 喜欢
- 这门课
但真正决定意思的,是顺序和上下文。
再看时间序列:
- 第 1 天销量低,第 2 天升高,第 3 天爆发
这里也不是一堆独立数字,而是一个变化过程。
所以序列任务的难点不是“数据更多”,而是:
前面的信息会影响后面的理解。