TS2Vec:TowardsUniversalReprentationofTimeSe。。。
重点:
①有的模型只能进⾏instance级别的reprentation,本⽂是任意层级
②选取positive pair 的原则是:模型根据不同上下⽂对于同⼀个时间戳的reprentation应当⼀致。
③随机剪裁层保证了模型不会只学到绝对位置信息⽽忽视了上下⽂信息。
疑问
①本模型在ETTH2数据集上的表现既有Informer能捕捉长期信号的优点,也有TCN能捕捉周期性信号的优点。【?其他数据集上会怎样呢】
②算法⾥把各层的损失是直接相加的,能否乘上参数再相加
摘要
本⽂提出的TS2Vec,是⼀种在任意语义层级上学习时间序列表达的的普遍架构。TS2Vec在增强的上下⽂视图上进⾏分层的对⽐学习,这对每⼀个时间戳都增强了鲁棒的上下⽂表达。
为了获得时间序列的任意⼀个⼦序列的表达,可以在对应的时间戳上施加⼀个简单的回归。
介绍
a universal contrastive learning framework called TS2Vec
学习对于时间序列的普遍表达(universal reprentations)很重要,但很难。之前的许多⼯作专注于学习实例级别(instance-level)的表达。最近的⼯作引⼊了对⽐损失(contrastive loss)的策略来学习时间序列的固有结构。
3角函数已有模型的缺陷
实例级别的表达不够精确,⽆法胜任⼀些需要细粒度分析的⼯作。⽐如有时候需要针对特定的时间戳或者⼦序列预测⽬标。
过去很少有模型能够处理不同间隔的多尺度信息。
TNC以固定的长度区别不同的段(gment)。
蜗牛的触角
T-Loss采⽤随机策略从原来的时间序列中选取⼦序列作为正样本。
过去的模型不能获取尺度不变信息。(不同尺度的特征可能提供不同层级的语义信息,并且提升泛化能⼒)
房屋建筑承包合同过去许多模型是受CV或者NLP启发得到的,但是时间序列预测领域的许多问题没有图像或者⾃然语⾔的性质。这时,归纳偏置就未必成⽴了。
变幻不变性未必成⽴(transformation invariance)
剪裁不变性未必成⽴(cropping-invariance)。序列信号的分布和语义可能会随时间变化,因⽽时间序列的⼦序列的分布可能与原序列相差甚远。
本模型的特点
可以在任意语义层级上学习时间序列的表达
在实例和时间维度上分层区分正负样本
记忆规律
任意⼀个⼦序列的总体表达可以由针对对应时间戳的最⼤值池化得到。
模型可以以多种分辨率捕捉时间数据的语义信息,并且得到任何间隔的细粒度表达
壁纸火影模型中⽐较的⽬标是基于增强上下⽂视图的。因⽽同⼀个⼦序列在两种不同的增强上下⽂视图中的表达应当⼀致。通过这种⽅式,我们在没有引⼊奇怪的归纳偏置的情况下就得到了对于每个⼦序列的鲁棒的上下⽂表达。
本⽂贡献
TS2Vec是⼀种统⼀的框架,能够在不同的语义层级上学习到任意⼀个⼦序列的上下⽂表达。它具有弹性,⽽且是⼀种⼴泛的表⽰⽅法。
在对⽐性学习框架⾥,提出了两个新的设计。
在实例级别和时间维度上都采⽤了分层对⽐的⽅法,来捕捉不同尺度的上下⽂信息。
职称评审工作总结提出了positive pair lection的上下⽂⼀致性。这更适合时间序列的特征(多分布,多尺度)
⼴泛的分析证明了本模型对于有缺失值的时间序列数据具有鲁棒性。分层对⽐和上下⽂⼀致性的有效性得到了消融实验的检验。
TS2Vec在时间序列预测的三个分⽀上超过了当前最佳模型:分类,预测,异常检测。降落伞是谁发明的
⽅法
问题定义
给出时间序列X={x1,x2,x3,...xN},它们是N个实例。⽬标是学习到⼀个函数fθ ,这个函数把每个xi映射到ri。ri是对xi的最佳描述。
xi 的维度是T × F。T是序列长度;F是特征维度。ri = {ri1,ri2,...riT} 。其中每个rit都是K维的,它是针对每个时间戳t的。K是表达向量的维度
模型结构
dropouts对于xi,随机选取它的两个⼦序列(有重叠部分)。期望对于重叠部分获得⼀致的上下⽂表达。原始数据被投⼊编码器,编码器通过两⽅⾯进⾏优化:时间对⽐损失(temporal contrastive loss ),实例对⽐损失(instance-wi contrastive loss)。在当前的分层框架⾥,总损失是多种尺度损失之和。
编码器fθ包含三部分
输⼊⼯程层(input projec t ion layer)
全连接层。把各个xit(F维向量)映射到更⾼维度的zit(称作“潜在向量”)
时间戳掩码层(timestamp masking module)
随机选择时间戳,对上⼀步得到的zi进⾏掩码,⽬的是获得增强上下⽂视图。
【注】对潜在向量进⾏掩码,⽽不是直接对输⼊进⾏掩码。这是因为时间序列的值的取值范围未必有界,⽽且不可能对于原始数据找到⼀个特殊的token。【见附录B】扩张卷积层( dilated CNN module)
有⼗个残差块。本层的⽬的是对于每个时间戳得到上下⽂表达。
每个残差块拥有两个卷积层,并带有⼀个扩张参数(第l个块是2^l)。这种结构导致了不同层级拥有不同的感受野。
上下⽂不变性
对⽐学习中的正样本对(positive pairs)的建⽴⾄关重要。
过去的论⽂采取了以下策略:
⼀个时间序列的表达应当与它被选取出来的⼦序列尽量近【?】
通过选择相邻的部分作为正样本来增强表⽰的局部平滑性【?】
通过不同的变幻增强输⼊序列,⽐如放缩(scaling),排列(permutation)。期望模型能够学到变幻不变性的表达。
上述策略是基于对数据分布的⽐较强的假设作出的,可能不适应时间序列。
例如,当出现序列中存在⽔平移动时,⼦序列不变性的性质变得难以利⽤。
当序列中存在反常信息时,时间不变性反⽽可能引⼊错误的正样本对
上⾯两张图中,绿⾊和黄⾊部分显然具有不同的模式,但是过去的策略会把它们考虑为相似的样本对。【?第⼀张为何黄⾊⽐绿⾊宽】
所以我们提出了上下⽂不变性(contextual consistency)。这种策略会把同⼀个时间戳在两个不同的增强上下⽂中的表达作为正样本对。通过对原始数据进⾏时间戳掩码(是先全连接,后掩码)和随机剪裁,就能得到⼀个上下⽂。
我们的做法有双重优点:
掩码和剪裁没有改变时间序列的量级( magnitude)【?什么意思】
强制让每个时间戳在不同的上下⽂中重建⾃⾝,这提⾼了学习到的特征的鲁棒性
时间戳掩码
对⼀个实例的时间戳进⾏随机掩码,得到新的上下⽂视图。具体的来说,是对 输⼊⼯程层(input projec t ion 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是时间戳。r i,t 和r'it分别表⽰相同时间戳不同视图得到的表达(时间戳为t)。则第i个时间序列在时间戳t处的损失为![image-20211031230114083]
Ω 是重叠区域的时间戳集合。
逐实例对⽐损失(Instance-wi 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会发⽣变化,还能保证这条性质吗】
随机剪裁
对于每个时间序列输⼊
模型随机剪裁出两段重叠的⼦序列。随机剪裁不仅是对时间戳掩码的补充,⽽且是学到位置未知表达的关键环节。如果没有随机剪裁,可能会导致reprentation collap【?】。这个现象可能是隐式位置对⽐( implicit positional contrasting)所致。如果让位置信息被时间对⽐模型知道了,那么模型就会更倾向于利⽤绝对位置信息⽽不是上下⽂信息来减少时间对⽐损失。例如,模型可以独热的输出其位置过去的⼈们已经证明了,卷积层可以把位置信息隐式的编码进去。随机剪裁层保证模型不可能推断出某个时间戳在重叠区域中的位置。