TCN:为什么你应该关注这个AI工具
最后更新: 2026-03-23
Table of Content
TCN:为什么你应该关注这个AI工具¶
开头先说个真实的故事¶
2020年3月12日,币圈"312"大暴跌。
那天晚上: - 比特币从7900美元 - 一路暴跌到3800美元 - 24小时跌幅51%
整个市场血流成河。
然后发生了两件事:
事件A: - 散户:恐慌抛售 - "完了完了,要归零了" - "赶紧卖!" - 结果:卖在最低点
事件B: - 某量化基金:用TCN模型分析后 - "这不是崩盘,这是机会" - "加仓!"
所以我想问你一个问题¶
你觉得这两个人的区别是什么?
有人说是运气。 有人说是心态。 有人说是信息差。
但真相是: - 他们看到的东西根本不一样。
散户看K线: - "今天跌了5%,完了完了"
TCN看K线: - "从更长维度看,这只是正常回调 - 历史数据显示:这种级别的回调后, - 70%的概率会在30天内收复跌幅"
这不是玄学。 这是数学。
好,那TCN到底是什么?¶
TCN = Temporal Convolutional Network = 时间卷积网络
用人话来说: - TCN是一种AI模型 - 能从历史数据里找出规律 - 然后用这个规律预测未来
你可以理解成: - 一个永远不会累的"老手" - 每天盯着K线图看 - 试图找出"涨的规律"和"跌的规律"
但TCN跟普通的看K线有什么不同?¶
普通看K线: - 盯着屏幕,看MACD金叉了 - 看KDJ超卖了 - 看布林带碰到下轨了
TCN看K线: - 把过去60天的所有数据 - 转化成数字 - 然后用数学方法分析
区别在哪?
-普通看K线 = 凭感觉 -TCN看K线 = 凭数据
当然,TCN不是100%准 但它比凭感觉强太多了
第一章:TCN的第一大法器——因果卷积¶
1.1 先说个生活中的例子¶
你想预测明天天气。
你能用明天的数据来预测明天吗?
当然不能! 因为明天还没到,数据还没出来。
你能用今天的数据吗? 当然能!因为今天已经过去了,数据是确定的。
这就是"因果"的意思:
- 原因在前,结果在后
- 预测未来只能用过去的数据
1.2 回到K线图¶
预测明天的股价走势:
你能用明天的K线吗? 不能!明天的K线还没走出来。
你能用今天和之前的数据吗? 能!因为这些已经发生了。
TCN保证的就是这件事: - 预测第T天 - 只用第1, 2, 3, ..., T天的数据 - 绝对不用第T+1, T+2...天的数据
这就是因果卷积。
1.3 因果卷积的数学原理¶
标准卷积公式:
这个公式说的是:输出在位置 \(t\) 的值,等于卷积核 \(w\) 与输入 \(x\) 的加权和。
问题在哪?
当 t=5 时: - y_5 = w_1 · x_6 + w_2 · x_7 + w_3 · x_8
卷积核从右往左采样: - 采样位置:x_6, x_7, x_8 - 这是"未来"的数据!
这违反了因果性原则!
因果卷积的公式:
当 t=5 时: - y_5 = w_1 · x_5 + w_2 · x_4 + w_3 · x_3
卷积核从右往左采样: - 采样位置:x_5, x_4, x_3 - 这都是"过去"的数据!
✅ 符合因果性:预测第5天,只用第3、4、5天的数据
1.4 图示对比¶
标准卷积(违反因果性):
1 2 3 4 5 6 7 8时间: ... 3 4 5 6 7 8 ... ↓ ↓ ↓ ↓ ↓ ↓ ↓ 输入: [x₃] [x₄] [x₅] [x₆] [x₇] [x₈] [w₂] [w₁] [w₀] ↓ 输出: y₅ = w₀·x₅ + w₁·x₆ + w₂·x₇ ↑ 用到了x₆, x₇(未来数据)❌
因果卷积(符合因果性):
1 2 3 4 5 6 7 8时间: ... 2 3 4 5 6 7 ... ↓ ↓ ↓ ↓ ↓ ↓ ↓ 输入: [x₂] [x₃] [x₄] [x₅] [x₆] [x₇] [w₂] [w₁] [w₀] ↓ 输出: y₅ = w₀·x₅ + w₁·x₄ + w₂·x₃ ↑ 只用到x₃,x₄,x₅(过去数据)✅
1.5 因果 Padding¶
为了保持输入输出序列长度相同,需要在左侧进行填充:
输入序列: [x₀] [x₁] [x₂] [x₃] [x₄] 左侧填充2个: [0] [0] [x₀] [x₁] [x₂] [x₃] [x₄]
卷积后: [y₀] [y₁] [y₂] [y₃] [y₄] ↑ 输出长度与原输入相同
第二章:TCN的第二大法器——膨胀卷积¶
2.1 先问你一个问题¶
你分析一只股票的时候: 你会看它最近几天的走势? 还是会看它最近几个月的走势?
大多数人说:都看!
但问题是: - 你真的能同时"记住"几个月的数据吗? - 你真的能从中找出规律吗?
人脑的短期记忆是有限的。 7个数字以上就记不住了。
但TCN可以!
2.2 膨胀卷积是什么?¶
普通方法: - 1天1天地看 - 要看60天前的数据 = 需要记住60天的信息 - 累死CPU
膨胀卷积: - 跳着看! - 就像望远镜,不用爬上去,直接跳到最远的地方
2.3 膨胀卷积的数学原理¶
标准卷积(膨胀率 \(d=1\)):
采样间隔:1
膨胀卷积(膨胀率 \(d\)):
采样间隔:\(d\)
当 K=3, d=2 时:
(x *_2 w)_5 = w_1 · x_5 + w_2 · x_3 + w_3 · x_1 ↑ ↑ ↑ 间隔0 间隔2 间隔4
采样位置:x_5, x_3, x_1(跳着采样)
2.4 图示¶
膨胀率 d=1(普通卷积):
1 2 3 4[x₀] [x₁] [x₂] [x₃] [x₄] [x₅] [x₆] ↓ ↓ ↓ [w₀] [w₁] [w₂] 采样:x₆, x₅, x₄(连续)
膨胀率 d=2:
1 2 3 4[x₀] [x₁] [x₂] [x₃] [x₄] [x₅] [x₆] ↓ ↓ [w₀] [w₁] [w₂] 采样:x₆, x₄, x₂(跳1个)
膨胀率 d=4:
1 2 3 4[x₀] [x₁] [x₂] [x₃] [x₄] [x₅] [x₆] ↓ ↑ [w₀] [w₁] [w₂] 采样:x₆, x₂, x₀(跳3个)
2.5 多层膨胀卷积的效果¶
各层的膨胀率配置:
1 2 3 4 5 6第1层(d=1):感受野 = 3 第2层(d=2):感受野 = 5 第3层(d=4):感受野 = 9 第4层(d=8):感受野 = 17 第5层(d=16):感受野 = 33 第6层(d=32):感受野 = 65结论:6层就能看到65天前的数据!
2.6 感受野的计算公式¶
单层感受野:
K=3, d=1: r = 1 + 2×1 = 3 K=3, d=2: r = 1 + 2×2 = 5 K=3, d=4: r = 1 + 2×4 = 9
多层堆叠后的总感受野:
当 \(d_l = 2^l\) 时:
验证:K=3, L=6, d_l = [1,2,4,8,16,32]
R = 1 + 2 × (1+2+4+8+16+32) = 1 + 2 × 63 = 127
✅ 127天 ≈ 4个月
2.7 这在金融里意味着什么?¶
做短线的人:看1-2周 做波段的人:看1-2个月 做长线的人:看3-6个月
TCN的配置: - [1,2,4,8] = R = 1 + 2×(1+2+4+8) = 31天 ≈ 1个月 - [1,2,4,8,16] = R = 1 + 2×(1+2+4+8+16) = 63天 ≈ 2个月 - [1,2,4,8,16,32] = R = 1 + 2×(1+2+4+8+16+32) = 127天 ≈ 4个月
所以不管你是做短做长 TCN都能调到合适的"视野"
第三章:TCN的第三大法器——残差连接¶
3.1 深度学习的坑¶
你是不是听过: - "神经网络层数越多越好" - "越深越强大"
这是扯淡!
实际情况是: - 层数太多 = 梯度消失 - 就像传话游戏: - 第1个人说:"茅台今天涨了5%" - 第10个人听到:"茅台今天好像涨了" - 第60个人听到:"茅台今天...好像...涨了?"
前面的层根本学不到东西!
TCN的解决方法是: - 残差连接 = 抄近道
3.2 残差连接的数学原理¶
普通网络的映射:
普通网络学习的是从输入 \(x\) 到输出 \(y\) 的直接映射 \(H(\cdot)\)。
残差网络的映射:
残差网络把映射拆成两部分: - \(F(x)\):需要学习的残差映射 - \(x\):恒等映射(直接传过来)
3.3 为什么残差连接有效?¶
关键洞察: - 让网络学习"恒等映射"比学习"复杂映射"更容易
普通网络的问题: - 假设最优映射是 H(x) = x - 但网络需要学习 H(x) = x 这个恒等函数 - 这其实很难!因为中间层必须"什么也不做"
残差网络的解决方案: - 假设最优映射是 H(x) = x - 那残差 F(x) = H(x) - x = 0 - 学习 F(x) = 0 比学习 H(x) = x 容易多了!
因为: - 当 F(x) ≈ 0 时,y = F(x) + x ≈ x(自动获得恒等映射) - 当 F(x) 有用时,y = F(x) + x = x + F(x)(增强映射)
3.4 残差连接的另一大优势:梯度流动¶
反向传播时:
普通网络: - ∂L/∂x = ∂L/∂y · ∂y/∂x - 梯度要一层层传回去 - 乘以每一层的权重 - 层数多了,梯度越来越小 → 消失
残差网络: - ∂L/∂x = ∂L/∂y · ∂y/∂x - = ∂L/∂y · (∂F/∂x + 1) - = ∂L/∂y · (∂F/∂x) + ∂L/∂y
梯度有两条路: 1. 走残差路径:直接传回来,无衰减 2. 走普通路径:乘以权重,可能衰减
即使①的梯度很大,也不会比普通网络更小 所以梯度消失的问题被解决了!
3.5 残差块的结构¶
1 2 3 4 5 6 7 8 9┌─────────────────────────────────────┐ │ │ │ 输入 x │ │ │ │ │ ├──→ [Conv] → [Act] → [Conv] → Add ──→ 输出 y │ │ │ │ │ └───────────────── 1×1 Conv ──────────────────┘│ │ │ └─────────────────────────────────────┘公式:y = F(x) + W · x
其中 W 是 1×1 卷积,负责调整 x 的维度以匹配 F(x) 的输出
第四章:完整的TCN架构¶
4.1 TCN的两大核心特性¶
TCN必须满足两个条件:
条件一:因果卷积 - ✓ 保证时间因果性 - ✓ 预测第T天只用前T天的数据
条件二:膨胀卷积 - ✓ 指数扩大感受野 - ✓ 少量层数覆盖长时间跨度
4.2 完整的TCN Block¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21输入 ↓ ┌─────────────────────────────────────┐ │ │ │ [因果膨胀卷积] → [Weight Norm] │ │ ↓ │ │ [ReLU] │ │ ↓ │ │ [Dropout] │ │ ↓ │ │ [因果膨胀卷积] → [Weight Norm] │ │ ↓ │ │ [ReLU] │ │ ↓ │ │ [Dropout] │ │ ↓ │ │ [1×1 卷积](调整维度) │ │ ↓ │ │ 输入 ───────── Add ──→ 输出 │ │ │ └─────────────────────────────────────┘
4.3 多层堆叠¶
TCN通常由多个Block组成:
1 2 3Block 1: dilations = [1, 2, 4, 8] → 感受野 31天 Block 2: dilations = [1, 2, 4, 8] → 感受野 31天 Block 3: dilations = [1, 2, 4, 8] → 感受野 31天总感受野 ≈ 90天(综合多个Block的信息)
第五章:TCN vs LSTM——选哪个?¶
5.1 先说结论¶
在金融时间序列预测这个场景: TCN全面优于LSTM。
这不是我说的,是学术界和工业界的共识。
5.2 对比¶
| 维度 | LSTM | TCN |
|---|---|---|
| 计算方式 | 串行(等一步算一步) | 并行(一步到位) |
| 时间复杂度 | O(T) | O(1) |
| 空间复杂度 | O(T) | O(1) |
| 感受野控制 | 有限(60天基本极限) | 可控(轻松100+天) |
| 梯度流动 | 容易消失 | 残差保护 |
| 结构复杂度 | 高(门机制) | 低(就是卷积) |
| 超参数数量 | 多(难调) | 少(易调) |
| GPU利用率 | 低 | 高 |
5.3 数学上的区别¶
LSTM的前向计算: - 必须等第t-1步算完,才能算第t步 - → 这是串行的,无法并行
TCN的前向计算: - 第t步的输出只依赖前几步的输入 - 所有时间步可以同时计算 - → 这是并行的,GPU可以加速
第六章:实战指南¶
6.1 TCN能帮你做什么?¶
✓ 预测明天涨还是跌 ✓ 判断现在是趋势的开始还是结束 ✓ 找到合适的买入/卖出时机 ✓ 判断仓位应该多重
✗ 不能预测黑天鹅 ✗ 不能保证100%赚钱 ✗ 不能替代你的决策
6.2 不同策略的配置¶
短线(持有一天到几天): - 视野:20-30天 - 膨胀率:[1,2,4,8] - 层数:4 - 适合:日内波动、日内趋势
中线(持有几周到几个月): - 视野:60-90天 - 膨胀率:[1,2,4,8,16] - 层数:5 - 适合:波段操作
长线(持有几个月): - 视野:120-180天 - 膨胀率:[1,2,4,8,16,32] - 层数:6 - 适合:趋势跟踪、价值投资
第七章:代码¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | |
第八章:总结¶
8.1 核心公式汇总¶
1. 因果卷积:
2. 膨胀卷积:
3. 单层感受野:
4. 总感受野:
5. 残差连接:
8.2 TCN三大法器总结¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15┌─────────────────────────────────────────────┐ │ │ │ ① 因果卷积 │ │ 公式:(x * w)_t = Σ w_k · x_{t-k+1} │ │ 作用:保证时间因果性 │ │ │ │ ② 膨胀卷积 │ │ 公式:(x *_d w)_t = Σ w_k · x_{t-(k-1)d}│ │ 作用:指数扩大感受野 │ │ │ │ ③ 残差连接 │ │ 公式:y = F(x) + x │ │ 作用:解决梯度消失,允许更深的网络 │ │ │ └─────────────────────────────────────────────┘
彩蛋¶
回到开头那个故事。
"312"暴跌那天晚上: - 散户在恐慌抛售 - 量化基金在加仓
他们的区别是什么?
不是运气。 不是心态。 不是信息差。
是他们"看到"的东西不一样。
散户看到的:K线在暴跌 TCN看到的:从历史数据看,这种跌幅之后70%会反弹
这不是玄学。 这是TCN用数学告诉你的答案。
数学不会骗人。 但你的眼睛会。
看完这篇,你应该比大多数人更懂TCN的原理了。