TS2Vec: Towards Universal Representation of Time Series 论文翻译

重点:

①有的模型只能进行instance级别的representation,本文是任意层级

②选取positive pair 的原则是:模型根据不同上下文对于同一个时间戳的representation应当一致。

③随机剪裁层保证了模型不会只学到绝对位置信息而忽视了上下文信息。

疑问

①本模型在ETTH2数据集上的表现既有Informer能捕捉长期信号的优点,也有TCN能捕捉周期性信号的优点。【?其他数据集上会怎样呢】

②算法里把各层的损失是直接相加的,能否乘上参数再相加

摘要

本文提出的TS2Vec,是一种在任意语义层级上学习时间序列表达的的普遍架构。TS2Vec在增强的上下文视图上进行分层的对比学习,这对每一个时间戳都增强了鲁棒的上下文表达。

为了获得时间序列的任意一个子序列的表达,可以在对应的时间戳上施加一个简单的回归。

介绍

a universal contrastive learning framework called TS2Vec

学习对于时间序列的普遍表达(universal representations)很重要,但很难。之前的许多工作专注于学习实例级别(instance-level)的表达。最近的工作引入了对比损失(contrastive loss)的策略来学习时间序列的固有结构。

已有模型的缺陷

  1. 实例级别的表达不够精确,无法胜任一些需要细粒度分析的工作。比如有时候需要针对特定的时间戳或者子序列预测目标。

  2. 过去很少有模型能够处理不同间隔的多尺度信息。

    1. TNC以固定的长度区别不同的段(segment)。

    2. T-Loss采用随机策略从原来的时间序列中选取子序列作为正样本。

      过去的模型不能获取尺度不变信息。(不同尺度的特征可能提供不同层级的语义信息,并且提升泛化能力)

  3. 过去许多模型是受CV或者NLP启发得到的,但是时间序列预测领域的许多问题没有图像或者自然语言的性质。这时,归纳偏置就未必成立了。

    1. 变幻不变性未必成立(transformation invariance)
    2. 剪裁不变性未必成立(cropping-invariance)。序列信号的分布和语义可能会随时间变化,因而时间序列的子序列的分布可能与原序列相差甚远。

本模型的特点

  • 可以在任意语义层级上学习时间序列的表达
  • 在实例和时间维度上分层区分正负样本
  • 任意一个子序列的总体表达可以由针对对应时间戳的最大值池化得到。
  • 模型可以以多种分辨率捕捉时间数据的语义信息,并且得到任何间隔的细粒度表达
  • 模型中比较的目标是基于增强上下文视图的。因而同一个子序列在两种不同的增强上下文视图中的表达应当一致。通过这种方式,我们在没有引入奇怪的归纳偏置的情况下就得到了对于每个子序列的鲁棒的上下文表达。

本文贡献

  • TS2Vec是一种统一的框架,能够在不同的语义层级上学习到任意一个子序列的上下文表达。它具有弹性,而且是一种广泛的表示方法。

  • 在对比性学习框架里,提出了两个新的设计。

    • 在实例级别和时间维度上都采用了分层对比的方法,来捕捉不同尺度的上下文信息。

    • 提出了positive pair selection的上下文一致性。这更适合时间序列的特征(多分布,多尺度)

      广泛的分析证明了本模型对于有缺失值的时间序列数据具有鲁棒性。分层对比和上下文一致性的有效性得到了消融实验的检验。

  • TS2Vec在时间序列预测的三个分支上超过了当前最佳模型:分类,预测,异常检测。

方法

问题定义

给出时间序列X={x1,x2,x3,...xN},它们是N个实例。目标是学习到一个函数 ,这个函数把每个xi映射到riri是对xi的最佳描述。

xi 的维度是T × F。T是序列长度;F是特征维度。ri = {ri1,ri2,...riT} 。其中每个rit都是K维的,它是针对每个时间戳t的。K是表达向量的维度

模型结构

​ 对于xi,随机选取它的两个子序列(有重叠部分)。期望对于重叠部分获得一致的上下文表达。原始数据被投入编码器,编码器通过两方面进行优化:时间对比损失(temporal contrastive loss ),实例对比损失(instance-wise contrastive loss)。在当前的分层框架里,总损失是多种尺度损失之和。

​ 编码器fθ包含三部分

  • 输入工程层(input projection layer)

    全连接层。把各个xit(F维向量)映射到更高维度的zit(称作“潜在向量”)

  • 时间戳掩码层(timestamp masking module)

    随机选择时间戳,对上一步得到的zi进行掩码,目的是获得增强上下文视图。

    【注】对潜在向量进行掩码,而不是直接对输入进行掩码。这是因为时间序列的值的取值范围未必有界,而且不可能对于原始数据找到一个特殊的token。【见附录B】

  • 扩张卷积层( dilated CNN module)

    有十个残差块。本层的目的是对于每个时间戳得到上下文表达。

    每个残差块拥有两个卷积层,并带有一个扩张参数(第l个块是2^l)。这种结构导致了不同层级拥有不同的感受野。

上下文不变性

对比学习中的正样本对(positive pairs)的建立至关重要。

过去的论文采取了以下策略:

  • 一个时间序列的表达应当与它被选取出来的子序列尽量近【?】
  • 通过选择相邻的部分作为正样本来增强表示的局部平滑性【?】
  • 通过不同的变幻增强输入序列,比如放缩(scaling),排列(permutation)。期望模型能够学到变幻不变性的表达。

上述策略是基于对数据分布的比较强的假设作出的,可能不适应时间序列。

例如,当出现序列中存在水平移动时,子序列不变性的性质变得难以利用。

当序列中存在反常信息时,时间不变性反而可能引入错误的正样本对

上面两张图中,绿色和黄色部分显然具有不同的模式,但是过去的策略会把它们考虑为相似的样本对。【?第一张为何黄色比绿色宽】

所以我们提出了上下文不变性(contextual consistency)。这种策略会把同一个时间戳在两个不同的增强上下文中的表达作为正样本对。通过对原始数据进行时间戳掩码(是先全连接,后掩码)和随机剪裁,就能得到一个上下文。

我们的做法有双重优点:

  • 掩码和剪裁没有改变时间序列的量级( magnitude)【?什么意思】
  • 强制让每个时间戳在不同的上下文中重建自身,这提高了学习到的特征的鲁棒性

时间戳掩码

对一个实例的时间戳进行随机掩码,得到新的上下文视图。具体的来说,是对 输入工程层(input projection layer)输出的向量zi = {zit}沿着时间轴进行掩码,过程中会用到二元掩码向量m ∈ {0, 1}T 。 掩码位置的选取是独立的,服从p=0.5的伯努利分布。在编码器的每个前向传播中,掩码都是随机选择的。

随机剪裁

对于每个T×F的xi,要随机从上面选取两个部分重叠的部分[a1,b1] , [a2,b2] 。对于两个上下文视图,重叠部分的上下文表达应当是一致的。

时间戳掩码和随机剪裁只在训练阶段发生

分层对比

分层对比损失将会强迫编码器学习到不同尺度的表达。以下是算法:

基于时间戳级的表达,沿时间轴对学到的表达进行最大值池化,并且递归的计算等式3。特殊地,在最高语义级别进行的对比让模型可以学到实例级别的表达。

​ 利用分层对比方法得到的表达远比过去的模型给出的结果复杂。例如T-Loss只在实例层级进行了逐实例对比。TS-TCC只在时间戳级进行了逐实例对比;TNC在某个特定的粒度追求时间局部平滑性。它们都没有像本模型一样封装不同层级的表达。

​ 为了捕捉时间序列的上下文表达,我们既利用了逐实例对比损失,也利用了时间维度上的对比损失,从而把时间序列分布进行编码。在分层比对模型中,损失函数被应用到所有粒度级别。

时间对比损失Temporal Contrastive Loss

为了学到随时间变化的不同表达,本模型把相同时间戳不同视图得到的表达作为正样本对,把不同时间戳对应的表达作为负样本对。

i是时间序列样本的下标,t是时间戳。ri,t 和r'it分别表示相同时间戳不同视图得到的表达(时间戳为t)。则第i个时间序列在时间戳t处的损失为![image-20211031230114083]

Ω 是重叠区域的时间戳集合。

逐实例对比损失(Instance-wise Contrastive Loss)

公式如下(i与t的含义同上)

B表示batch大小。把同一个batch里的其他时间序列在t时刻的表达作为负样本。

上面两种对损失的计算是互补的。例如,给出一组来自不同用户的电力消耗数据,实例对比可能会学到用户相关的特征,而时间对比可用于挖掘随时间的动态趋势。所以总损失定义为:

实验

评估TS2Vec在时序分类、预测和异常检测上学到的表达。

时序分类(Time Series Classifification)

每个实例对应一个标签。因此需要实例层级的表达,这可以通过对所有时间戳进行最大值池化得到。

流程:把一个时间序列采用不同的方式进行特征表达,然后用某种模型进行分类。发现用TES2Vec进行特征表达时,结果最好。

而且TES2Vec训练时间也更短。

时序预测(Time Series Forecasting)

输入T个观测到的数据,预测接下来将要出现的H个数据。

使用最后一个时间戳的表达rt来预测将来的观测。具体来说,利用L2规范惩罚( L2 norm penalty)训练一个线性回归模型,它直接把rt作为输入,预测将来的所有x的值。

序列的表达只需要学习一次,就能被反复的用到不同的任务中去(只需调整线性层),这印证了本模型的普遍价值

在ETTH2数据集上,Informer能够捕捉长期趋势,但无法捕捉到周期性的趋势;TCN恰好相反;TS2Vec两个都能捕捉到。

TS2Vec在训练和预测阶段都比Informer要快,这是因为不管要预测多久之后的数据,也不管预测将来多长的数据,特征表达部分的模型只需训练一次。

时序异常检测

输入一段时间序列{x1, x2, ..., xt}。判断最后那个xt是否是异常的。在学到的表达上,异常点会与正常点有很大不同。另外,TS2Vec鼓励对于一个实例在相同时间戳上的上下文不变性。

把是否掩码得到的表达的差别作为异常等级。具体的来说,在预测阶段,训练好的TS2Vec对于每个输入前向传播两次:第一次只把xt掩码,第二次不掩码。利用L1距离【?】来计算差别(不正常的程度)。

为了避免漂移( drifting)【?】,利用前Z个点的局部平均来调整:

调整后的不正常程度计算公式为:

判断一个时间戳是否不正常的标准是:

µσ分别是历史数据的均值和标准差【?】。β是超参数。

分析

消融实验

对缺失数据的鲁棒性

本模型具有很高的鲁棒性。理论分析和实验验证都证明,这很大程度上归功于分层对比和时间戳掩码的策略。

可视化解释

第一行是各种数据的原始描述

第二行是模型给出的它们的表达。

附录B 模型结构细节

输入工程层

输入工程层是对原始数据进行线性变幻,会把它映射到更高的维度

时间戳掩码层务必要放到输入工程层后面,这是因为

时间序列的值域可能是无限的,对于原始数据不可能找到一个特殊的token。

例如,我们可能用0进行掩码,但是原来的输入数据可能本身就是好多0,或者接近0。

但是如果放到输入工程层后面,根据引理:

能保证得到的数据里面没有0,这样就能区别掩码位置和非掩码位置了。【?训练过程中,W和b会发生变化,还能保证这条性质吗】

随机剪裁

对于每个时间序列输入
模型随机剪裁出两段重叠的子序列。随机剪裁不仅是对时间戳掩码的补充,而且是学到位置未知表达的关键环节。如果没有随机剪裁,可能会导致representation collapse【?】。这个现象可能是隐式位置对比( implicit positional contrasting)所致。如果让位置信息被时间对比模型知道了,那么模型就会更倾向于利用绝对位置信息而不是上下文信息来减少时间对比损失。例如,模型可以独热的输出其位置过去的人们已经证明了,卷积层可以把位置信息隐式的编码进去。随机剪裁层保证模型不可能推断出某个时间戳在重叠区域中的位置

posted @ 2021-11-01 18:27  邢云鹏19231177  阅读(1774)  评论(0编辑  收藏  举报