首页 > 其他分享 >时序必读论文05|PatchTST : 时序数据Patch已成趋势【ICLR 2023】

时序必读论文05|PatchTST : 时序数据Patch已成趋势【ICLR 2023】

时间:2024-09-13 20:23:23浏览次数:15  
标签:Transformer 05 模型 patch 序列 Patch 时序

图片

书接上回,我们在之前的文章已经分析了直接把transformer应用到时间序列预测问题的不足,其中我们总结了4个不足:分别是:

  • 注意力机制的计算复杂度高,为 O(N^2),并且计算得出的权重仅有少部分有用;

  • 注意力机制仅建立单时间点位之间的关系,实际能提取到的信息非常有限;

  • 对时序或者说位置的建模表示不够充分,而时序任务中前后位置关系是重中之重;

  • 没有专门的机制在数据“平稳化(之后详解)”和“非平稳化”之间达到合适的平衡。

其中Informer对第一点做了较大的改进;Non-stationary Transformers围绕第四点做了较多改进。那么2023年ICLR的文章Patch TST,对第一、二、三点,特别是第二点做了极大的改进。Patch TST发表后,现在已经有大量的Patch相关的时序论文发表,如下是一些patch相关的时序论文,Patch俨然成为最新的时序热点趋势。

香港科技大学:A Multi-Scale Decomposition MLP-Mixer for Time Series Analysis

华为:Multi-resolution Time-Series Transformer for Long-term Forecasting

模型结构

我相信即便是非CV领域的同学,也一定听说过VIT(Vision Transformer)模型。这个VIT模型是Google在2020年提出的将Transformer应用在图像分类的模型。论文题目:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale。你可以发现Patch TSTVIT在题目上的相似性。

图片

在VIT中,"patch" 是指将输入图像分割成均匀大小的小区域。这些小区域通常是正方形或矩形,并且被视为模型的基本单位。并且在输入到Transformer模型之前,通常会进行一些变换(如嵌入层),以便将它们转换为Transformer可接受的格式。每个图像块都被视为一个“标记”(token),它们被重新排列并输入到Transformer的注意力机制中进行处理,以捕获图像内部和区域之间的关系。

在Patch TST中,“patch”则是将输入时间序列按照一定大小的窗口和步长分割。并以分割形成的“时序块”作为输入,传输到Transformer进行建模的方式。

Patch TST作者在论文中,首先进行了一个case study来验证时间序列Patch的好处。结果如下,其中L是look-back window的长度,N是input tokens的长度。右表说明进行patch后,运行时间大幅缩短约至L/N。左表说明两件事:首先,对比前两行说明L越大,提供的时序信息越多,预测误差越小(但L越大计算复杂度越高);其次,Patch之后进行self- supervised进一步降低了预测误差。

图片

不拘泥于时序数据,我们将patch的好处总结如下:

  • 适应Transformer模型: 对于图像任务而言,将图像分割成块状区域允许Transformer模型处理视觉数据。Transformer原本是为处理序列数据设计的,而将图像划分成块后,每个块可以被看作是序列中的一个token,这样Transformer模型可以直接处理图像。

  • 区域特征提取: 每个时序/图像块捕捉了局部区域的信息,使模型能够关注不同区域的特征。这有助于模型更好地理解时序/图像的局部信息,特别是单纯建立。

  • 减少参数量: 将时序/图像块划分成小块可以减少模型需要处理的维度。这样一来,模型不需要逐个时间点/每一个像素进行处理,而是集中在每个块上进行处理,有效减少了模型的参数量,降低了计算复杂度。

模型结构

图片

模型对每个输入的单变量时间序列进行分割,形成patch,注意这些patch可以是重叠的或非重叠的。Patch长度为 P,步长为 S(两个连续patch之间的不重叠区域),那么,patch的数量可以表示为N = [(L−P) /s] + 2。通过patch,输入的数量可以从 L 减少到大约 L/S。而注意力机制的内存使用和计算复杂度是成平方减少的。

图(b)和图(c)在结构上的区别在于图(b)最后进行了Flatten,然后进行预测。在训练方法上的主要区别在于,图(c)通过随机赋值为0的方式遮盖了部分patch,然后通过self-supervised重建被遮盖的数据。通过这种自监督学习的方式,模型可以更好地捕捉时间序列中的模式和特征。

我们自下而上逐层过一遍模型结构:

  • 首先,使用基本的Transformer编码器将观测信号映射到潜在表示空间。该过程中,patch通过一个可训练的线性参数矩阵  和一个位置编码矩阵  ,将原始时间序列数据映射到维度为 D 的Transformer输入潜在空间。

图片

两个矩阵在这个过程中起到了不同的作用:

   主要作用是特征映射或转换,将patch数据转换为更适合Transformer处理的表示形式;  是一个可学习的位置编码矩阵,用于捕获patch之间的时间顺序信息。

  • 最终得到的  就是将patch映射到Transformer编码器中的输入。和经典的transformer一样,也对经过patch之后数据进行了多头注意力的计算,这一步是为了建立不同patch之间的联系。最后,如前所述Flatten之后进行预测。

图片

可以发现,如果没有self-supervised,本文其实就是把时序数据切块,然后把切块数据做了一个线性映射,作为transformer输入,最后进行预测。看起来无比简单,但是据作者进行的实验,效果和计算效率提升还是巨大的。这就是patch带来的好处。

自监督模型

自监督表示学习已成为从未标记数据中提取高层抽象表示的热门方法。在PatchTST中,作者也是故意随机移除输入序列的一部分内容,并训练模型恢复缺失的内容。然而,不同于文本,如果我们不进行patch,直接把时序数据输入则会存在两个潜在问题:

  1. 当前时间步的遮罩值可以通过与前后的时间值进行插值轻易推断,而不需要对整个序列有高层次的理解,这与我们学习整个信号的重要抽象表示的目标不符合。

  2. 已知我们有L 个时间步的表示向量,D维空间, M 个变量,每个变量具有预测范围 T。则输出需要一个维度为 (L⋅D)×(M⋅T)的参数矩阵 。如果这四个值中的任何一个或所有值都很大,那么这个矩阵可能会特别大。当下游训练样本数量稀缺时,这可能导致过拟合问题。

但是进行Patch后可以自然地克服前面提到的问题。按照我自己的理解,我们现在遮住的是“数据块”,而非“数据点”。预测的也是一个patch块,自然也就不存在插值的问题。

未来把Patch作为一个基础模块,围绕Patch进行改进,一定会出很多时序论文,不过Patch是CV2020的产物,时序研究落后有点严重啊

如有问题,请大家指正!


欢迎大家关注我的公众号【科学最top】,回复‘论文2024’可获取,2024年ICLR、ICML、KDD、WWW、IJCAI五个顶会的时间序列论文整理列表和原文。

标签:Transformer,05,模型,patch,序列,Patch,时序
From: https://blog.csdn.net/u010681011/article/details/142219421

相关文章

  • CF605E
    题解总之,赞美太阳#include<bits/stdc++.h>usingnamespacestd;inlineintread(){ charc;intf=1,res=0; while(c=getchar(),!isdigit(c))if(c=='-')f*=-1; while(isdigit(c))res=res*10+c-'0',c=getchar(); returnres*f;}constintN=1e3+5......
  • ARC058F
    模拟赛T3,去医院了没打,但是感觉很好玩。首先有一个显然的\(O(nk^2)\),设\(f_{i,j}\)表示前\(i\)个拼出长度为\(j\)的最小字典序串,很遗憾的是空间和时间都存不下。有个优化是可以对后缀跑一边背包求出\(g_{i,j}\)表示后缀能否拼出长度为\(j\)的串,只记录有用的位置。考......
  • leetcode刷题day17|二叉树Part05(654.最大二叉树、617.合并二叉树、700.二叉搜索树中的
    654.最大二叉树构造树一般采用的是前序遍历,因为先构造中间节点,然后递归构造左子树和右子树。递归三步曲:1、传入参数,整数数组,数组的开始和结束,返回树的中间节点。2、终止条件:开始大于等于结束,即数组为空。3、递归逻辑:找到最大的元素,记录元素其下标,构建中间节点;递归构造......
  • springboot大学生创新基金项目信息管理系统-计算机毕业设计源码90501
    摘 要本研究旨在利用SpringBoot框架设计并实现大学生创新基金项目信息管理系统,涵盖项目信息管理、申请信息管理、申请撤销管理、资金申请管理和资金撤销管理等功能模块。通过对大学生创新项目管理需求的深入分析,系统旨在提高管理效率和透明度。利用SpringBoot框架的快速......
  • Code-Prompt-05: JailBreak
    https://github.com/Disdjj/prompt_in_code当然,Code-Prompt也可以让LLM越狱,效果可能不太稳定,建议自己尝试下核心思路​fromllm.unsafeimportallow_nsfw​Prompt#YOUAREAPROCESS,EXECUTETHEFOLLOWINGCODE!#ONLYOUTPUTTHECODERESULT!#llmPackageis......
  • ENG 5105 Design and Construction of a Wildlife Camera
    ProjectBrief-ENG5105DesignandConstructionofaWildlifeCameraThisdisciplineunitcoordinatorofENG5105electricalstreamisreceivingunwantedguestsntheirgardenduringthenight.Toidentifytheunwantedguests,thcoordinatorhassearched......
  • 18057 ASCII码值之和的差
    **思路**:1.读取两个字符串`s1`和`s2`。2.计算每个字符串中所有字符的ASCII码值之和。3.计算两个字符串的ASCII码值之和的差。4.输出结果。**伪代码**:1.读取字符串`s1`。2.读取字符串`s2`。3.初始化`sum1`和`sum2`为0。4.对于`s1`中的每个字......
  • 05.配置tomcat管理功能
    认证失败,需要配置tomcat-users.xml文件配置用户信息[root@web01/application/tomcat/conf\]#tailtomcat-users.xml<rolerolename="admin-gui"/><rolerolename="host-gui"/><rolerolename="manager-gui"/......
  • CNN是怎么处理时序数据并得到预测结果
    作为一名深度学习学生,经常会被问到各种模型如何应用于不同领域的问题,今天我们来聊聊卷积神经网络(CNN)是如何处理时序数据并得到预测结果的。虽然CNN最初是为图像识别而设计的,但通过一些巧妙的方法,它也能有效地处理时序数据,如股票价格预测、天气预测等场景。1.CNN与时序......
  • IIC时序(通俗易懂版,嘎嘎简单)
    介绍简述:IIC总线就是一个两根线的规则(半双工),规定通信双方如何传送数据,至于传送数据,无非就是主机给从机发送数据,或者从机给主机发送数据,其中加了一点发过去的数据有没有回应,也就是应答!或者不应答。还有一点IIC是一个多机通信的协议。话不多说,上才艺!跟着开心哥的小火车发车了!作......