首页 > 其他分享 >TS2Vec: 面向通用的时间序列表示《TS2Vec: Towards Universal Representation of Time Series》(时间序列、对比学习)

TS2Vec: 面向通用的时间序列表示《TS2Vec: Towards Universal Representation of Time Series》(时间序列、对比学习)

时间:2024-05-22 13:41:22浏览次数:18  
标签:表示 TS2Vec 学习 时间 Series 序列 上下文

今天是2024年5月22日,10:24,今天看这篇经典的论文(如果你问我为什么最近频繁看论文,因为我的创新点无了,要找创新点+太菜了,菜就多看多学)。

论文:TS2Vec: Towards Universal Representation of Time Series

或者是:TS2Vec: Towards Universal Representation of Time Series

GitHub:https://github.com/zhihanyue/ts2vec

AAAI 2022的论文。

(不保证翻译能完美表达作者的内容,因为是机翻的,我人是看的原文,机翻方便写博客.)

 

摘要

本文介绍了 TS2Vec,这是一个用于学习任意语义层次的时间序列表示的通用框架。与现有方法不同的是,TS2Vec 在增强上下文视图上以分层方式执行对比学习,从而为每个时间戳提供稳健的上下文表示。此外,要获得时间序列中任意子序列的表示,我们可以对相应时间戳的表示进行简单的聚合。我们在时间序列分类任务中进行了大量实验,以评估时间序列表示的质量。结果表明,在 125 个 UCR 数据集和 29 个 UEA 数据集上,TS2Vec 比现有的无监督时间序列表示 SOTAs 有了显著提高。学习到的时间戳级表示在时间序列预测和异常检测任务中也取得了优异成绩。在所学表征基础上训练的线性回归结果优于之前的时间序列预测 SOTAs。此外,我们还提出了一种简单的方法,将学习到的表征用于无监督异常检测,从而在文献中确立了 SOTA 的结果。源代码可在 https://github.com/yuezhihan/ts2vec 公开获取。

1 引言

时间序列在金融市场、需求预测和气候建模等多个行业中发挥着重要作用。学习时间序列的通用表示是一个基本但具有挑战性的问题。许多研究(Tonekaboni、Eytan 和 Goldenberg,2021 年;Franceschi、Dieuleveut 和 Jaggi,2019 年;Wu 等人,2018 年)侧重于学习实例级表征,这种表征描述了输入时间序列的整个片段,并在聚类和分类等任务中取得了巨大成功。此外,最近的研究(Eldele 等人,2021 年;Franceschi、Dieuleveut 和 Jaggi,2019 年)采用了对比损失来学习时间序列的内在结构。然而,现有方法仍存在明显的局限性。

首先,实例级表征可能不适合需要细粒度表征的任务,例如时间序列预测和异常检测。在这类任务中,人们需要推断特定时间戳或子序列的目标,而整个时间序列的粗粒度表示不足以达到满意的性能。

其次,现有方法很少能区分不同粒度的多尺度上下文信息。例如,TNC(Tonekaboni、Eytan 和 Goldenberg,2021 年)可区分长度不变的片段。TLoss(Franceschi、Dieuleveut 和 Jaggi,2019 年)使用原始时间序列中的随机子序列作为正样本。然而,它们都没有在不同尺度上对时间序列进行特征描述,以捕捉尺度不变的信息,而这对时间序列任务的成功至关重要。直观地说,多尺度特征可以提供不同层次的语义,提高学习表征的泛化能力

第三,大多数现有的无监督时间序列表示方法都受到 CV 和 NLP 领域经验的启发,这些方法具有很强的归纳偏差,如变换不变性和裁剪不变性。然而,这些假设并不总是适用于时间序列建模。例如,裁剪是一种常用的图像增强策略。然而,时间序列的分布和语义可能会随着时间的推移而发生变化,裁剪后的子序列很可能与原始时间序列的分布截然不同。

为了解决这些问题,本文提出了一种名为 TS2Vec 的通用对比学习框架,它能在所有语义层次上对时间序列进行表征学习。它在实例维度和时间维度上分层区分正样本和负样本;对于任意子序列,其整体表示可通过对相应时间戳的最大池化获得。这样,该模型就能以多种分辨率捕捉时间数据的上下文信息,并生成任何粒度的细粒度表示。此外,TS2Vec 的对比目标是基于增强上下文视图,即同一子序列在两个增强上下文中的表示应保持一致。这样,我们就能为每个子序列获得稳健的上下文表示,而不会引入未被重视的归纳偏差,如变换和裁剪不变性。

我们在多个任务中进行了广泛的实验,以证明我们方法的有效性。时间序列分类、预测和异常检测任务的结果验证了 TS2Vec 的学习表征是通用和有效的。

本文的主要贡献概述如下:

  • 我们提出了 TS2Vec,这是一个统一的框架,可在不同语义层面学习任意子序列的上下文表示。据我们所知,这是第一项为时间序列领域的各种任务(包括但不限于时间序列分类、预测和异常检测)提供灵活通用表示方法的工作。
  • 为了实现上述目标,我们在约束学习框架中采用了两种新颖的设计。首先,我们在实例和时间维度上使用分层对比方法来捕捉多尺度的上下文信息。其次,我们提出了用于正样本对选择的上下文一致性。与以往的技术不同,它更适用于具有不同分布和尺度的时间序列数据。广泛的分析表明了 TS2Vec 对有缺失值的时间序列的鲁棒性,分层对比和上下文一致性的有效性也通过消融研究得到了验证(也经过了时间的验证,分层和上下文一致性确实是有效果的)。
  • 在分类、预测和异常检测等三个基准时间序列任务中,TS2Vec 的表现优于现有的 SOTAs。例如,与分类任务中无监督表示的最佳 SOTA 相比,我们的方法在 125 个 UCR 数据集上平均提高了 2.4% 的准确率,在 29 个 UEA 数据集上平均提高了 3.0%。

2 方法

2.1 问题定义

给定 N 个实例的一组时间序列 X = {x 1 , x 2 , --- , x N },目标是学习一个非线性嵌入函数 Temporal Contrast f θ,将每个 x i 映射到最能描述其自身的表示 r i 上。输入时间序列 x i 的维度为 T × F,其中 T 是序列长度,F 是特征维度。表示 r i = {r i,1 , r i,2 , --- , r i,T } 包含每个时间戳 t 的表示向量 r i,t∈ K,其中 K 是表示向量的维度。

2.2 模型架构

TS2Vec 的整体架构如图 1 所示。我们从输入时间序列 x i 中随机抽取两个重叠的子序列,并鼓励在共同的片段上保持上下文表征的一致性。原始输入被送入编码器,编码器通过时间对比损失和实例对比损失进行联合优化。在分层框架中,总损失在多个尺度上求和。

编码器 f θ 由三个部分组成,包括输入投影层、时间戳掩码模块和扩张 CNN 模块。对于每个输入 x i,输入投影层是一个全连接层,它将时间戳 t 的观测值 x i,t 映射到一个高维潜向量 z i,t 上。时间戳掩码模块会掩码随机选择的时间戳上的潜在向量,生成增强的上下文视图。请注意,我们掩码的是潜在向量而不是原始值,因为时间序列的值范围可能是无界的,而且不可能为原始数据找到特殊的标记。我们将在附录中进一步证明这种设计的可行性。

然后,我们将应用一个包含十个残差块的扩张 CNN 模块来提取每个时间戳的上下文表示。每个区块包含两个 1-D 卷积层,每个卷积层都有一个扩张参数(第 l 个区块为 2 l)。扩张卷积可为不同领域提供大的感受野(Bai、Kolter 和 Koltun,2018 年)。在实验部分,我们将展示它在各种任务和数据集上的有效性。

(12:07,吃午饭去了.)

 

标签:表示,TS2Vec,学习,时间,Series,序列,上下文
From: https://www.cnblogs.com/ZERO-/p/18205878

相关文章

  • 300-Longest Increasing Subsequnce-最长递增子序列
    问题描述链接:https://leetcode.com/problems/longest-increasing-subsequence/description/Givenanintegerarray nums,return thelengthofthelongest strictlyincreasing subsequence解释:给定一个数组nums,返回长的严格递增子序列。案例:Input:nums=[10,9,......
  • 序列化与反序列化
    引用DLL文件:Newtonsoft.Json.dll路径:D:\yonyou\U9CE\Portal\bin\C#实体类List<Departments>deptss=newList<Departments>();privatevoidDepartment_Load(objectsender,EventArgse){strUri=TexURI.......
  • Jackson 库中@JsonProperty和@JsonAlias注解实现序列化反序列化
    Json序列化一般为实体转化生成的JSON数据中直接包含嵌套对象的属性ObjectMappermapper=newObjectMapper();Bookbook=newBook("LearningJava","Java");Writerwriter=newWriter(110,"Mohit",book);StringjsonWriter=......
  • Java常用的JSON序列化与反序列化工具实践
    JSON简介:JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,通常用于在不同系统之间传输数据。它基于JavaScript对象语法,但已成为一种独立于语言的格式。JSON数据以键值对的形式组织,易于阅读和编写。为什么要使用JSON?1.简单易用:JSON的语法简单,易于理解和编写,可以......
  • 【C#】读取文件反序列化对应类
    ///<summary>///反序列化///</summary>///<paramname="filePath">文件路径</param>///<returns></returns>publicstaticList<T>JsonToList<T>(stringfilePath){stringjsonStr=File.ReadAllText(fi......
  • 洛谷 P10512 序列合并
    哭死,比赛的时候完全想歪了,想的是考虑一次合并能造成多大的贡献,按照贡献排序然后合并。这样做只能考虑局部造成的贡献,然而最后算的时候要考虑整体,所以并不是很对。正着想没有思路就可以倒着想,考虑枚举答案。合并k次,意味着最后是n-k个数。经典从二进制高位到低位考虑,考虑这一位(假......
  • 如何正确实现一个自定义可序列化的 Exception
    最近在公司的项目中,编写了几个自定义的Exception类。提交PR的时候,sonarqube提示这几个自定义异常不符合ISerializablepatten.花了点时间稍微研究了一下,把这个问题解了。今天在此记录一下,可能大家都会帮助到大家。自定义异常#编写一个自定义的异常,继承自Exception,其中......
  • redis存储之序列化问题
    1.问题描述:在SpringBoot集成Redis过程中,添加进redisf的内容如下2.出现这种情况的原因(1) 键和值都是通过Spring提供的Serializer序列化到数据库的(2) RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer3.解......
  • Weblogic T3反序列化漏洞(CVE-2018-2628)
    目录前言T3协议概述漏洞复现修复方案前言WebLogicServer是一个企业级的应用服务器,由Oracle公司开发,支持完整的JavaEE规范,包括EJB、JSP、Servlet、JMS等,适合大型分布式应用和高负载场景。T3协议概述T3协议(Two-TierTCP/IPProtocol),是WebLogic中的一种专有协议,建立在TCP/IP协......
  • 300. 最长递增子序列
    给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。示例1:输入:nums=[10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是[2,3,7,1......