深度学习模型 — 模块概述
本模块是 mlqt(量化机器学习)学习路径的第④模块,专注于使用深度学习技术进行量化时间序列预测。
🎯 学习目标
完成本模块后,你将能够:
- 理解深度学习核心原理:神经网络、RNN、LSTM、Attention、Transformer 的数学直觉
- 熟练使用 PyTorch:从 Tensor 操作到完整模型训练流水线
- 构建深度学习量化模型:LSTM、双向 LSTM、LSTM+Attention 等架构
- 处理时序数据:滑动窗口、标准化、Dataset 构建等最佳实践
- 优化模型训练:损失函数、优化器、学习率调度、正则化、早停等技巧
- 完成端到端项目:从数据生成到模型评估的完整实战案例
📚 前置知识
开始学习本模块前,建议你已经掌握:
| 知识点 | 说明 | 参考模块 |
|---|---|---|
| Python 基础 | 列表、字典、函数、类 | - |
| NumPy/Pandas | 数组操作、DataFrame 处理 | - |
| 机器学习基础 | 过拟合、交叉验证、损失函数 | 模块① |
| 特征工程 | 时序特征构建、标签生成 | 模块② |
| 树模型实战 | XGBoost/LightGBM 使用经验 | 模块③ |
| 微积分基础 | 导数、链式法则(理解反向传播) | - |
💡 提示:如果你已经熟练使用 XGBoost/LightGBM 做量化,那么你对「特征→模型→预测→评估」的流程已经熟悉,本模块将帮你扩展到深度学习领域。
📁 文件导航
本模块包含以下文件,建议按顺序学习:
| 文件 | 说明 | 预计时间 | 难度 |
|---|---|---|---|
01-深度学习基础.md | 神经网络、RNN、LSTM、Attention 原理详解 | 90分钟 | ⭐⭐⭐ |
02-PyTorch框架入门.md | PyTorch 核心:Tensor、Autograd、nn.Module、DataLoader | 75分钟 | ⭐⭐ |
03-LSTM模型构建.md | 单层/多层/双向 LSTM、LSTM+Attention 实战 | 80分钟 | ⭐⭐⭐ |
04-时序数据处理.md | 滑动窗口、标准化、Dataset 构建、数据划分 | 70分钟 | ⭐⭐ |
05-模型训练优化.md | 训练循环、损失函数、优化器、调度器、正则化 | 100分钟 | ⭐⭐⭐⭐ |
06-实战案例.md | 端到端完整项目:模拟数据→训练→评估→回测 | 120分钟 | ⭐⭐⭐⭐⭐ |
总计学习时间:约 8-10 小时(含代码练习时间)
🗺️ 推荐学习路径
┌─────────────────────────────────────────────────────────────────┐
│ 深度学习模型模块学习路径 │
└─────────────────────────────────────────────────────────────────┘
┌──────────────┐
│ 开始学习 🎯 │
└──────┬───────┘
│
▼
┌─────────────────────────────────────┐
│ 01-深度学习基础(90min) │
│ • 神经网络原理 │
│ • RNN/LSTM/Attention │
└────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 02-PyTorch框架入门(75min) │
│ • Tensor操作 │
│ • 模型定义 │
│ • 数据加载 │
└────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 03-LSTM模型构建(80min) │
│ • 单层/多层LSTM │
│ • 双向LSTM │
│ • LSTM+Attention │
└────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 04-时序数据处理(70min) │
│ • 滑动窗口 │
│ • 标准化 │
│ • Dataset构建 │
└────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 05-模型训练优化(100min) │
│ • 训练循环 │
│ • 损失函数/优化器 │
│ • 正则化/早停 │
└────────────────┬────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 06-实战案例(120min) │
│ • 端到端完整项目 │
│ • 模拟数据→训练→评估 │
│ • 树模型 vs 深度学习对比 │
└────────────────┬────────────────────┘
│
▼
┌──────────────┐
│ 🎉 完成学习 │
└──────────────┘
🔄 树模型 vs 深度学习
在量化领域,树模型(XGBoost/LightGBM)和深度学习各有优势。下表帮助你选择合适的工具:
| 对比维度 | 树模型 (XGBoost/LightGBM) | 深度学习 (LSTM/Transformer) |
|---|---|---|
| 适用数据类型 | 表格数据、截面特征 | 时序数据、序列模式 |
| 特征工程需求 | 高(需要手动构建特征) | 低(自动学习序列特征) |
| 训练速度 | 快(CPU即可) | 慢(需要GPU加速) |
| 超参数敏感性 | 中等 | 高(需要仔细调参) |
| 可解释性 | 较好(特征重要性) | 较差(黑盒模型) |
| 数据量需求 | 小样本即可工作 | 需要大量数据 |
| 长距离依赖 | 差(需要手动构建滞后特征) | 强(LSTM/Transformer可记忆) |
| 非线性建模 | 有限(通过树分裂) | 强(多层非线性变换) |
| 过拟合风险 | 中等 | 高(需要强正则化) |
何时选择深度学习?
✅ 选择深度学习当:
• 数据有明显的时序模式(趋势、周期、长期依赖)
• 有较长的历史数据(>2年日频或>5年高频)
• 特征是序列型(K线、订单簿、逐笔成交)
• 需要预测未来多步(seq2seq)
• 树模型效果遇到瓶颈
❌ 选择树模型当:
• 数据主要是截面特征
• 历史数据较短(<1年)
• 需要快速迭代和实验
• 可解释性要求高
• 计算资源有限(无GPU)
🔑 核心概念预览
在学习本模块前,先了解几个核心概念:
1. 序列建模
深度学习擅长处理序列数据,每个样本不仅是独立的特征向量,而是有先后顺序的序列:
树模型视角:
样本1 = [特征1, 特征2, ..., 特征20] → 预测
深度学习视角:
样本1 = [[特征1_t-19], [特征1_t-18], ..., [特征1_t]] ← 20个时间步
[[特征2_t-19], [特征2_t-18], ..., [特征2_t]]
...
[[特征20_t-19], [特征20_t-18], ..., [特征20_t]]
↓
展开时序依赖 → 预测
2. LSTM 的记忆能力
LSTM 通过细胞状态(Cell State)和门控机制(Gates)实现长期记忆:
输入序列: [t-19] → [t-18] → ... → [t-2] → [t-1] → [t]
↑
关键信息在这
↓
细胞状态: ─────────────────●──────────────────→
(选择性记忆/遗忘)
3. 注意力机制
Attention 允许模型在预测时关注历史序列中的重要部分:
历史序列: [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]
注意力权重: 0.01 0.02 0.05 0.1 0.3 0.2 0.15 0.1 0.05 0.02
↑↑↑
模型重点关注这些时间步
📌 学习建议
- 动手实践:每个代码示例都要亲自运行,修改参数观察效果
- 理解原理:不要只调参,理解模型背后的数学直觉
- 对比验证:用相同的树模型作为 baseline,对比深度学习的提升
- 循序渐进:先跑通简单模型,再尝试复杂架构
- 注意陷阱:特别关注「数据泄漏」、「未来信息」等量化特有的坑
⚠️ 常见陷阱
在学习过程中,要特别注意以下量化特有的问题:
| 陷阱 | 说明 | 后果 | 解决方法 |
|---|---|---|---|
| 未来信息泄漏 | 用了未来的数据做特征 | 回测虚高,实盘失效 | 严格按时间划分 |
| 标准化泄漏 | 用测试集统计量标准化 | 模型见过测试集分布 | 只用训练集统计量 |
| 因果性破坏 | 双向模型用于预测 | 模型看见未来收益 | 谨慎使用双向LSTM |
| 过拟合 | 模型太复杂,数据太少 | 训练好,测试差 | 强正则化、早停 |
| 数据窥探 | 用全样本做特征选择 | 评估过于乐观 | 只在训练集上做 |
🚀 开始学习
准备好了吗?让我们从 01-深度学习基础.md 开始学习!
📖 提示:本模块所有代码使用纯 PyTorch 实现,无需安装 qlib。确保你已经安装:
torch >= 2.0numpypandasmatplotlib(用于可视化)scikit-learn(用于评估指标)tqdm(用于进度条)安装命令:
pip install torch numpy pandas matplotlib scikit-learn tqdm