4. Transformer核心原理
在金融多变量时序预测中,我们往往同时面对利率、汇率、成交量、波动率、行业指数等多个变量,它们之间存在跨变量的联动关系,也存在跨时间步的滞后影响。传统RNN类模型在长序列上容易出现梯度消失与并行效率低的问题,而Transformer通过自注意力机制直接建模任意两个时间步、任意两个变量之间的关系,成为多变量时序建模的重要骨干。本节围绕四个核心部件展开:自注意力、多头注意力、位置编码、残差连接与层归一化。
一、自注意力机制:让每个时间步“看见”全局
自注意力的本质是一次可学习的加权检索。给定输入序列矩阵 X ∈ R^(L×d),通过三个线性变换得到查询 Q、键 K、值 V:
Q = X W_Q, K = X W_K, V = X W_V
Attention(Q, K, V) = softmax(Q K^T / sqrt(d_k)) V
其中 Q K^T 计算每个位置与所有位置的相似度,除以 sqrt(d_k) 防止点积过大导致 softmax 饱和,softmax 归一化后得到注意力权重,再对 V 加权求和。对金融时序而言,这意味着预测某日收益率时,模型可以自动关注此前的关键事件窗口,例如财报发布日、政策调整日,而不必依赖固定窗口。
-inf,保证模型只能看到当前及历史信息,避免信息泄露。二、多头注意力:从不同子空间捕捉金融规律
单头注意力只能学习一种关联模式,而金融数据中同时存在趋势、周期、波动聚集、跨市场传导等多种结构。多头注意力将 d_model 拆分为 h 个子空间,每个头独立计算注意力,再拼接并线性映射:
head_i = Attention(Q W_Q_i, K W_K_i, V W_V_i)
MultiHead = Concat(head_1, ..., head_h) W_O
例如 d_model=64, h=4 时,每个头维度为16。不同头可以分别关注短期反转、长期趋势、变量间同步性等模式。下表给出常见配置与金融场景的对应关系:
| 配置项 | 典型取值 | 金融时序中的影响 |
|---|---|---|
| d_model | 64 / 128 / 256 | 过小欠拟合,过大在小样本上易过拟合 |
| 头数 h | 4 / 8 | 头数过多会稀释每个头的表达能力 |
| 注意力 dropout | 0.1 ~ 0.3 | 抑制对噪声交易日的过度关注 |
| 因果掩码 | 开启 | 防止未来信息泄露,保证回测可信 |
三、位置编码:为无序注意力注入时间顺序
自注意力本身对序列顺序不敏感,若不加位置编码,打乱时间步后输出几乎不变。位置编码通过为每个时间步注入位置信息解决该问题。常见方案有两类:正弦位置编码和可学习位置编码。
- 正弦位置编码:使用不同频率的 sin/cos 函数生成固定向量,可外推到训练时未见过的更长序列,适合长度变化较大的金融数据。
- 可学习位置编码:将位置向量作为参数训练,灵活但受最大长度限制,外推能力较弱。
PE(pos, 2i) = sin(pos / 10000^(2i/d_model))
PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))
在金融场景中,位置不仅代表顺序,还可编码交易日历信息,例如星期几、是否月末、是否财报季,从而让模型区分普通交易日与特殊交易日。
四、残差连接与层归一化:让深层网络稳定训练
Transformer通常堆叠多层编码器,深层网络容易出现梯度消失或训练不稳定。残差连接将输入直接加到子层输出上,层归一化则对特征维度做归一化:
# Post-LN(原始Transformer)
x = LayerNorm(x + Sublayer(x))
# Pre-LN(更易训练,常用于时序模型)
x = x + Sublayer(LayerNorm(x))
残差连接保证梯度可以沿捷径回传,层归一化稳定每层输入分布。在金融小样本、高噪声场景下,Pre-LN 通常比 Post-LN 更易收敛,且对学习率不敏感。
五、案例:多变量收益率预测中的注意力可视化
假设输入为过去60个交易日的5个变量:沪深300收益率、成交量、北向资金、波动率、国债收益率。模型配置 d_model=64, h=4, layers=2。训练后观察注意力权重,可发现某些头集中关注波动率突变日,另一些头关注成交量放大日。这说明多头注意力确实学到了不同的金融模式,而位置编码帮助模型区分事件发生的时间距离。
六、复盘:四个部件的协同与常见陷阱
- 自注意力不是万能的:当序列很长时计算复杂度为
O(L^2),金融高频数据需考虑稀疏注意力或分块策略。 - 多头不是越多越好:头数过多会导致每个头维度太小,反而降低表达能力,建议从4头起步。
- 位置编码要匹配数据节奏:若使用可学习位置编码,训练集长度必须覆盖推理长度,否则外推失效。
- Pre-LN 与 Post-LN 的选择:小样本金融数据优先 Pre-LN,并配合 warmup 学习率调度。