[论文分享]TimeDRL:多元时间序列的解纠缠表示学习

news2024/12/28 18:10:14

论文题目:TimeDRL: Disentangled Representation Learning for Multivariate Time-Series

论文地址:https://arxiv.org/abs/2312.04142

代码地址:暂无

关键要点:多元时间序列,自监督表征学习,分类和预测

摘要

在许多现实世界的应用程序(例如,医疗保健和工业)中,多变量时间序列数据信息丰富,但由于缺乏标签和高维,具有挑战性。

最近在自监督学习方面的研究已经显示了它们在不依赖标签的情况下学习丰富表征的潜力,但它们在学习解纠缠嵌入和解决归纳偏差问题(例如,变换不变性)方面存在不足。为了解决这些挑战,我们提出了TimeDRL,这是一个通用的多元时间序列表示学习框架,具有解纠缠的双层次嵌入。TimeDRL具有三个新特征:(i)使用[CLS]令牌策略从修补的时间序列数据中分离出时间戳级和实例级嵌入的派生;(ii)利用时间戳预测和实例对比任务进行解纠缠表示学习,前者优化带有预测损失的时间戳级嵌入,后者优化带有对比损失的实例级嵌入;(iii)避免使用增强方法来消除归纳偏差,例如从裁剪和屏蔽中获得的变换不变性。在6个时间序列预测数据集和5个时间序列分类数据集上的综合实验表明,TimeDRL持续优于现有的表征学习方法,预测MSE平均提高57.98%,分类准确率平均提高1.25%。

此外,广泛的研究证实了TimeDRL体系结构中每个组件的相对贡献,半监督学习评估证明了它在现实场景中的有效性,即使有有限的标记数据。

1 介绍

在时间序列域中直接应用SSL面临两个挑战:

1)学习解纠缠的双级表示。现有的方法侧重于派生时间戳级别的嵌入或实例级别的嵌入,但不能同时派生两者。时间戳级别的嵌入对于异常检测和预测是有效的,而实例级别的嵌入则适合于分类和聚类任务。

理论上我们可以通过使用池化方法从时间戳级嵌入中提取实例级嵌入来避免显式地派生实例级嵌入,但这种方法通常会导致各向异性问题,其中嵌入被限制在嵌入空间中的一个狭窄的锥形区域,从而限制了它们的表达性。

2)归纳偏差。归纳偏差是指在学习过程中采用数据增强方法的假设和先验知识,以增强模型对未知数据的泛化能力。其他领域的数据增强方法引入的归纳偏差不适用于时间序列数据。

2 创新点

  • 解纠缠双级嵌入的普遍适用性:我们介绍了TimeDRL,一个操作于解纠缠双级嵌入的多元时间序列表示学习框架。这种设计可以广泛适用于各种时间序列下游任务。TimeDRL利用专用的[CLS] tokenpatched的时间序列数据相结合,允许实例级嵌入通过扩展时间序列范围来捕获更全面的语义信息。

  • 两个借口任务:TimeDRL使用时间戳预测任务来优化时间戳级嵌入,使用实例对比任务来优化实例级嵌入,确保在两个级别上有效学习。

  • 减轻归纳偏倚:为了避免归纳偏倚,TimeDRL在时间戳预测任务中使用了一种没有屏蔽的重建误差方法,并在实例对比任务中利用dropout层的随机性,确保无偏数据表示。

  • 在11个真实世界基准测试中的有效性能:TimeDRL在时间序列预测和分类基准测试中始终优于最先进的性能,证明了所提出的方法在真实世界应用中的通用性。

3 方法

采用Siamese网络架构,使用Transformer作为编码器fθ,通过利用编码器内dropout层的固有随机性从相同的输入生成两个不同的嵌入视图,从而消除了对数据增强的需要。为了优化编码器,采用了两个pretext任务:以时间戳级嵌入为目标的时间戳预测任务和以实例级嵌入为重点的实例对比任务

3.1 解纠缠的双级嵌入

transformer在下游时间序列任务中取得了显著的成功,但在时间序列的自监督学习领域,基于cnn和基于rnn的模型通常优于transformer,这表明transformer在时间序列表示学习中的全部潜力尚未得到充分利用。此外,BERT和RoBERTa等模型已被证明在生成高质量的句子嵌入方面取得了成功,这使得Transformer Encoder成为我们框架的合适选择。

我们采用Transformer Encoder作为TimeDRL的主要架构,采用了PatchTST中的Patch概念,将相邻的时间步长聚合到一个基于Patch的token中。该技术大大减少了transformer所需的上下文窗口大小,显著降低了培训成本,并大大增强了培训过程的稳定性。

在BERT和RoBERTa中,[CLS]令牌用于捕获句子级嵌入,这促使我们采用它来提取时间序列域中的实例级嵌入。虽然理论上可以通过池化方法(例如,全局平均池化)从时间戳级嵌入派生实例级嵌入,这种方法会导致各向异性问题。当时间戳级嵌入被限制在嵌入空间中的一个狭窄区域时,就会出现这个问题,从而降低了它们有效捕获各种信息的能力。NLP中的研究表明,与传统的池化方法相比,通过对比学习优化[CLS]令牌可以获得更好的结果。这一发现与我们的实验结果一致。

具体框架:

1)给定一个输入时间序列样本,我们首先应用实例归一化和Patch得到一系列token

2)在这些token的开头添加一个[CLS] token,得到编码器的输入

3)编码器由一个线性token编码层,一个线性位置编码层和一系列自关注块组成

4)得到编码器输出后,将第一个token([CLS]token)对应的嵌入指定为实例级嵌入zi,将后续的嵌入视为时间戳级嵌入zt

3.2 TimeDRL中的时间戳预测任务

时间戳预测任务的目的是在不引入归纳偏差的情况下推导时间戳嵌入。考虑到不同时间序列数据集之间特征的巨大差异,我们将TimeDRL设计为一个通用框架,避免了任何转换不变性的考虑。因此,我们在TimeDRL中引入了非增强的时间戳预测任务,重点研究了在没有数据增强方法的情况下对经过patch的时间序列数据进行重建

给定时间戳级嵌入zt,通过时间戳预测头pθ(没有激活函数的线性层)进行处理以生成预测,预测损失LP计算xpatch与预测输出之间的MSE:

实例级嵌入zi不会从MSE损失中更新,总LP是对两个视图的LP取平均。

3.3 TimeDRL中的实例对比任务

为了捕获整个序列的整体信息,我们开发了一个实例对比任务,通过对比损失来派生实例级嵌入。在对比学习中,需要两个不同的嵌入视图来计算损失。NLP中的SimCSE应用对比任务来改进来自[CLS]令牌的句子级嵌入,利用dropout层来引入变化,而不依赖于任何外部增强方法。

为了与我们避免数据增强的承诺保持一致,我们在编码器内使用dropout层来引入输出嵌入的随机性,通过两次将数据通过编码器,从相同的输入生成两个不同的嵌入视图。对于每个嵌入,我们提取第一个位置作为我们的实例级嵌入。

此外,只使用这种技术无法解决对比学习中的抽样偏差。当随机选择的负样本与正样本相似时,就会发生抽样偏差,这是由于周期模式的存在而在时间序列域中常见的情况。为了缓解这一问题,本文提出的方法结合了一个额外的预测头和一个停止梯度操作,以防止模型崩溃。

使用负余弦相似度计算损失,总LC是对两个视图的LC取平均。

最后,联合训练时间戳预测任务和实例对比任务,并使用λ在两种损失之间进行调整:

4 实验

4.1 下游任务

将数据集划分为三个部分:60%用于训练,20%用于验证,20%用于测试,除非存在预定义的训练-测试分割。

我们使用transformer作为编码器的架构fθ。使用线性层设计了时间戳预测头pθ,使用中间有BatchNorm和ReLU的两层MLP设计了实例对比头pθ。

在时间序列预测任务中,我们将通道独立与补丁结合在一起。该方法将多变量时间序列视为多个单变量序列,由单个模型进行综合处理。对于时间序列分类,我们发现忽略信道无关性会产生更好的结果。

4.1.1 预测

为了评估TimeDRL时间戳级嵌入的有效性,我们对时间序列预测进行了线性评估。这包括使用借口任务对编码器进行预训练,然后冻结编码器权重,并在下游预测任务上附加线性层进行训练。

根据SimTS(实验设置参照TS2Vec)中使用的实验设置(baseline实验结果完全与SimTS文中一致),针对多变量和单变量都进行了预测实验,历史长度L=402。

ETT的所有特征都用于多变量预测,而单变量预测仅使用油温特征。

Exchange包括8个国家从1990年到2016年的每日汇率。对于多变量预测,使用来自所有这些国家的数据,而对于单变量预测,特别关注新加坡。

Weather提供近1600个美国地区4年来的当地气候数据。对于多变量预测,考虑所有特征,而对于单变量预测,我们会特别关注’web bulb’ 特征。

预训练和下游任务使用同一数据集。

4.1.2 分类

为了评估TimeDRL实例级嵌入的有效性,我们使用线性评估方法进行时间序列分类。采用与预测评估类似的方法,我们首先使用自监督学习训练编码器,冻结其权重,然后附加一个线性层用于分类任务的训练。

4.1.3 半监督实验

首先在大型未标记数据集上训练编码器以学习丰富的表示,然后在下游任务头部使用有限的标记数据进行微调,编码器权重在微调期间被调整。为了模拟有限标签数据可用性的情况,我们在数据集中随机保留一部分标签。仅使用标记数据(监督学习)与结合未标记和标记数据(带微调的TimeDRL)的比较结果如图所示。结果表明,将未标记的数据与TimeDRL结合可以显著提高性能,特别是在可用的标记数据很少的情况下。值得注意的是,即使100%的标签可用,TimeDRL预训练阶段的好处也是显而易见的。

4.2 消融实验

1)pretext 任务

时间戳预测任务侧重于将损失专门应用于时间戳级嵌入,而实例对比任务则针对实例级嵌入。我们的实验研究了每个任务对表征学习有效性的影响。

2)数据增强方法

实验了6种特定于时间序列的数据增强方法。

  • 抖动通过加性高斯噪声模拟传感器噪声。

  • 缩放通过将数据与随机标量相乘来调整数据的大小。

  • 旋转通过排列特征的顺序和可能翻转特征值的符号来修改数据集。

  • 排列将数据分割成段,然后随机排列这些段以创建新的时间序列实例。

  • 屏蔽将时间序列数据中的值随机设置为零。

  • 裁剪将删除时间序列实例的左右区域,并用零填充空白以保持相同的序列长度。

对于时间序列,采用掩蔽和裁剪增强的危害相对较小,但它们仍然会导致性能下降。该实验支持了我们最初的假设,即完全避免增强方法对于消除归纳偏置至关重要,从而确保TimeDRL的最佳性能。

3)cls token 的 pool方式

对实例级嵌入的其他3种不同池化策略进行了实验。

  • Last利用最后一个时间戳级嵌入作为实例级表示。

  • GAP使用全局平均池,在时间轴上平均时间戳级嵌入,以聚合实例级嵌入。

  • All 将所有时间戳级嵌入Flatten,以创建单个实例级表示。

4)encoder结构

使用5种不同的模型进行了实验。

  • Transformer Encoder使用屏蔽自注意。这确保了每个时间戳的嵌入只关注前面的时间戳,而不是后面的时间戳。

  • ResNet采用了计算机视觉的著名架构ResNet18,用适合于时间序列数据的一维卷积进行修改。

  • TCN[49]将扩张和残差连接与因果卷积结合起来,专门用于时间序列的自回归预测。

  • LSTM使用长短期内存单元来捕获顺序数据中的依赖项。使用单向LSTM,关注过去和现在的数据,以防止未来的数据泄漏。

  • Bi-LSTM遵循LSTM结构,但包含双向处理,允许模型集成来自过去和未来时间戳的信息。

Transformer Decoder的性能下降,突出了双向自我注意在实现对整个序列的全面理解中的关键作用。同样,当比较LSTM和Bi-LSTM时,后者表现出更高的性能,因为它能够访问过去和未来的信息。

5)停止梯度

为了解决抽样偏差,我们的方法包括一个额外的预测头和一个停止梯度操作。这种不对称设计,一条路径带有额外的预测头,另一条路径带有停止梯度,在防止模型崩溃方面被证明是有效的。

5 总结

  • 分离了时间戳级和实例级嵌入

  • 引入两个优化目标

  • 对patch后的数据进行重建

  • 采用编码器内的dropout层实现不同视图

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

<JavaEE> 网络编程 -- 网络编程和 Socket 套接字

目录 一、网络编程的概念 1)什么是网络编程? 2)网络编程中的基本概念 1> 收发端 2> 请求和响应 3> 客户端和服务端 二、Socket套接字 1)什么是“套接字”? 2)Socket套接字的概念 3&…

ToB还是ToC?工业级与消费级AR眼镜都能干什么?

来源:虹科数字化与AR 虹科分享 | ToB还是ToC?工业级与消费级AR眼镜都能干什么? 原文链接:https://mp.weixin.qq.com/s/lyTASoKm29woIbfcKBtMvQ 欢迎关注虹科,为您提供最新资讯! 随着科技的飞速发展&#…

VLOOKUP中的#N/A错误很常见,这里有详细排除步骤

你的VLOOKUP是否提取了错误的数据,或者你根本无法使其工作?本教程展示了如何快速修复常见的VLOOKUP中的#N/A错误并克服其主要限制。 ​在VLOOKUP公式中,当Excel找不到查找值时,会显示#N/A错误消息(意思是“不可用”&a…

Navicat里MySQL表的创建(详细)

我以Navicat连接MySQL为例,演示表的创建方法。 前提 创建表的语法: create table 表名 ( 字段名1,字段类型, 字段名2,字段类型, ...... 字段名n,字段类型 ); 我计划在test库存放一…

HarmonyOS引导页登陆页以及tabbar的代码说明 home 下拉刷新页代码 5

下拉刷新页 代码说明 这一页第一次运行时很卡&#xff0c;就是你点击修改&#xff0c;要等一会才出来&#xff0c;加一句&#xff0c;修改的字样原来应是修车二字。只能将错就错。 const TopHeight 200; Component export default struct Car {State list: Array<number&…

【数据结构】五、数组与广义表

目录 一、定义 二、计算数组元素地址 三、稀疏矩阵快速转置 稀疏矩阵的表示 稀疏矩阵快速转置 四、广义表 一、定义 我们所熟知的一维、二维数组的元素是原子类型。广义表中的元素除了原子类型还可以是另一个线性表。当然所有的数据元素仍然属于同一类型。 这里的数组可…

Docker容器的日常维护和故障排除

Docker容器已经成为了现代应用程序开发和部署的核心工具之一。然而&#xff0c;为了确保容器环境的稳定性和可靠性&#xff0c;日常维护和故障排除是必不可少的任务。本文将介绍一些关键的Docker容器维护和故障排除技巧&#xff0c;并提供丰富的示例代码&#xff0c;以帮助大家…

Flink 状态管理与容错机制(CheckPoint SavePoint)的关系

一、什么是状态 无状态计算的例子&#xff1a; 例如一个加法算子&#xff0c;第一次输入235那么以后我多次数据23的时候得到的结果都是5。得出的结论就是&#xff0c;相同的输入都会得到相同的结果&#xff0c;与次数无关。 有状态计算的例子&#xff1a; 访问量的统计&#x…

python超实用插件REST Client、autoDocstring、Better Comments

1. autoDocstring 1.1 features 快速生成可以通过制表符浏览的文档字符串片段。在几种不同类型的文档字符串格式之间进行选择。通过pep484类型提示、默认值和变量名称推断参数类型。支持args、kwargs、装饰器、错误和参数类型。 1.2 用法 光标必须位于定义正下方的行上&am…

【数据结构】四、串

目录 一、定义 二、表示与实现 定长顺序存储 堆分配存储 链式存储 三、BF算法 四、KMP算法 1.求next数组 方法一 方法二&#xff08;考试方法&#xff09; 2.KMP算法实现 方法一 方法二 3.nextval 4.时间复杂度 本节最重要的就是KMP算法&#xff0c;其他要求不高…

pip 常用指令 pip config 命令用法介绍

&#x1f4d1;pip 常用命令归类整理 pip config 是一个用于管理本地和全局配置的命令行工具。它允许用户获取和设置所有的 pip 配置值。 命令 pip config 有以下参数 list&#xff1a;列出所有的 pip 配置值。edit&#xff1a;编辑 pip 配置文件。get&#xff1a;获取一个配…

时间是如何定义的

每年365天&#xff0c;每天24小时&#xff0c;每小时60分钟&#xff0c;每分钟60s&#xff0c;这是我们习以为常的时间计量单位&#xff0c;那么在继续往下&#xff0c;1s是多少&#xff1f;几时几刻、几点几分是如何确定的&#xff1f;带着这些问题&#xff0c;展开本文。 1、…

如何在 openKylin 上使用 ONLYOFFICE 桌面编辑器

文章作者&#xff1a;ajun ONLYOFFICE 桌面编辑器是一款基于依据 AGPL v.3 许可进行分发的开源办公套件。使用这款应用&#xff0c;您无需保持网络连接状态即可处理存储在计算机上的文档。 本文章基于中国根操作系统 openKylin 操作系统&#xff0c;使用软件商店快速安装与手…

rtsp视频在使用unity三维融合播放后的修正

1 rtsp 接入 我们使用unity UE 等三维渲染引擎中使用c编写插件来接入rtsp 视频。同时做融合的时候&#xff0c;和背景的三维颜色要一致&#xff0c;这就要使用视频融合修正技术。包括亮度&#xff0c;对比度&#xff0c;饱和度的修正。在单纯颜色上的修正可以简单使用rgb->…

Android 权限申请

在Android中&#xff0c;从Android 6.0&#xff08;API级别23&#xff09;开始&#xff0c;应用在运行时需要动态申请权限。以下是一些步骤来动态申请权限&#xff1a; 在应用的清单文件&#xff08;AndroidManifest.xml&#xff09;中声明需要的权限。例如&#xff0c;如果应…

前端FLV视频直播解决方案

项目背景&#xff1a; 1. 后台给出一个地址&#xff0c;持续不断的推送flv视频流。 2.前端需要接收视频流&#xff0c;并寻找合适的播放插件。 一开始&#xff1a; 其实用的是xgplayer&#xff08;西瓜视频&#xff09;。 官网地址&#xff1a;西瓜播放器 使用的是直播&a…

ardupilot开发 --- 风机不停机巡检 篇

在哪里创建的siyi实例&#xff1f; 如何传递飞控的时间戳给siyi相机&#xff1f; AP_RTC_ENABLED在waf编译时配置为1&#xff1f;&#xff1f; 如何配置&#xff1f; 在lua脚本中如何获取这个时间AP::rtc().get_utc_usec(utc_usec)&#xff1f;&#xff1f;&#xff1f; inclu…

【软件问题】解决 SecoClient 提示:接收返回码超时!

解决 SecoClient 提示&#xff1a;接收返回码超时&#xff01; 1.问题描述2.问题查找3.问题解决 系统&#xff1a;Win10 1.问题描述 这段时间因为不小心得了流感&#xff0c;所以需要请病假&#xff0c;而有些工作还得做不能落下&#xff0c;所以得居家办公&#xff0c;因为我…

【深入解析spring cloud gateway】12 gateway参数调优与分析

本节主要对网关主要的一些参数做一些解释说明&#xff0c;并用压测工具测试一下网关的接口&#xff0c;通过压测来验证参数配置是否合理 一、连接池参数 参数示例 spring:application:name: gatewaycloud:gateway:# http连接设置httpclient:# 全局的响应超时时间&#xff0c…

大语言模型(LLM)与 Jupyter 连接起来了!

现在&#xff0c;大语言模型&#xff08;LLM&#xff09;与 Jupyter 连接起来了&#xff01; 这主要归功于一个名叫 Jupyter AI 的项目&#xff0c;它是官方支持的 Project Jupyter 子项目。目前该项目已经完全开源&#xff0c;其连接的模型主要来自 AI21、Anthropic、AWS、Co…