时间序列中的无监督表示学习

自监督学习中,有一个常用的方法是对比学习;

2.  时间序列的表示学习

1.1 采用对比学习的方式

Time-series representation learning via temporal and contextual contrasting(IJCAI’21)

本文采用对比学习的方式进行时间序列表示学习。首先对于同一个时间序列,使用strong和weak两种数据增强方法生成原始序列的两个view。

Strong Augmentation指的是将原始序列划分成多个片段后打乱顺序,再加入一些随机扰动;

Weak Augmentation指的是对原始序列进行缩放或平移。

在这里插入图片描述

接下来,将strong和weak两个增强的序列输入到一个卷积时序网络中,得到每个序列在每个时刻的表示。文中使用了Temporal Contrasting和Contextual Contrasting两种对比学习方式。

Temporal Contrasting指的是用一种view的context预测另一种view在未来时刻的表示,目标是让该表示和另一种view对应的真实表示更接近,这里使用了Transformer作为时序预测的主体模型,公式如下,其中c表示strong view的Transformer输出,Wk是一个映射函数,用于将c映射到对未来的预测,z是weak view未来时刻的表示:
在这里插入图片描述

Contextual Contrasting则是序列整体的对比学习,拉近相同序列生成的两个view的距离,让不同序列生成的view距离更远,公式如下,这里和图像对比学习的方式类似:

在这里插入图片描述

1.2 采用无监督表示学习

TS2Vec: Towards Universal Representation of Time Series(AAAI’22)

TS2Vec核心思路也是无监督表示学习,通过数据增强的方式构造正样本对,通过对比学习的优化目标让正样本对之间距离,负样本之间距离远。本文的核心点主要在两个方面,第一个是针对时间序列特点的正样本对构造和对比学习优化目标的设计,第二个是结合时间序列特点提出的层次对比学习。

对于正样本对构造方法,本文提出了适合时间序列的正样本对构造方法:Contextual Consistency。Contextual Consistency的核心思路是,两个不同增强视图的时间序列,在相同时间步的表示距离更接近。文中提出两种构造Contextual Consistency正样本对的方法。第一种是Timestamp Masking,在经过全连接后,随机mask一些时间步的向量表示,再通过CNN提取每个时间步的表示。第二种是Random Cropping,选取有公共部分的两个子序列互为正样本对。这两种方法都是让相同时间步的向量表示更近,如上图所示。

在这里插入图片描述
TS2Vec的另一个核心点是层次对比学习。时间序列和图像、自然语言的一个重要差异在于,通过不同频率的聚合,可以得到不同粒度的时间序列。例如,天粒度的时间序列,按周聚合可以得到周粒度的序列,按照月聚合可以得到月粒度的序列。为了将时间序列这种层次性融入对比学习中,TS2Vec提出了层次对比学习,算法流程如下。

对于两个互为正样本对的时间序列,最开始通过CNN生成每个时间步向量表示,然后循环使用maxpooling在时间维度上进行聚合,文中使用的聚合窗口为2。每次聚合后,都计算对应时间步聚合向量的距离,让相同时间步距离近。聚合的粒度不断变粗,最终聚合成整个时间序列粒度,逐渐实现instance-level的表示学习。

1.3 多元时间序列表示

A transformer-based framework for multivariate time series representation learning(KDD’22)

这篇文章借鉴了预训练语言模型Transformer的思路,希望能够在多元时间序列上通过无监督的方法,借助Transformer模型结构,学习良好的多元时间序列表示。本文重点在于针对多元时间序列设计的无监督预训练任务。如下图右侧,对于输入的多元时间序列,会mask掉一定比例的子序列(不能太短),并且每个变量分别mask,而不是mask掉同一段时间的所有变量。预训练的优化目标为还原整个多元时间序列。通过这种方式,让模型在预测被mask掉的部分时,既能考虑前面、后面的序列,也能考虑同一时间段没有被mask的序列。

在这里插入图片描述

下图展示了无监督预训练时间序列模型对时间序列预测任务带来的效果提升。左侧的图表示,不同有label数据量下,是否使用无监督预训练的RMSE效果对比。可以看到,无论有label数据量有多少,增加无监督预训练都可以提升预测效果。右侧图表示使用的无监督预训练数据量越大,最终的时间序列预测拟合效果越好。

在这里插入图片描述

1.4 时序领域采样

本文提出的方法在正负样本的选择上和损失函数的设计上相比上一篇文章有一定区别。首先是正负样本的选择,对于一个以时刻t为中心的时间序列,文中采用一个高斯分布来划定其正样本的采样范围。高斯分布以t为中心,另一个参数是时间窗口的范围。对于时间窗口范围的选择,文中采用了ADF检验的方法选择最优的窗口跨度。如果时间窗口范围过长,可能导致采样的正样本和原样本不相关的情况;如果时间窗口过小,会导致采样的正样本和原样本重叠部分太多。ADF检验可以检测出时间序列在保持稳定的时间窗口,以此选择最合适的采样范围。

在这里插入图片描述

在损失函数方面,文中主要解决的是伪负样本的问题。如果将上面选定的窗口外的样本都视为负样本,很有可能会出现伪负样本的情况,即本来是和原样本相关的,但因为距离原样本比较远而被误认为是负样本。例如时间序列是以年为周期的,时间窗口选择的是1个月,可能会把去年同期的序列认为是负样本。这会影响模型训练,使模型收敛困难。为了解决这个问题,本文将窗口外的样本不视为负样本,而是视为没有无label样本。在损失函数中,给每个样本设定一个权重,这个权重表示该样本为正样本的概率。这种方法也被称为Positive-Unlabeled (PU) learning。最终的损失函数可以表示为如下形式:

在这里插入图片描述

1.5 多变量时间序列

本文的时间序列表示学习方法思路来源于经典的词向量模型CBOW。CBOW中的假设是,一个单词的上下文表示应该和该单词的表示比较近,同时和其他随机采样的单词表示比较远。本文将这种思路应用到时间序列表示学习中,首先需要构造CBOW中的上下文(context)和随机负样本,构造方法如下图所示。首先选择一个时间序列xref,以及xref中的一个子序列xpos。,xref可以看成是xpos的context。同时,随机从其他时间序列,或者当前时间序列的其他时间片段中采样多个负样本xneg。这样就可以构造类似CBOW的损失函数了,让xref和xpos离得近,同时让xref和其他负样本xneg距离远。

在这里插入图片描述

在模型结构上,本文采用了多层空洞卷积的结构,这部分模型结构在之前的文章中有过详细介绍,感兴趣的同学可以参考:12篇顶会论文,深度学习时间序列预测经典方案汇总。

在这里插入图片描述

2. 无监督的预训练

Self-Supervised Contrastive Pre-Training For Time Series via Time-Frequency Consistency

先验性假设,时频一致性

无监督预训练的核心是将先验引入模型学习强泛化性的参数,本文引入的先验是同一个时间序列在频域的表示和在时域的表示应该相近,以此为目标利用对比学习进行预训练。

2.1 动机

无监督预训练在时间序列中的应用越来越多,但是和NLP、CV等领域不同的是,时间序列中的预训练没有一个特别合适的,在所有数据上都一致的先验假设。例如在NLP中,一个先验假设是不管是什么领域的文本,或者什么语种的文本,都遵循相同的语法规律。但是在时间序列中,不同数据集的频率、周期性、平稳性差异都很大。以往的预训练方法现在一些数据集pretrain再在目标数据集finetune。如果预训练的数据集和finetune数据集的时间序列相关特征差异很大,就会出现迁移效果不好的问题。

为了解决这个问题,本文找到了一种不论在什么样的时间序列数据集中都存在的规律,那就是一个时间序列的频域表示和时域表示应该相似。在时间序列中,时域和频域就是同一个时间序列的两种表示,因此如果存在一个时域频域共享的隐空间,二者的表示应该是相同的,在任何时间序列数据中都应该有相同的规律。

基于上述思考,本文提出了Time-Frequency Consistency (TF-C)的核心架构,以对比学习为基础,让时域和频域的序列表示尽可能接近。

2.2 基础模型架构

基于上述思路,本文构建的整体模型结构如下图。首先利用多种时间序列数据增强手段,生成每个时间序列的不同增强版本。然后将时间序列输入到Time Encoder和Frequency Encoder,分别得到时间序列在时域和频域的表示。损失函数包括时域对比学习loss、频域对比学习loss、时域和频域的表式对齐loss。

在这里插入图片描述

在时域上,使用的数据增强手段包括jittering、scaling、time-shifts、neighborhood segments等时间序列对比学习中的经典操作(对于时间序列数据增强,后续会出一个单独的文章系统性介绍)。经过Time Encoder后,让一个时间序列和其增强的结果表示相近,和其他时间序列远离:

在频域上,本文是首次研究了如何进行频域中的时间序列数据增强。文中通过随机抹除或增加frequency components实现频域上的数据增强。同时为了避免频域的绕道对原始序列噪声大的变化,导致增强后的序列和原始序列不相似,会对增删的components和增删幅度做限制。对于删除操作,会随机选择不超过E个频率进行删除;对于增加操作,会选择那些振幅小于一定阈值的频率,并提升其振幅。得到频域数据增强的结果后,使用Frequency Encoder得到频域表示,并利用和时域类似的对比学习进行学习。

2.3 时域频域一致性

上述的基础模型结构只是分别在时域和频域内利用对比学习拉近表示,还没有引入时域和频域表示的对齐。为了实现时域和频域的一致性,本文设计了一种一致性loss拉近同一个样本在时域和频域的表示。

具体的损失函数如下,主要借鉴了triplet loss的思想。其中STF是同一个时间序列经过时域Encoder和频域Encoder生成表示的距离,其他带波浪线上标的,表示使用该样本的某种增强样本得到的序列。这里的假设是,一个样本的时域编码和频域编码应该更接近,离其增强后样本的时域编码或频域编码更远。

在这里插入图片描述

最终模型通过上述3个loss联合进行预训练。

reference

ref1

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
时间序列预测方面,深度学习模型已经取得了很多成功的应用。以下是一些常用的深度学习模型用于时间序列预测的示例: 1. 循环神经网络(Recurrent Neural Networks, RNN):RNN是一类经典的序列模型,特别适用于处理具有时间依赖性的序列数据。其最常见的是长短期记忆网络(Long Short-Term Memory, LSTM)和门控循环单元(Gated Recurrent Unit, GRU)。 2. 卷积神经网络(Convolutional Neural Networks, CNN):尽管CNN主要用于图像处理,但在一些时间序列预测任务也能发挥作用。例如,可以使用1D卷积层来提取时间序列的局部模式。 3. 自编码器(Autoencoders):自编码器是一种无监督学习模型,可以用于时间序列数据的特征提取和降维。通过训练自编码器来重构输入数据,可以学习时间序列数据的有用特征。 4. 注意力模型(Attention Models):注意力机制可以帮助模型更好地关注序列的重要部分。在时间序列预测,使用注意力机制可以使模型更加关注关键时间点或重要的序列部分。 5. 深度神经网络(Deep Neural Networks, DNN):除了传统的RNN和CNN,也可以使用深度前馈神经网络进行时间序列预测。这种模型通常需要将时间序列数据转换为固定长度的特征表示。 6. Transformer模型:Transformer最初用于自然语言处理任务,但也适用于时间序列预测。它通过自注意力机制和多头注意力机制来处理序列的长程依赖关系。 这些模型仅仅是深度学习用于时间序列预测的一些例子,实际上还有很多其他模型和变体可以尝试。选择合适的模型取决于数据的特性、任务的要求和实际应用场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值