公司动态
PatchTST深度解析:基于补丁划分的Transformer时间序列预测架构创新
PatchTST深度解析基于补丁划分的Transformer时间序列预测架构创新【免费下载链接】PatchTSTAn offical implementation of PatchTST: A Time Series is Worth 64 Words: Long-term Forecasting with Transformers. (ICLR 2023) https://arxiv.org/abs/2211.14730项目地址: https://gitcode.com/gh_mirrors/pa/PatchTSTPatchTSTPatch Time Series Transformer是ICLR 2023提出的创新时间序列预测模型通过补丁划分机制和通道独立处理在长期时间序列预测任务中实现了21.0%的MSE性能提升。该模型的核心创新在于将时间序列分割为补丁片段并采用Transformer架构进行序列建模有效解决了传统Transformer在长序列预测中的计算效率和性能瓶颈问题。时间序列预测的技术挑战与PatchTST的解决方案传统时间序列预测模型在处理长序列时面临两大核心挑战计算复杂度随序列长度呈平方增长以及模型难以捕捉长距离的时间依赖关系。现有的Transformer-based方法虽然在自然语言处理领域取得了巨大成功但直接应用于时间序列预测时由于序列长度通常远超文本序列导致计算资源消耗巨大且性能受限。PatchTST通过创新的补丁划分机制解决了这一难题。其核心思想是将连续的时间序列划分为不重叠的补丁片段每个补丁作为Transformer的输入token显著减少了序列长度。同时模型采用通道独立处理策略对多变量时间序列的每个通道分别建模共享Transformer权重既保证了计算效率又保持了各通道的独立性。补丁划分机制详解PatchTST的核心创新在于其独特的补丁划分方法。在PatchTST_supervised/layers/PatchTST_backbone.py中补丁划分的实现代码如下# Patching机制实现 self.patch_len patch_len self.stride stride self.padding_patch padding_patch patch_num int((context_window - patch_len)/stride 1) # 前向传播中的补丁划分 z z.unfold(dimension-1, sizeself.patch_len, stepself.stride) z z.permute(0,1,3,2) # [bs x nvars x patch_len x patch_num]这种补丁划分方法将长度为L的时间序列转换为N个长度为P的补丁其中N (L-P)/stride 1。通过调整补丁长度和步长模型可以灵活控制输入序列的粒度平衡局部特征捕获和全局依赖建模的需求。图1PatchTST模型架构图展示了通道独立处理、补丁划分和Transformer骨干网络的三层结构设计Transformer骨干网络架构优化通道独立处理策略PatchTST采用通道独立Channel-independence的设计理念在多变量时间序列预测中每个通道被视为独立的单变量序列。这种设计具有多重优势参数效率所有通道共享相同的Transformer权重大幅减少模型参数量计算效率避免了通道间复杂交互的计算开销泛化能力模型可以灵活处理不同维度的多变量序列在PatchTST_supervised/models/PatchTST.py中通道独立处理的实现体现在模型的前向传播过程中def forward(self, x): # x: [Batch, Input length, Channel] if self.decomposition: # 趋势-残差分解处理 res_init, trend_init self.decomp_module(x) res_init, trend_init res_init.permute(0,2,1), trend_init.permute(0,2,1) res self.model_res(res_init) trend self.model_trend(trend_init) x res trend x x.permute(0,2,1) else: # 直接处理 x x.permute(0,2,1) # 转换为[Batch, Channel, Input length] x self.model(x) x x.permute(0,2,1) return x可逆实例归一化RevIN为了增强模型的稳定性和泛化能力PatchTST集成了可逆实例归一化Reversible Instance Normalization技术。在PatchTST_supervised/layers/RevIN.py中实现的RevIN层能够在训练时对每个实例进行归一化在推理时进行反归一化有效处理非平稳时间序列数据。监督学习与自监督学习双模式监督学习性能表现PatchTST在监督学习模式下展现出卓越的预测性能。从性能对比表中可以看出PatchTST/64和PatchTST/42在多个数据集上均显著优于传统Transformer模型表1有监督PatchTST在多变量长期预测任务中的性能对比PatchTST/64相比最佳Transformer模型平均MSE降低21.0%在Weather、Traffic、Electricity和ILI四个基准数据集上PatchTST在多种预测长度下均保持领先优势。特别是在长序列预测任务中T720PatchTST相比FEDformer、Autoformer等模型展现出更稳定的性能表现。自监督学习与迁移学习能力PatchTST的自监督学习模式通过掩码补丁预测任务进行预训练显著提升了模型的数据利用效率。在PatchTST_self_supervised/patchtst_pretrain.py中自监督训练的核心参数配置包括# 自监督训练关键参数 parser.add_argument(--mask_ratio, typefloat, default0.4, helpmasking ratio for the input) parser.add_argument(--n_epochs_pretrain, typeint, default10, helpnumber of pre-training epochs) parser.add_argument(--pretrained_model_id, typeint, default1, helpid of the saved pretrained model)表2自监督PatchTST在多变量长期预测任务中的表现展示了自监督学习在不同数据集上的泛化能力迁移学习实验进一步验证了PatchTST的泛化能力。在Electricity数据集上预训练的模型迁移到Weather和Traffic数据集后相比从头训练的模型仍能保持优异性能表3在Electricity数据集上预训练的PatchTST迁移到其他数据集的表现证明了模型的特征学习能力关键技术实现细节数据预处理与加载PatchTST的数据处理模块位于PatchTST_supervised/data_provider/目录下支持多种时间序列数据格式和预处理策略。data_factory.py中实现了灵活的数据加载工厂模式def data_provider(args, flag): Data data_dict[args.data] timeenc 0 if args.embed ! timeF else 1 data_set Data( root_pathargs.root_path, data_pathargs.data_path, flagflag, size[args.seq_len, args.label_len, args.pred_len], featuresargs.features, targetargs.target, timeenctimeenc, freqargs.freq )模型配置与超参数优化PatchTST提供了丰富的配置选项用户可以通过调整以下关键参数来优化模型性能补丁参数patch_len控制补丁长度stride控制补丁步长Transformer参数n_layers设置编码器层数n_heads控制多头注意力头数训练策略revin启用可逆实例归一化decomposition启用趋势-残差分解训练脚本与实验复现项目提供了完整的训练脚本位于PatchTST_supervised/scripts/PatchTST/目录下。例如运行天气数据集的多变量预测cd PatchTST_supervised sh ./scripts/PatchTST/weather.sh对于自监督学习预训练和微调流程如下# 预训练 python patchtst_pretrain.py --dset ettm1 --mask_ratio 0.4 # 微调 python patchtst_finetune.py --dset ettm1 --pretrained_model model_name性能分析与实验结果不同回溯窗口的影响分析PatchTST在处理不同长度历史窗口时展现出优秀的稳定性。从实验结果可以看出随着回溯窗口L的增加PatchTST的MSE性能持续改善而传统Transformer模型在长窗口下性能可能下降图2不同回溯窗口大小下各模型的MSE性能对比PatchTST在长窗口下表现最优表示学习能力验证与基线表示学习方法相比PatchTST在ETTh1数据集上实现了34.5%-48.8%的性能提升表4PatchTST与基线表示学习方法在ETTh1数据集上的对比展示了其在特征学习方面的优势实践应用与部署指南环境配置与安装要快速开始使用PatchTST首先克隆项目仓库git clone https://gitcode.com/gh_mirrors/pa/PatchTST cd PatchTST安装必要的依赖pip install -r PatchTST_supervised/requirements.txt数据集准备项目支持多种标准时间序列数据集包括ETTElectricity Transformer Temperature、Weather、Traffic等。数据应放置在./dataset目录下格式为CSV文件。模型选择建议根据具体应用场景推荐以下配置策略长序列预测使用较大的patch_len如64和较小的stride增强局部特征捕获多变量预测启用通道独立处理设置individualFalse以共享权重数据稀缺场景采用自监督预训练微调策略提升小数据集的泛化能力非平稳序列启用revin和decomposition选项增强模型稳定性性能调优技巧补丁参数优化通过网格搜索确定最优的patch_len和stride组合Transformer架构调整根据序列复杂度调整n_layers和d_model训练策略优化使用学习率调度和梯度裁剪提升训练稳定性正则化技术适当调整dropout和head_dropout防止过拟合技术选型与未来展望PatchTST的适用场景PatchTST特别适合以下应用场景长期时间序列预测电力负荷预测、气象预报、交通流量预测多变量序列分析金融市场分析、工业传感器监控、医疗时间序列数据稀缺环境通过自监督学习在小样本数据集上取得良好性能实时预测系统高效的补丁划分机制支持实时推理与传统方法的对比优势相比传统时间序列预测方法PatchTST具有以下优势特性PatchTST传统Transformer统计模型计算复杂度O(NP²)O(L²)依赖模型长序列处理优秀受限一般多变量支持通道独立全连接有限自监督学习支持有限支持不支持可解释性中等低高未来发展方向PatchTST的成功为时间序列预测领域开辟了新的研究方向动态补丁划分根据序列特性自适应调整补丁大小跨领域迁移探索不同领域时间序列的知识迁移实时优化开发更适合边缘设备的轻量化版本可解释性增强结合注意力可视化技术提升模型透明度通过创新的补丁划分机制和通道独立处理策略PatchTST在长期时间序列预测任务中实现了性能突破为实际工业应用提供了强有力的技术支撑。其开源实现位于PatchTST_supervised/和PatchTST_self_supervised/目录包含了完整的训练、评估和部署代码便于研究者和开发者快速上手和应用。【免费下载链接】PatchTSTAn offical implementation of PatchTST: A Time Series is Worth 64 Words: Long-term Forecasting with Transformers. (ICLR 2023) https://arxiv.org/abs/2211.14730项目地址: https://gitcode.com/gh_mirrors/pa/PatchTST创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考