赞
踩
距离上篇总结Crossformer感觉又是过了好几个月,越往后记录的时间越来越少了,那就趁最近刚整理完脑子里还有余温,作为2024年第一篇吧~
这篇是2023年ICLR的文章,提出了一种有效的多元时间序列预测和自监督表示学习模型 PatchTST,主要是基于Transformer做了以下两点改进:
- 1、将时间序列按照一定大小的窗口和步长切分成Patch,作为模型输入的Token捕捉局部信息;
- 2、通道独立性:以多变量时间序列为例,每个通道包含一个单变量时间序列,共享相同的嵌入和权重。
(据说是因为前年很火的线性模型DLinear原文中对Transformer类模型进行时间序列预测提出的质疑,该文做出了回答并改进,最后使得基于Transformer的PatchTST模型在长期预测上效果超过线性模型DLinear。)
首先Patch,顾名思义,就是将序列进行分块,每一个Patch块相当于模型的输入。
早在CV领域就有Patch的思想了,Vision Transformer模型中的Patch是将输入图像分割成均匀大小的区域,每个图像块作为Transformer输入的Token,用来捕获图像内部和区域的关系。
在时间序列中也类似,照一定大小的窗口和步长切分成Patch,这些Patch可以是重叠的或非重叠的。Patch长度为P,步长为S,通过Patch,输入的数量可以从L减少到大约L/S,而注意力机制的内存使用和计算复杂度是成平方减少的。
Patch的改进优势:
- 1、降低时间和空间复杂度。Attention的复杂度与输入Token的数量成二次方关系,每一个Patch代表一个Token而不是以往每个时间点代表一个Token,减少了Token数量,从而降低复杂度。
- 2、保持时间序列的局部性。每个Patch捕捉了局部信息,使模型关注了不同区域的特征。相邻时间点的值很接近,而以一个Patch作为计算注意力的最小单位更合理。
- 3、减少Head的参数量。分Patch前Head大小为(LD)×(MT),其中L为输入序列长度,M为序列个数;分Patch后将L减少到Patch的个数N,这样就不需要逐时间点处理,集中在每个Patch上处理,有效减少参数量。
以往基于Transformer的模型采用通道混合的方式,对于多变量时间序列,直接将时间序列所有维度形成的向量投影到嵌入空间来混合多个通道的信息。通道独立性将多元时间序列中的每一维分别输入到Backbone中单独处理,再将预测结果沿维度方向拼接起来,相当于不同维度视为独立的,而嵌入和权重在各维度中是共享的。
- 1、对于多变量时间序列来说,不同变量(即不同通道)的数据有着不同规律,如果直接混合后投射到同一空间中学习比较困难。
- 2、一个通道中的数据如果有噪声,很容易影响其他通道。
- 3、通道独立性不容易过拟合。
PatchTST模型结构图如下:
- 图b每个通道的单变量序列通过实例归一化操作分割为多个Patch,用来作为Transformer的输入Token。
- 图c的自监督学习通过随机赋值0的方式遮盖部分Patch,然后通过自监督重建被遮盖的数据,可以更好捕捉时间序列中的模式和特征。
其他具体细节还需读读原文: A Time Series is Worth 64 Words: Long-term Forecasting with Transformers
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。