最近这段时间,我比较集中的精力都放在交通流量预测这个方向上。
一开始看这条线的时候,很容易有一种错觉:好像大家都在不停换新模型名,今天 GNN,明天 Transformer,后天再加几个注意力模块,论文就又多了一批。
但看多了以后会发现,这个方向其实有一条挺清楚的主线:大家一直在想办法更好地刻画时空依赖,并且让模型更贴近真实交通系统的复杂性。
这篇不打算写成严格综述,更像是我现阶段的理解整理。对我自己来说,写下来比单纯把论文名字记在脑子里更有用。
1. 这个问题到底难在哪
交通流量预测表面上看只是时间序列预测,但真做起来,麻烦比普通单变量序列多得多。
主要难在几个地方:
- 空间相关性:一个路段不独立,周边路网会传导影响;
- 时间依赖性:短期波动、周期规律、节假日效应会叠在一起;
- 动态变化:早晚高峰、事故、天气、施工,都会让分布发生偏移;
- 数据不完美:传感器缺失、噪声、节点宕机,这些在真实场景里非常常见。
所以这个方向不是简单把“预测未来 12 个点”做出来就行,更关键的是:
你对真实交通系统的不确定性,考虑得够不够。
2. 早期方法:先把时序建起来
比较早期的工作,很多还是统计学习和传统机器学习路线,比如:
- ARIMA
- SVR
- 历史平均法
这些方法的优点是解释性强、实现简单,但对复杂时空关系的表达能力明显不够。尤其当路网规模一大、交通状态变化更复杂时,效果就比较吃力了。
但我觉得这些方法也不是完全过时。它们有两个价值:
- 让你更清楚问题的基本结构;
- 作为 baseline 时,能提醒你别把一个本来就不难的问题包装得太玄。
3. 深度学习阶段:先解决“时间”,再补“空间”
后来比较自然的一步,就是把 RNN、LSTM 这些序列模型引进来。
这一阶段的核心贡献,是让模型更好地去拟合长短期时间依赖。
但很快大家就发现,仅仅把每个监测点当成一条独立序列来建模,还是不够。因为交通不是孤立的点,而是有路网拓扑关系的系统。
于是后面就进入了一个非常关键的阶段:
4. GNN 时代:把路网结构显式建模
这一阶段基本奠定了后续很多工作的框架。
比较典型的思路,就是把传感器或路段看成图上的节点,然后:
- 用图卷积或图传播建模空间依赖;
- 用时序模块建模时间变化;
- 再把两者结合起来做预测。
这类工作为什么影响大?
因为它第一次比较系统地把“空间关系”这件事纳入到了模型主干里,而不是只靠人工特征去补。
我自己看这类工作时,会特别关注两点:
(1)图是怎么构造的
- 按物理距离构图?
- 按道路连接关系构图?
- 按数据相关性动态构图?
不同构图方式对应的是不同假设。
(2)时间和空间是怎么融合的
有些是先时序后空间,有些是交替堆叠,有些是并行建模。这个地方其实很能体现一个模型到底是在“拼模块”,还是对问题真的有理解。
5. Attention / Transformer 进来以后,重点变成了“长距离依赖”和“全局关系”
GNN 路线跑起来以后,后面的一个明显趋势就是 attention 机制越来越多。
这也不难理解。因为交通系统里确实存在一些:
- 远距离但强关联的点;
- 不固定的动态依赖;
- 不同时间尺度上的全局模式。
Transformer 类方法在这里的吸引力很大,原因主要有两个:
- 更擅长建模长程依赖;
- 不需要像 RNN 那样顺序递推,训练并行性更好。
但我自己的感受是,这一类方法也带来一个很常见的问题:
模型越来越大,结构越来越复杂,但不一定更贴近真实部署场景。
尤其交通预测这个方向,很多时候不只是拼一个 leaderboard 数字,还要考虑推理效率、显存占用、部署成本。这个问题往后会越来越重要。
6. 这两年我觉得真正值得重视的方向,不只是“效果更高”,而是“问题更真”
如果让我说这几年我最感兴趣的一条变化,那不是单纯谁又把 MAE 压低了一点,而是很多工作开始更认真地面对真实世界的数据问题。
比如:
1. 缺失值与异常值
真实传感器数据经常有:
- 随机缺失
- 连续缺失
- 噪声污染
- 采集异常
如果模型只在非常干净的数据上表现好,那它的实用价值其实有限。
2. 鲁棒性
这也是我自己现在比较关心的点。
交通流量预测不是“静态 benchmark 游戏”。传感器长时间宕机、局部区域观测失真、不同扰动同时出现,这些情况在现实中太正常了。
所以我越来越觉得,一个模型值不值得做,不只是看正常测试集表现,还要看:
- 噪声下稳不稳;
- 缺失下崩不崩;
- 参数量是不是太夸张;
- 是否真的有推广价值。
这也是为什么我现在看论文时,会特别在意是否有系统的鲁棒性评测,而不是只放一个标准测试集结果就结束。
3. 泛化能力
同一个模型在 PeMS04、PeMS07、PeMS08 上好,不代表换一个城市、换一个采样条件还能好。
如何提升跨区域、跨分布、跨采样条件的泛化能力,我觉得后面会一直是重点。
7. 另一个很容易被忽视的问题:评价方式本身
做交通流量预测,大家最熟悉的指标通常就是 MAE、RMSE、MAPE 这些。
这些指标当然重要,但有时候也会掩盖一些问题。
比如:
- 平均指标看着不错,但高峰时段预测很差;
- 模型在大多数节点上正常,但在关键节点崩得厉害;
- 模型只在某类数据分布下有效。
所以我现在会更关注一个问题:
这个模型到底在哪些场景下强,在哪些场景下弱?
如果只盯着平均分数,很容易忽略真正值得优化的地方。
8. 我自己目前更认同的一条研究思路
如果只说我个人偏好,我现在更认可下面这种路线:
- 主干结构尽量别太臃肿;
- 时空依赖建模要明确,不要纯堆模块;
- 对噪声、缺失、节点异常要有明确考虑;
- 评测不能只看单一干净场景;
- 最终最好还能兼顾参数量、速度和显存。
说白了,就是我不太想把交通流量预测做成“谁把结构堆得更复杂”的比赛,而更想做成:
在真实扰动条件下,模型还能不能稳稳地给出可用预测。
9. 对刚入门这个方向的同学,我的建议
如果你刚开始看交通流量预测,我很建议按下面顺序走:
第一步:先搞清楚问题定义和数据集
别一上来就看模型细节。
第二步:从经典模型一路往后看
这样你会知道每一代方法到底在解决什么痛点。
第三步:自己动手复现几个代表模型
不复现,很容易停留在“看懂摘要”的阶段。
第四步:找到你真正想解决的问题
是长程依赖?是动态图?是多尺度?还是鲁棒性?
只有问题意识立住了,后面做研究才不会一直被论文名带着跑。
最后
交通流量预测这个方向表面上卷模型,实际上卷的是你对真实问题的理解深度。
至少对我自己来说,我现在越来越不想只追一个更花的结构名字了。相比之下,我更关心的是:
- 这个问题是不是现实中真会遇到;
- 这个改进是不是有明确逻辑;
- 这个模型是不是足够稳、足够省、足够能落地。
如果后面真能沿着这条线继续往下做,我觉得这件事会比单纯刷一个更高分数更有意思。