ICLR/NeurIPS论文分享:任务通用的时序基础模型

在这里插入图片描述
吴海旭
清华大学软件学院博士生

师从龙明盛副教授,研究方向为深度学习及其在复杂时空物理过程建模中的应用,目前在Nature Machine Intelligence、IEEE TPAMI、ICML、NeurIPS上发表多篇论文,研究成果在中国气象局、北京冬奥会落地应用。曾获清华大学研究生特等奖学金、研究生“学术新秀”等荣誉。

论文分享:
TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis(ICLR 2023)
TimesNet:任务通用的时间序列分析骨干网络

SimMTM: A Simple Pre-Training Framework for Masked Time-Series Modeling(NeurIPS 2023)
SimMTM:时间序列掩码预训练框架


以下内容是根据清华大学软件学院吴海旭在2023 CCF国际AIOps挑战赛决赛暨“大模型时代的AIOps”研讨会闪电论文分享环节上的演讲整理成文:

大家好,我是来自清华大学软件学院的博士生吴海旭,师从龙明盛教授。非常高兴今天有机会可以跟各位专家和同行分享我们在时间序列基础模型上的研究成果。

时间序列在现实世界中无处不在,比如金融业、能源业、交通业等,当然也存在于我们的运维领域中。

图片

在时间序列领域,我们期待能够用深度学习的方法给时间序列的分析添砖加瓦,让它变得更加智能,比如像预测、缺失值填补、异常检测、分类等等,这些复杂的分析任务,在日常的运维工作之中都起到非常关键的作用。

图片

在此之前,我们期望的是给每一个任务都训练一个匹配模型,但是在2021年的时候Foundation Model这个概念被提出来了,由此我们产生了一个想法:能不能用一个模型去完成多种分析任务,比如可以接受多模态输入,然后完成多种多样的任务。我们这次研究的主要是时间序列方面,所以具体的目标就是这个模型能不能接受时间序列,然后完成刚才提到的这4种任务(预测、缺失值填补、异常检测、分类)。

图片

通常情况下,我们要建立一个这样的Foundation Model模型,需要很多种类的内容,比如大数据、模型结构的设计以及训练方法,只有这三方面都具备之后,我们才能够去完成一个大模型的设计。

我们实验室主要关注的是模型的设计以及训练方法的设计,今天我分享的两篇论文也是和这两方面相关的,一篇是TimesNet:任务通用的时间序列分析骨干网络;一篇是SimMTM:时间序列掩码预训练框架。

图片

我们先介绍第一篇论文:TimesNet: Temporal 2D-Variation Modeling for General Time Series Analysis / TimesNet:任务通用的时间序列分析骨干网络。这是去年我们发表在ICLR 2023上的一篇论文。研究内容是尝试使用一个通用的Backbone去解决上述提到的时序分析的主流任务。

图片

一般来说,通用的Backbone在视觉和NLP里面已经有非常成功的案例,比如大家所熟知的Transformer系列和ResNet等等。它们的范式都是在一个Backbone的后面加上一个领域任务特定的头部,也就是Backbone是共享的,头部是独特的。如果按照这个思路设计,那在时间序列里面的Backbone应该长什么样子呢?

图片

我们可以对比一下图像、自然语言和时间序列有什么区别?

对于图像和自然语言来说,即使是很小的一部分,比如图像中一个局部或者语言之中的一个词,它都含有非常丰富的语义信息。但对于时间序列而言就特别不一样了,因为时间序列上的每一个小的时刻,都是只包含几个常数,信息量非常少,更多的信息其实被包含在了这个时间序列的变化之中,我们把它叫做Temporal Variations。

图片

上图中展示出的是一个序列,有上升平稳和下降的过程,多种多样的过程混杂在一起,让时间序列的分析变得特别复杂。

图片

我们发现现实世界的时间序列往往表现出一种多周期的属性,比如说交通有天的和周的周期,天气有天的和年的周期等等,多个周期混叠在一起,让时间序列的变化变得特别复杂。于是我们决定通过一个多周期的视角,重新去分析时间序列的技术模型该怎么去做。

图片

同时我们深入到每个周期,发现它还包括周期内和周期间的变化。周期内就是short-term的变化,是由于时间序列连续性造成的。周期间是不同周期相同相位的过程,是时间序列的一个long-term的信息,如何让模型同时捕捉周期内和周期间的属性,也是我们研究的一个重点。

图片

基于上述两个观察,我们设计了TimesNet模型。为了建模多周期,它天然使用了A modular一种模块化的思路,把一个时间序列分解成多个周期去处理。

对于每个周期,我们想同时表示它周期内和周期间的变化,时间序列是排布在一个 1D的空间之中,它周期内的变化是连续的,周期间的变化是间隔的,这里就产生了一个难点:1D空间很难同时表现出两种不同的变化方式。

图片

针对上述难点我们提出了一个Temporal 2D-variation的概念,也就是在二维空间之中去分析原来的1D时间序列。比如说一个周期长度是n,整个序列的长度是2n,我们就可以按照周期把它折叠。像图片中上面部分展示的那样,我们可以把一个时间序列按照周期,把它重新排序成一个二维的张量,它在每一行是不同周期同向位的过程,每一列是相同周期内的过程。

这样处理有一个好处,就是我们可以用2D的张量天然的把时间序列重新排布重新组织,能够非常方便的表示周期内和周期间的变化。

图片

我们举个例子,图片中展示的是一个电力数据集,我们发现电力数据集有多个周期,包括Period 72、 Period 40和Period 24等等。重新排布之后,这个时间序列就变得特别的有趣了,原来的时间序列是很复杂的,现在它竟然表现出了一些locality也就是有一些局部性。这个其实很好理解,就是你和你周围的点相似,你和不同周期相同相位的点也是相似的,这样的2D locality在视觉之中是被非常重视的一种特征。

图片

在这种思路的引导下,我们能不能用视觉之中的backbone去处理这种原始的1D的时间序列呢?这就是我们的一个核心概念,通过建模Temporal 2D-variation,可以让视觉的领域和时间序列分析的领域联合起来。

图片

上图展示的是我们TimesNet的一个整体架构。它是模块化的,同时在二维空间之中去分析1D的时间序列。

图片

我们提出一个标准的backbone,然后借鉴了ResNet的设计思想,只不过我们把ResBlock换成了TimesBlock。

具体的设计方法是首先在1D空间之中去学特征,然后通过FFT寻找周期,得到周期之后,把它折叠成二维的Tensor,然后用2D的Kernel去处理,最后在1D空间之中把这个特征结合起来。

图片

我们的研究成果在Long-term Forecasting、Short-term Forecasting、Imputation、Classification、Anomaly Detection这5种任务上进行了测试,结果是非常令人兴奋的,5种任务都取得了令人满意的效果。

当然模型设计的过程是很难的,之前的模型是把一个任务完成好,现在我们这个模型可以展现出多功能的属性。

因为这是去年投稿的论文,今年已经有很多非常棒的论文新出来。希望我们这篇论文能给大家一个启发,时序模型的任务可以做的更加丰富多样。

图片

刚才我们提到了设计方式可以让时间序列原始的1D的时间序列和视觉领域的一些前沿工作结合起来,把2D Kernel换成ConvNext(这是CV领域一个非常棒的工作)效果可以进一步的提升。但是因为我们要trade off efficiency和performance,最后我们选择了一个Inception的结构。

图片

这个代码也开源了,我们提供了非常完整的5个任务的代码,大家可以非常方便的去测试自己的深度模型。Code is available at https://github.com/thuml/Time-Series-Library with 3000+ stars.

图片

一个大模型不光需要结构,还需要一个训练方法。下面我继续分享另一篇我们在NeurIPS 2023上发表的论文, SimMTM: A Simple Pre-Training Framework for Masked Time-Series Modeling。

图片

这篇论文主要研究的是时间序列的预训练任务。很多业界的前辈都有感受,时间序列实在是太多了,所以预训练任务非常重要。现在我们可以通过一个预训练的方法,把这些时间序列的知识压缩到一个深度模型之中,等我们有了新的场景之后,可以通过Fine-tuning模型把它的知识释放出来。

最近在深度学习领域有一个非常火的训练方法叫Masked Modeling(掩码重建),掩码重建思想在自然语言和CV里面被广泛使用,比如BERT或者MAE等。

图片

图片

最开始我们关注MAE的时候感觉非常惊艳。如果把一张图像75%的部分遮挡,得到的是左边图像的效果,然后拿一个深度模型去重建遮挡的部分。右边是重建的结果,效果非常理想。我想如果让一个人类去重建,比如重建一个花豹,大概率不如深度模型做的好。

这其实意味着可以让深度模型去记忆,通过没有被掩码的部分去想象出来它被掩码的部分应该是什么样子,逼迫深度模型去学习一些特征。

如果我们把掩码重建的思路应用到时间序列里面是否可行?答案是否定的,因为时间序列的每一个局部所包含的信息量非常少,它更多的信息是在变化之中,掩码之后这个变化就被破坏掉了。

图片

我们做了一个简单的实验,把某个时间序列Masked的50%让深度模型去重建。图片右边的橘色线条是重建结果,蓝色线条是原始状态,通过对比可以看到重建的结果非常差。这意味着在原始的时间序列流行之中,给它Masked就相当于做一个扰动得到红色点,把它再重新投影回流行之中,这个过程其实是很困难的。

图片

在研究的过程中我们产生了一个新的想法,能不能借助流形学习里面一个非常重要的概念Neighborhood Aggregation也就是近邻聚合的思想,不仅仅是依靠自己去重建,而是依靠身边的近邻点去重建。对于一个时间序列来说,连续对它Masked四、五次(Masked都是随机的),这四、五次时间序列之间是会有一个互相互补的信息,这样就可以让重建变得更好。当然重建不是最终目的,重建变得更好可以让模型训练得更好,最终目的是指导模型训练。

图片

两种方法的结果对比非常明显,当用近邻聚合的方法代替原始的MAE的方法的时候,我们发现更多的信息被深度模型捕捉到了,它可以让时间序列被重建的更好。

图片

对于一个时间序列来说,我们要做好两方面的事情,第一是重建什么?第二是怎么重建?

重建什么?

我们要做的是点级别的重建,就是一个序列还原出一个序列。我们需要一个Point-wise Representations,就是一个点级别的表征。

怎么重建?

我们的想法是把多个时间序列融合在一起,设计一个Series-wise Representations,它是一个序列级别的表征。同时获得这两个之后,我们可以在序列级别表征上去学习多个时间序列的相似度,然后基于相似度把点级别的表征给聚合起来,这样就可以完成一个重建。这个过程也天然利用了多个掩码序列之间的相似度。

另外还有一个隐式的表征,我们发现如果给它的局部信息更多了,可以在流行学习的时候,不光是学 projection的过程,还可以学习流行附近的表征,让我们的表征学习学习的更好。

图片

我们的模型也在Forecasting和Classification两个任务上做了检验,两个任务的差别非常大,因为Forecasting需要的是一个low level的任务,Classification需要的是一个high level的表征,它分别是1D重建和高维度分类的过程。

图片

我们也进行了领域内和跨领域的测试,跨领域是指在一个完全不一样的数据集上预训练,然后在另外一个数据集上做测试。最后SimMTM的表现还是不错的,也可以提升Fine-tuning的效果。

图片

除此之外,我们发现这个模型预训练方法,还可以一致性的提升时间序列预测模型的效果,图片中显示的是我们选的几个比较前沿的时间序列预测模型测试结果,用我们这个方法预训练完之后,再去Fine-tuning,这些模型的效果变得更好了。

我们的模型代码也已经开源了,欢迎大家学习交流。Code is available at https://github.com/thuml/SimMTM

图片

总结一下。

关于现在时间序列里面的Foundation Model,大家有许多的争论,到底我们应该怎么做,是以时间序列为中心,还是要引入更多模态进来,这件事情目前还是处于未定状态。我个人觉得更多的是需要我们工业界和学术界的深度联动,工业界和学术届分别发挥在数据、算力和模型设计等方面的优势,紧密合作才可以有突破。

以上就是我的分享,谢谢大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/416269.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【低代码开发_RuoYi_框架】RuoYi框架_前端页面部署/搭建

开源软件的影响力 随着信息技术的快速发展,开源软件已经成为软件开发的趋势,并产生了深远的影响。开源软件的低成本、可协作性和透明度等特点,使得越来越多的企业和个人选择使用开源软件,促进了软件行业的繁荣。然而,…

【Linux深入剖析】再续环境变量 | 进程地址空间

📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 目录 1.环境变量再续1.1 和…

visio、ppt、office等另存图片,如何设置更清晰

visio、ppt、office等另存图片,如何设置更清晰 选中要另存为的部分——文件——另存为——选好位置——格式选jpg——保存——按下图设置:质量100%,分辨率选打印机,大小选屏幕——确定

Linux:Kubernetes(k8s)——基础理论笔记(1)

我笔记来源的图片以及共享至GitHub,本章纯理论。这是k8s中部分的基础理论 👇 KALItarro/k8spdf: 这个里面只有一个pdf文件 (github.com)https://github.com/KALItarro/k8spdf👆 什么是kubernetes kubernetes 是一个开源的,用于管…

COMPOSER安装使用WIN下升级PHP-V

想用TP6使用phpspreadsheet但是说我PHP版本低,原来是PHP7.0 composer要求至少7.4 直接修改环境变量,把PHP目录切换到7.4 composer升级比较简单,在PHP目录下CMD然后官网的命令执行下即可 下面就可以在TP根目录下执行命令安装PHPSPREADSHEET…

MyBatis 学习(二)之 第一个 MyBatis 案例

目录 1 配置 MyBatis 方式 1.1 XML 配置文件 1.2 Java 注解配置 1.3. Java API 配置 2 在 MySQL 中创建一张表 3 创建一个基于 Maven 的 JavaWeb 工程 4 编写 User 实体类 5 创建 Mybatis 全局配置文件 6 编写一个 DAO 或 Mapper 接口 7 编写 SQL 映射配置文件&#…

C++的继承和多态

继承和多态 继承继承的权限继承的子父类访问派生类的默认成员函数菱形继承(C独有)【了解】虚拟继承什么是菱形继承?菱形继承的问题是什么?什么是菱形虚拟继承?如何解决数据冗余和二义性的继承和组合的区别?…

Vue3如何使用Pinia状态管理库与持久化

大家好,我是你们的好朋友咕噜铁蛋!今天我将和大家分享如何在Vue3中使用Pinia状态管理库以及实现状态持久化的方法。作为一个Vue开发者,我们知道状态管理在大型应用程序中起着至关重要的作用。而Pinia作为Vue3推荐的状态管理库之一&#xff0c…

【论文笔记】Attention Is All You Need

【论文笔记】Attention Is All You Need 文章目录 【论文笔记】Attention Is All You NeedAbstract1 Introduction2 Background补充知识:软注意力 soft attention 和硬注意力 hard attention?补充知识:加法注意力机制和点乘注意力机制Extende…

HCIA-Datacom实验指导手册:6 构建基础 WLAN 网络

HCIA-Datacom实验指导手册:6 构建基础 WLAN 网络 一、实验介绍:二、实验拓扑:三、实验目的:四、配置步骤:1.掌握ap上线的配置方式和上线过程。ac配置验证 步骤 2 掌握隧道模式和旁挂模式下ac的配置。步骤 3 掌握查看ap…

android高级面试题2020,这套Github上40K+star面试笔记

前言 这里整理的是一些与技术没有直接关系的面试题,但是能够考察你的综合水平,所以不要以为不是技术问题,就不看,往往有时候就是这样一些细节的题目被忽视,而错过了一次次面试机会。 想要成为一名优秀的Android开发&…

生成服从伽马分布的随机样本np.random.gamma()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 生成服从伽马分布的随机样本 np.random.gamma() 选择题 关于以下代码输出的结果说法正确的是? import numpy as np import seaborn as sns a np.random.gamma(shape2,scale1.0,si…

WordPress通过宝塔面板的入门安装教程【保姆级】

WordPress安装教程【保姆级】【宝塔面板】 前言一:安装环境二:提前准备三:域名解析四:开始安装五:安装成功 前言 此教程适合新手,即使不懂代码,也可轻松安装wordpress 一:安装环…

时间管理大师速成(程序员版)

01 时间管理的重要性 管理时间有几个主要的原因: 时间和生活质量:时间是我们拥有的最宝贵的资源之一,管理好时间会直接影响我们的生活质量。高效的时间管理可以让我们开展日常活动,实现目标,并拥有休闲和休息的时间。 …

【虹科干货】以服务为中心的IT基础设施如何优化网络分析?

文章速览: 发现和识别故障实时数据分析数据包分析数据包快速捕获和解码 随着基础设施环境的快速变化和技术的不断进步,用户数量和IT基础设施流量迅速增加,服务故障的数量也相应增加。此时,服务中断不仅会带来直接的不便&#xf…

苍穹外卖学习 Day10 Day11 Day12

前言 用于记录苍穹外卖Day10、Day11、Day12的学习 Day10 订单状态定时处理 来电提醒 客户催单 订单状态定时处理 Spring Task Spring Task是一个任务调度工具,可以按照约定的时间自动执行某个代码逻辑(定时自动执行某段Java代码) cron表…

小程序动态调试-解密加密数据与签名校验

前言: 微信小程序的加密与验签早前大多数情况,要么就是逆向获取源码而后拿到加密秘钥,要么就是逆向拿到源码后使用腾讯自带的小程序开发者功能进行动态调试模拟,今天介绍一款志远大佬的开源工具—WeChatOpenDevTool 工具下载地址…

01 MySQL之连接

1. 连接 1.0 基础认知 多表(主表)和一表(从表的区别): 多表一般是主表,一般存储主要数据,每个字段都可能存在重复值,没有主键,无法根据某个字段定位到准确的记录; 一表一般是从表,一般存储辅助数据&…

点云数据处理常用外部库(C++/Windows)的项目配置

一、点云数据处理常用外部库(C版本)的下载安装与项目配置 (一)PCL 基于VS2019编程平台的PCL外部库下载安装及项目配置已有大量博客,本文不再赘述。具体下载安装及项目配置流程可参考外部库编译配置参考资料/*1*/ 。需…

redis-RedisTemplate.opsForGeo 的geo地理位置及实现附近的人的功能

redis内部使用的是 zset 数据结构存储,如下 import cn.huawei.VideoApplication; import cn.huawei.domain.Jingqu; import cn.huawei.service.JingquService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired…