← 返回模块
Q2.6.3.4beta 可读 · 未来付费校验通过内容版本 2026-05-26

结构化数据的架构:CNN、RNN 与 Transformer

2.6.3 · 神经网络 · 数学与统计能力

结构化数据的架构:CNN、RNN 与 Transformer

Hook:三次翻倍的 OOS R²

某上海私募的小张盯着屏幕,样本外曲线又一次贴着零线晃。他在沪深300 成份股上做日内分钟收益预测,输入是过去 60 根 1 分钟 OHLCV(open / high / low / close / volume)五通道、共 300 维向量,模型是上一课刚训完的深度 5、宽度 256 的多层感知机(multilayer perceptron, MLP)。样本内 R2=0.42R^2 = 0.42 漂亮,样本外 R2=0.005R^2 = 0.005——典型的高方差过拟合。Dropout、weight decay、early stopping 全套上完仍纹丝不动,瓶颈不在训练技巧,而在假设空间本身。

研究主管周一丢下一句话:「把网络架构换成跟数据形状匹配的。」三周后小张交出三份回测:MLP 换成 1-D 卷积神经网络(convolutional neural network, CNN),OOS R2R^2 翻到 0.011;在卷积主干上接一个长短期记忆(long short-term memory, LSTM),跳到 0.022;最后用一个 4 层小型 Transformer 处理 240 根分钟序列(约一个 T+1 交易日),落到 0.046。每一步样本内 R2R^2 反而下降,样本外却稳步抬升——「归纳偏置即容量控制」(inductive bias as capacity control)在生效。本课讲清楚每一步「省下来」的容量去哪儿了。

一、CNN:把「平移等变」写进权重

把分钟 OHLCV 序列当成一个长度 60、通道数 5 的 1-D 网格。卷积层用一个长度 kk、通道数 CKC \to K 的核(kernel)在时间维上滑动——数学上是​​互相关​​(cross-correlation,机器学习里通常仍叫卷积):

ak(l)(i,j)=σ ⁣(c=1Cu,vWk,c(l)(u,v)ac(l1)(i+u,j+v)+bk(l))a^{(l)}_{k}(i, j) = \sigma\!\left( \sum_{c=1}^{C} \sum_{u, v} W^{(l)}_{k, c}(u, v) \, a^{(l-1)}_{c}(i + u, \, j + v) + b^{(l)}_{k} \right)

核心是两条结构性约束:​​权值共享​​(weight sharing,同一组核在所有空间位置上重复使用)与​​平移等变​​(translation equivariance,Conv(T(x))=T(Conv(x))\mathrm{Conv}(T(x)) = T(\mathrm{Conv}(x)),把输入整体平移、输出也跟着平移)。这两条把参数数量按数量级压下来:对 224×224×3224 \times 224 \times 3 的输入(约 15 万维)接 256 维隐层的全连接(fully connected, FC)层有约 3,800 万参数;而一个 3×33 \times 3、64 通道的卷积层只有约 1.7k 参数——压缩比超过 20,000 倍。

这不是「等比缩小」——它把「图像中的同一只猫,无论在左上还是右下,都应被同一个特征检测器识别」这条先验写死进假设空间 H\mathcal{H}。落到分钟 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)改写先验为「数据由带隐状态的马尔可夫过程生成」,把过去全部信息压在状态向量 hth_t 里:

ht=σ ⁣(Whht1+Wxxt+b),yt=Wyhth_t = \sigma\!\left( W_h h_{t-1} + W_x x_t + b \right), \quad y_t = W_y h_t

按时间展开后用​​沿时间反向传播​​(backpropagation through time, BPTT)——这正是上一模块第 2 课反向模式自动微分(reverse-mode AD)在另一张计算图上的直接复用。重复乘以同一个 WhW_h,梯度按 Wht\|W_h\|^t 指数收缩或爆炸,即​​梯度消失/爆炸​​(vanishing / exploding gradient)。

​LSTM​​(Hochreiter & Schmidhuber 1997)用一条几乎只做加法的细胞状态(cell state)ctc_t 作为「梯度高速公路」,再用三道门(遗忘门、输入门、输出门)学习写、读、忘:

ft=σ(Wf[ht1,xt]+bf),  it=σ(Wi[ht1,xt]+bi),  ot=σ(Wo[ht1,xt]+bo),c~t=tanh(Wc[ht1,xt]+bc),  ct=ftct1+itc~t,  ht=ottanh(ct)\begin{aligned} &f_t = \sigma(W_f [h_{t-1}, x_t] + b_f), \; i_t = \sigma(W_i [h_{t-1}, x_t] + b_i), \; o_t = \sigma(W_o [h_{t-1}, x_t] + b_o), \\ &\tilde{c}_t = \tanh(W_c [h_{t-1}, x_t] + b_c), \; c_t = f_t \odot c_{t-1} + i_t \odot \tilde{c}_t, \; h_t = o_t \odot \tanh(c_t) \end{aligned}

门控循环单元(gated recurrent unit, GRU,Cho et al. 2014)是 LSTM 的精简版,只有重置门与更新门。LSTM / GRU 在长度 10210310^2 \sim 10^3 的序列上稳定可训;再长就力不从心——这是把它推下舞台的直接原因。

四、Transformer:把先验改成「按内容路由」

Vaswani et al. (2017)的 Transformer 把序列建模重写为「所有位置两两交互,但交互强度由​​内容相似度​​决定」。给定输入 XRN×dX \in \mathbb{R}^{N \times d},三组线性投影 Q=XWQQ = X W_QK=XWKK = X W_KV=XWVV = X W_V 把它映成查询(query)、键(key)、值(value),​​缩放点积自注意力​​(scaled dot-product self-attention)定义为:

Attention(Q,K,V)=softmax ⁣(QKdk)V\mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\left( \frac{Q K^\top}{\sqrt{d_k}} \right) V

四条性质要反复念:(i) ​排列等变​​——打乱输入位置,输出按相同方式打乱,必须另加​​位置编码​​(positional encoding,正弦或可学习)注入顺序;(ii) ​全局 O(N2)O(N^2) 两两交互​​——任意两位置之间存在常数长度的梯度路径,RNN 的梯度消失病灶在此消失;(iii) ​位置维度并行​​——无递归依赖,GPU 利用率比 RNN 高一个数量级;(iv) ​按内容路由​​——注意力权重由 QKQ K^\top 相似度决定,而非绝对位置。​​多头注意力​​(multi-head attention)把这套并行做 hh 份再拼接:

MultiHead(Q,K,V)=Concat(head1,,headh)WO,headi=Attention(QWQi,KWKi,VWVi)\mathrm{MultiHead}(Q, K, V) = \mathrm{Concat}(\mathrm{head}_1, \ldots, \mathrm{head}_h) W_O, \quad \mathrm{head}_i = \mathrm{Attention}(Q W_Q^i, K W_K^i, V W_V^i)

把多头注意力 + 位置-wise 前馈网络(两层 MLP + GELU)+ 残差连接 + 层归一化(LayerNorm)串成一个 ​Transformer 块​​,堆 LL 层就是 BERT / GPT 系的骨架。

Formula Explorer

n*n*d + n*d*d

上面的滑块画出 Transformer 块的总算力开销:左项 N2dN^2 d 是注意力相似度,右项 Nd2N d^2 是前馈层;当 NdN \gtrsim d 时前者开始主导——这也是「长上下文」(long context)成为研究热点的根本原因。

五、练习:手算 4-token 自注意力

Exercise

N=4N = 4dk=2d_k = 2,输入

X=[10011100],WQ=WK=WV=I2X = \begin{bmatrix} 1 & 0 \\ 0 & 1 \\ 1 & 1 \\ 0 & 0 \end{bmatrix}, \quad W_Q = W_K = W_V = I_2

(为了让你手算可控,投影矩阵都取单位阵)。

(i) 写出 Q=K=V=XQ = K = V = X

(ii) 计算 S=QKR4×4S = Q K^\top \in \mathbb{R}^{4 \times 4} 的每一项,再把所有项除以 dk=2\sqrt{d_k} = \sqrt{2}

(iii) 对 S/2S / \sqrt{2} 的每一行做 softmax,得到注意力权重矩阵 AR4×4A \in \mathbb{R}^{4 \times 4}

(iv) 计算输出 O=AVR4×2O = A V \in \mathbb{R}^{4 \times 2}

提示
QKQ K^\top(i,j)(i, j) 项等于 xixjx_i \cdot x_j,即输入向量之间的点积。比如 S1,2=(1,0)(0,1)=0S_{1,2} = (1,0)\cdot(0,1) = 0S1,3=(1,0)(1,1)=1S_{1,3} = (1,0)\cdot(1,1) = 1S4,4=0S_{4,4} = 0。把 SS 一行行写出来,你会看到一个对称矩阵。
提示
对一行 [a,b,c,d][a, b, c, d] 取 softmax 即 exp([a,b,c,d])/jexp()\exp([a, b, c, d]) / \sum_j \exp(\cdot)。第 4 行(零向量 token)对应 SS 行全零,softmax 后是均匀分布 [0.25,0.25,0.25,0.25][0.25, 0.25, 0.25, 0.25]——「零向量 token」拿不到内容线索,只能均匀平均。
提示
最后一步 O=AVO = A V 即把注意力权重当系数,对值向量加权平均。第 4 行输出即 VV 四行的算术均值 (0.5,0.5)(0.5, 0.5)——「无信息查询」回退到全局均值。核心直觉:自注意力 = 由内容相似度参数化的「软最近邻平均」(soft-nearest-neighbor average)。

六、三种架构,三种容量塑形

回到 2.6.1 的偏差—方差 / 归纳偏置(inductive bias)框架。CNN、RNN、Transformer 不是「越强越好」三件套,而是把不同的领域先验写进 H\mathcal{H}:

  • ​CNN​​:「特征平移等变且局部」——适合图像、声谱图、平移对称的网格数据。
  • ​RNN / LSTM​​:「数据由带隐状态的马尔可夫过程生成,hth_t 是被压缩的充分摘要」——本质上用学习版的​​条件期望​​(conditional expectation)E[xt+1ht]\mathbb{E}[x_{t+1} \mid h_t] 更新状态。
  • ​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 R2=0.046R^2 = 0.046 为何是上线水准。现代量化 ML 栈几乎全在 Transformer 之上,下个模块讲它被金融数据规训的一面。