结构化数据的架构:CNN、RNN 与 Transformer
Hook:三次翻倍的 OOS R²
某上海私募的小张盯着屏幕,样本外曲线又一次贴着零线晃。他在沪深300 成份股上做日内分钟收益预测,输入是过去 60 根 1 分钟 OHLCV(open / high / low / close / volume)五通道、共 300 维向量,模型是上一课刚训完的深度 5、宽度 256 的多层感知机(multilayer perceptron, MLP)。样本内 漂亮,样本外 ——典型的高方差过拟合。Dropout、weight decay、early stopping 全套上完仍纹丝不动,瓶颈不在训练技巧,而在假设空间本身。
研究主管周一丢下一句话:「把网络架构换成跟数据形状匹配的。」三周后小张交出三份回测:MLP 换成 1-D 卷积神经网络(convolutional neural network, CNN),OOS 翻到 0.011;在卷积主干上接一个长短期记忆(long short-term memory, LSTM),跳到 0.022;最后用一个 4 层小型 Transformer 处理 240 根分钟序列(约一个 T+1 交易日),落到 0.046。每一步样本内 反而下降,样本外却稳步抬升——「归纳偏置即容量控制」(inductive bias as capacity control)在生效。本课讲清楚每一步「省下来」的容量去哪儿了。
一、CNN:把「平移等变」写进权重
把分钟 OHLCV 序列当成一个长度 60、通道数 5 的 1-D 网格。卷积层用一个长度 、通道数 的核(kernel)在时间维上滑动——数学上是互相关(cross-correlation,机器学习里通常仍叫卷积):
核心是两条结构性约束:权值共享(weight sharing,同一组核在所有空间位置上重复使用)与平移等变(translation equivariance,,把输入整体平移、输出也跟着平移)。这两条把参数数量按数量级压下来:对 的输入(约 15 万维)接 256 维隐层的全连接(fully connected, FC)层有约 3,800 万参数;而一个 、64 通道的卷积层只有约 1.7k 参数——压缩比超过 20,000 倍。
这不是「等比缩小」——它把「图像中的同一只猫,无论在左上还是右下,都应被同一个特征检测器识别」这条先验写死进假设空间 。落到分钟 OHLCV 上,先验变成:早上 10:00 的某种突破形态与下午 14:30 的同一形态,应共享同一份检测权重。
二、池化、步长与典型 CNN 栈
池化(pooling)——最常用的是最大池化(max-pooling)与平均池化(average-pooling)——把局部邻域压成单一数值,显式降低空间分辨率,用「位置精度」换「平移不变性」(translation invariance,注意与等变性的区别:不变 = 输出不动,等变 = 输出按相同方式跟着动)与算力。配合步长(stride)与填充(padding),典型 CNN 分类器是 [Conv-BN-ReLU-Pool] × N → GlobalAvgPool → Linear 的栈。
历史标杆三家:LeNet(LeCun 1998)证明梯度法能训练卷积栈;AlexNet(Krizhevsky 2012)在 ImageNet 上把 CNN 推到大规模 GPU 时代;ResNet(何恺明 2015)的恒等捷径(identity shortcut)让网络越过 30 层仍能稳定训练——这是深度学习单条最重要的架构创新。
三、RNN → LSTM:沿时间轴的「梯度高速公路」
分钟序列并不平移对称(早盘开盘段与午后的统计特性差异显著),CNN 的等变先验略嫌粗糙。循环神经网络(recurrent neural network, RNN)改写先验为「数据由带隐状态的马尔可夫过程生成」,把过去全部信息压在状态向量 里:
按时间展开后用沿时间反向传播(backpropagation through time, BPTT)——这正是上一模块第 2 课反向模式自动微分(reverse-mode AD)在另一张计算图上的直接复用。重复乘以同一个 ,梯度按 指数收缩或爆炸,即梯度消失/爆炸(vanishing / exploding gradient)。
LSTM(Hochreiter & Schmidhuber 1997)用一条几乎只做加法的细胞状态(cell state) 作为「梯度高速公路」,再用三道门(遗忘门、输入门、输出门)学习写、读、忘:
门控循环单元(gated recurrent unit, GRU,Cho et al. 2014)是 LSTM 的精简版,只有重置门与更新门。LSTM / GRU 在长度 的序列上稳定可训;再长就力不从心——这是把它推下舞台的直接原因。
四、Transformer:把先验改成「按内容路由」
Vaswani et al. (2017)的 Transformer 把序列建模重写为「所有位置两两交互,但交互强度由内容相似度决定」。给定输入 ,三组线性投影 、、 把它映成查询(query)、键(key)、值(value),缩放点积自注意力(scaled dot-product self-attention)定义为:
四条性质要反复念:(i) 排列等变——打乱输入位置,输出按相同方式打乱,必须另加位置编码(positional encoding,正弦或可学习)注入顺序;(ii) 全局 两两交互——任意两位置之间存在常数长度的梯度路径,RNN 的梯度消失病灶在此消失;(iii) 位置维度并行——无递归依赖,GPU 利用率比 RNN 高一个数量级;(iv) 按内容路由——注意力权重由 相似度决定,而非绝对位置。多头注意力(multi-head attention)把这套并行做 份再拼接:
把多头注意力 + 位置-wise 前馈网络(两层 MLP + GELU)+ 残差连接 + 层归一化(LayerNorm)串成一个 Transformer 块,堆 层就是 BERT / GPT 系的骨架。
Formula Explorer
n*n*d + n*d*d上面的滑块画出 Transformer 块的总算力开销:左项 是注意力相似度,右项 是前馈层;当 时前者开始主导——这也是「长上下文」(long context)成为研究热点的根本原因。
五、练习:手算 4-token 自注意力
Exercise
设 、,输入
(为了让你手算可控,投影矩阵都取单位阵)。
(i) 写出 。
(ii) 计算 的每一项,再把所有项除以 。
(iii) 对 的每一行做 softmax,得到注意力权重矩阵 。
(iv) 计算输出 。
提示
提示
提示
六、三种架构,三种容量塑形
回到 2.6.1 的偏差—方差 / 归纳偏置(inductive bias)框架。CNN、RNN、Transformer 不是「越强越好」三件套,而是把不同的领域先验写进 :
- CNN:「特征平移等变且局部」——适合图像、声谱图、平移对称的网格数据。
- RNN / LSTM:「数据由带隐状态的马尔可夫过程生成, 是被压缩的充分摘要」——本质上用学习版的条件期望(conditional expectation) 更新状态。
- Transformer:「位置两两交互,但路由由内容相似度而非绝对位置决定」——最弱的位置先验,最强的内容路由能力。
每条先验都把假设空间砍掉一大块「与数据形态不相容」的废区,在不削弱表达力的前提下提高样本效率,比任何显式正则化都彻底:后者画参数空间的边界,前者重塑空间本身。代价是误指定风险(misspecification risk)。带回沪深300 实战:经典因子模型(factor model)以「截面收益由少数公共因子驱动」为先验,与 CNN 同源——都把假设空间向有结构的子流形收。CN 私募(如幻方 / DeepSeek 系)2018 年后从 LSTM 全面迁移到 Transformer,即承认「分钟级动量(momentum)与反转信号的依赖距离已超出 LSTM 的有效记忆窗口」。
七、Capstone 总结与通往下一模块
至此 2.6.3 神经网络模块收官:四节课走完 MLP → 反向传播 → 优化与正则化 → 结构化数据架构,你握的是一套「可微分、组合式、容量可调」的假设空间工具箱。下一模块 2.6.4(无监督学习与强化学习)去掉监督标签;再后 2.6.5(量化金融中的机器学习)把这套架构丢进非平稳金融数据约束下——purged CV、信号衰减、多重检验——讲清 OOS 为何是上线水准。现代量化 ML 栈几乎全在 Transformer 之上,下个模块讲它被金融数据规训的一面。