PatchTST
将时间序列切分为固定patch,用Transformer捕捉长程依赖,刷新长期预测SOTA的模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
将时间序列切分为固定patch,用Transformer捕捉长程依赖,刷新长期预测SOTA的模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:气象局需要预测未来168小时的温度变化,电网调度要预判72小时的负荷波动,工厂生产线要提前预估设备传感器未来14天的走势——这些都是长程时间序列预测的典型场景。传统 Transformer 直接将每个时间点作为 token 输入,计算量随序列长度呈平方增长,在处理数千个时间点的长序列时不仅计算昂贵,更容易在浩如烟海的时间细节中迷失方向,忽视数据本身的结构性规律。
PatchTST(Patch Time Series Transformer) 正是为解决这一痛点而生。这是 ICLR 2023 论文"A Time Series is Worth 64 Words"的官方实现,由聂宇勤(Yuqin Nie)等研究者提出,其核心洞察异常直观:与其逐点处理,不如先把时间序列"打包"成有意义的片段。
PatchTST 的核心创新叫做 Patch(分片)机制。类比自然语言处理中将句子分词为 token,PatchTST 将连续的时间序列切分成固定长度(如16或64个时间步)的小段,每个片段就是一个"词"。
这样做的优势是三重的:
PatchTST 另一项关键设计是 Channel-Independence(通道独立):每个变量(通道)拥有独立的 embedding 和 Transformer 权重,单独建模其时间动态。这与将所有通道拼接后联合建模的方式(如 informer、Autoformer)截然不同。
通道独立的好处在于:对于高维多变量时序(如100个传感器),联合建模的 hidden_dim 会被通道数放大,而通道独立使每个通道共享相同架构但参数独立,既保证了信息共享的效率,又避免了维度爆炸。研究者在8个真实数据集上的实验表明,这一设计使 MSE 降低约21%、MAE 降低约16.7%,全面超越此前所有 Transformer 类时序模型。
图1:PatchTST 整体架构 — 时间序列经 Patch 分片后,通过通道独立的 Transformer 主干处理
PatchTST 同时支持自监督预训练+下游微调两阶段学习范式。首先在大规模无标签数据上通过掩码重建(Masked Patch Prediction)任务预训练 PatchTST/64,使模型学会时间序列的通用表征;随后在具体任务(如电力负荷预测)上微调。实验表明,自监督预训练的 PatchTST 能在迁移学习中显著优于从零训练的模型,尤其在数据稀缺场景下优势明显。
图2:自监督 PatchTST 与监督/自监督基线模型的性能对比 — PatchTST 在各数据集上全面胜出
PatchTST 的影响力远超论文本身。目前已被三大主流时间序列库收录:
这意味着研究者和工程师无需从头实现,在熟悉的框架中几行代码即可调用 PatchTST。
图3:迁移学习能力 — 预训练 PatchTST 迁移到下游任务时效果显著优于从头训练
图4:长回看窗口下的 MSE 变化 — PatchTST 随回看窗口增长持续降低预测误差,验证了其长程建模能力
PatchTST 定位为学术研究代码,而非开箱即用的产品工具。部署流程需要三步:
第一步:安装依赖
pip install -r PatchTST_supervised/requirements.txt
核心依赖为 PyTorch 1.11.0、numpy、pandas、matplotlib 和 scikit-learn,GPU 非必须(但有 CUDA 会快很多)。
第二步:下载数据集
从 Google Drive 下载 Autoformer 提供的标准测试数据集(ETTh1/2、Weather、Electricity 等),放入 ./dataset 目录。
第三步:运行训练脚本
sh ./scripts/PatchTST/weather.sh # 预测天气数据集
脚本调用 run_longExp.py,自动完成数据加载、模型训练、评测指标计算,结果写入 result.txt。
自监督版本稍有不同,需要先执行 patchtst_pretrain.py 做预训练,再调用 patchtst_finetune.py 微调。
PatchTST 并非银弹,有几点值得注意:
PatchTST 的核心贡献在于证明了合理的 token 化策略比复杂的注意力机制改进更有效。在其之前,学界投入大量精力设计轻量化注意力(LogSparse、Informer、Autoformer),但 PatchTST 用一个简单的分片思想从根本上重构了时间序列的表示方式。
这一思想深刻影响了后续研究:DLinear 证明简单线性层+patch 可超越复杂 Transformer;iTransformer 反过来用 patch 在变量维度做注意力;TimesNet 将时序转换为 2D 图像再 patch,广泛用于异常检测和分类。PatchTST 催生的"patching paradigm"已成为时间序列深度学习的新基石。
目前该仓库 GitHub 标星超过2600,被引用数百次,证明了其在学术社区的持续影响力。随着 NeuralForecast 和 GluonTS 的集成,企业级应用场景也在持续扩展。
图5:监督 PatchTST 与主流基线对比 — PatchTST/64 在所有数据集上均实现最优或次优 MSE/MAE