SELF-SUPERVISED CONTRASTIVE LEARNING FOR LONG-TERM FORECASTING(ICLR2024)
Junwoo Park, Daehoon Gwak, Jaegul Choo, Edward ChoiKim Jaechul Graduate School of AI, KAIST, Daejeon, Republic of Korea
SELF-SUPERVISED CONTRASTIVE LEARNING FOR LONG-TERM FORECASTING
Junwoo Park, Daehoon Gwak, Jaegul Choo, Edward Choi
Kim Jaechul Graduate School of AI, KAIST, Daejeon, Republic of Korea
对于这篇论文,目前还有几个地方没有特别明白。它整体的思路还是分季节和趋势。(季节对应模型中的短期趋势,趋势对应的是模型中的长期趋势)。对于趋势和季节的提取,在AutoConNet模型中,数据标准化有四种方式,根据不同的数据归一化方式,短期和长期的获取方式不一样。**在数据归一化时,会分解成长期(趋势)和短期(季节),这里 使用的是移动平均分解,卷积核为固定的大小25,**在嵌入一些位置信息,让数据的信息更加丰富。处理成方便处理的维度。之后使用了空洞卷积进行特征提取(就是模型图中的Encoder部分),在空洞卷积后,会得到细节特征。对细节特征信息进行处理。这种目的方便捕捉长期依赖关系。
repr = self.repr_dropout(self.feature_extractor(enc_out)).transpose(1, 2) # B x Co x T
if onlyrepr:
return None, repr
len_out = F.gelu(repr.transpose(1, 2)) # B x O x T
len_out = self.length_mlp(len_out).transpose(1, 2) # (B, I, C) > (B, O, C)
trend_outs = []
for trend_decom, ch_mlp in zip(self.trend_decoms, self.ch_mlps):
_, dec_out = trend_decom(len_out)
dec_out = F.gelu(dec_out)
# 将经过激活函数处理的 dec_out 送入线性层,映射到目标输出的维度。
dec_out = ch_mlp(dec_out) # (B, I, D) > (B, I, C)
_, trend_out = trend_decom(dec_out)
trend_outs.append(trend_out)
# 功能: 将列表 trend_outs 中的多个张量沿着最后一个维度(dim=-1)进行堆叠。
# 输出形状: 假设 trend_outs 中的每个张量形状为 (B, T) (其中 B 是批次大小,T 是时间步长),那么堆叠后的张量形状将变为 (B, T, N),其中 N 是 trend_outs 中张量的数量。
trend_outs = torch.stack(trend_outs, dim=-1).sum(dim=-1)
这个地方的代码没有太明白。repr卷积(编码)处理后的数据,先进行一下gelu函数进行激活一下。之后调用
len_out = self.length_mlp(len_out).transpose(1, 2) # (B, I, C) > (B, O, C)
把数据从输入长度 映射到预测长度上。那这种的话,和短期的线性有什么区别呢?
难道是先线性预测一下趋势,之后再处理一下?(我个人理解是这样)。
长期的部分线性预测完之后,再用for循环进行多尺度的趋势分解。
可能就是多层次特征抽取:
第一层(input_decom)的分解提供了对输入数据的整体视角,可以捕捉广泛的趋势和季节性特征。
第二层(trend_decom)则是更深入的分析,专注于特定时间尺度的趋势,能够从每个尺度的特征中提取更具细节的趋势成分。
提高模型灵活性:
通过先进行初步分解,再通过多个专门的 trend_decom 模块进行深度分析,模型能够更灵活地适应各种时间序列数据,捕捉不同时间尺度下的动态变化。
之后再用,ch_mlp 对从 trend_decom 得到的特征进行进一步处理,将其转换为模型所需的输出格式。这使得模型能够在处理后的特征上进行预测,使预测的精确度更高。
论文内容:
介绍:
时间序列数据由于其潜在的无限长度随时间累积而呈现出独特的挑战,使得一次处理它们是不可行的(Ding等人,2015年; Hyndman等人,2015; Rakthanmanon等人,2013年)的报告。与诸如自然语言句子的其它序列数据相比,这需要不同的策略。为了解决这一问题,滑动窗口方法(Kohzadi等人,1996)通常用于将单个时间序列数据划分成较短的子序列(即,窗口)通常,在时间序列预测中,滑动窗口方法使模型不仅能够处理长时间序列,而且还能够捕获窗口内过去和未来序列之间的局部相关性,从而得到准确的短期预测。
近来,随着工业中对预测更遥远的未来的需求的增加(Ahmad等人,2014年; Vlahogianni等人,2014年; Zhou等人,2021年),各种研究逐渐加大了窗口长度。基于变换器的模型已经通过注意机制的改进降低了使用长窗口的计算成本(Zhou等人,2021年; Wu等人,2021; Liu等人,第2022条a款)。此外,基于CNN的模型(Bai等人,2018年; Yue等人,2022)已经在卷积运算中应用了膨胀(dilation),以学习更远的依赖性,同时受益于它们的高效计算成本。尽管这些模型取得了显著的进展,但它们在长期预测中的有效性仍然不确定。由于扩展的窗口仍然比总的时间序列长度短,所以这些模型可能无法学习比窗口长度更长的时间模式。
本文首先开展了基于子序列训练的模型的研究,基于滑动窗口)。我们观察到,大多数时间序列通常包含长期变化,其周期长于传统窗口长度,如图1和图5所示如果一个模型成功地捕捉到了这些长期变化,我们预计两个距离遥远但相关的窗口的表示将比不相关的窗口更相似。然而,由于之前的研究都在训练期间单独处理每个窗口,因此模型难以捕捉不同窗口之间的这种长期变化。图2清楚地表明,现有模型的表述无法反映两个遥远窗口之间的长期相关性。然而,最近的方法倾向于忽略长期变化,而更多地关注学习窗口内的短期变化。例如,基于分解方法的现有模型(Zeng等人,2023; Wang等人,2023)经常将在窗口中部分捕捉到的长期变化视为简单的非周期性趋势,并采用线性模型将过去的趋势扩展到预测中。此外,窗口单元归一化方法(Kim等人,2021年; Zeng等人,2023)可通过将数值上有效的值(例如,过去的最大值、最小值、域特定值),其可能对时间序列具有长期影响。由于这些归一化方法对于减轻分布偏移问题是必要的(Kim等人,2021)(Liu等人,2022 b)中,需要一种新的方法来学习长期变化,同时仍然保持归一化方法。
因此,我们提出一种新的对比学习方法,以帮助模型捕捉跨不同窗口的长期依赖关系。我们的方法建立在这样的事实上,即一个小批处理可以由在时间上相隔很远的窗口组成。它允许窗口之间的间隔跨越整个序列长度,该长度比窗口长度长得多。第3.1节描述了我们的对比损失的细节。此外,我们将我们的对比损失与一个基于分解的模型架构结合使用,该架构包括两个分支,即短期分支和长期分支。当然,我们的损失也适用于长期分支。然而,如前所述,现有分解架构中的长期分支由单个线性层组成,这不适合学习长期表示。因此,正如3.2节中所解释的,我们重新设计了分解架构,使长期分支有足够的能力从我们的损失中学习长期表示。综上所述,我们工作的主要贡献如下:
我们的研究结果表明,现有的模型的长期性能较差,因为这些模型忽略了窗口以外的长期变化。
我们提出了AutoCon,这是一种新型的对比损失函数,通过以自我监督的方式在遥远的窗口中构建正负对来学习长期表示。在9个数据集上进行的大量实验表明,与包括3种表示方法的14个并发模型相比,使用AutoCon训练的分解架构实现了高达34%的性能提升。


图2清楚地表明,现有模型的表述无法反映两个遥远窗口之间的长期相关性。通过下面的相似性表示,我们可以清楚的看出来,现有的模型,像FEDformer,PatchTST,TimesNet.相似性一直没有变换。相反我们的模型,在不同的窗口之间,相似度有一个突变。所以我们的模型很好表现遥远窗口之间的相关性。

2、相关工作:
Contrastive Learning for Time-series Forecasting 用于时间序列预测的对比学习(Chen等人,2020;Khosla等人,2020;Za等人,2022)是一种自我监督学习技术,帮助模型学习有用的数据表示,而不需要对数据进行显式标记。在计算机视觉对比学习取得成功的推动下,时间序列分析中提出了许多方法(Tonekaboni等人,2021;Yue等人,2022;Woo等人,2022A)。***在对比学习中,由于如何构建正对对成绩有很大影响,他们主要提出了时间一致性(Tonekaboni et al.,2021)、次序列一致性(Franceschi et al.,2019)和语境一致性(Yue et al.,2022)等正对构建策略。***然而,这些策略有一个局限性,即只选择时间上接近的样本作为正值,忽略了时间序列中的周期性。由于周期性,可能存在比肯定选择的样本更多的相似的否定样本。最近,Cost(Woo等人,2022A)试图通过频域对比损耗来学习考虑周期性的表示,但它不能考虑超出窗口长度的周期性,因为它仍然使用窗口的增广。在时间序列学习框架中,我们关注这样一个事实,即一批随机抽样的序列在时间上可能彼此相距很远。因此,我们提出了一种新的选择策略,既可以选择批中窗口之间的局部正对,也可以选择全局正对。
Decomposition-based Models for Long-term Forecasting 用于长期预测的基于分解的模型时间序列分解(Cleveland等人,1990)是一种成熟的技术,涉及将时间序列分解为其各个分量,例如趋势分量、季节分量和余项分量。通过将一个时间序列分解为这些组成部分,可以更容易地分析每个组成部分的行为,并做出更易于解释的预测。因此,基于分解的模型(Wu等人,2021; Zhou等人,2022 b; Wang等人,2023年)在时间序列预测中越来越受欢迎,因为它们提供了稳健和可解释的预测,即使是在复杂的时间序列上训练。最近,DLinear(Zeng等人,2023)通过对每个趋势和季节性分量使用分解块和单个线性层,展示了卓越的性能。然而,我们的分析表明,这些线性模型在捕获影响短期预测的高频分量方面是有效的,而它们往往会错过显著影响长期预测的低频分量。因此,单个线性模型对于短期预测可能是足够的,但是对于长期预测是不够的。鉴于这一限制,我们提出了一种模型架构,该架构包括具有不同容量的层,以说明两个组件的独特属性。
3、方法
我们首先用滑动窗口方法描述预测任务(Zhou等人,2021年; Wu等人,2021年; Park等人,2023),其覆盖了整个时间序列S = {s1,…,sT},其中T表示观测时间序列的长度,st ∈ Rc为c维观测值。为了简单地解释我们的方法,在本文中我们将维度c设置为1。通过在S上滑动一个固定长度的窗口W,我们得到了窗口D = {Wt} Mt =1,其中Wt =(Xt,Yt)被分成两部分:输入序列Xt = {st,…,st+I-1},输出序列Yt = {st+I,…,st+I+O−1}用输出长度O进行预测。此外,我们将Wt的全局索引序列表示为Tt = {t + i}W−1 i=0。
3.1 AUTOCORRELATION-BASED CONTRASTIVE LOSS FOR LONG-TERM FORECASTING
Missing Long-term Dependency in the Window
许多真实世界的时间序列表现出不同的长期和短期变化。在这种情况下,预测模型可能难以预测长期变化,因为在窗口内未捕获这些变化。我们首先利用随机过程理论(Chatfield & Xing,2019; Papoulis & Unnikrishna Pillai,2002)的启发,使用自相关性来识别这些长期变化。
对于一个真实的离散时间过程{St},我们可以用下式得到自相关函数RSS(h):
(1)自相关函数度量的是不同时刻观测值之间的相关性(即:时间滞后h)。接近于1或-1的强相关性指示序列S中由h分隔的所有点是线性相关的,对于正号或负号分别在相同或相反的方向上移动。换句话说,可以利用自相关来基于当前变化预测h间隔之外的未来变化。尽管最近的方法利用了自相关性来发现周期,基于依赖性(Wu等人,2021; Wang等人,2022),他们只应用它来捕捉窗口内的变化,忽略了跨越窗口的长期变化。但如图1所示,非零相关性存在于传统窗口长度之外。我们首次提出了一种通过对比学习的表示学习方法,以捕获由全局自相关量化的这些长期变化。请注意,为了将我们的方法与在给定窗口内使用局部自相关的方法区分开来,我们将整个时间序列计算的自相关称为全局自相关 。
Autocorrelation-based Contrastive Loss (AutoCon):
我们注意到,一个小批量可以由时间上相距很远的窗口组成。该时间距离可以与整个序列长度T一样长,其比窗口长度W长得多。基于这一事实,我们通过在窗口之间建立关系来解决整个系列中存在的长期依赖关系。具体地说,我们基于全局自相关性定义了两个窗口之间的关系。在两个不同的时间t1和t2获得的任意两个窗口Wt 1和Wt 2中的每一个都具有W个观测值,其具有全局索引时间序列Tt 1 = {t1 + i}W−1 i=0和Tt 2 = {t2 + j}W−1 j=0。然后,我们将每个窗口中所有两个观测值对之间的时间距离表示为矩阵D ∈ RW×W。该矩阵D包含时间距离作为元素Di,j =|(t2 + j)−(t1 + i)|.在两个窗口中,相同相位(即,i = j)都具有相同的值|t1 − t2|,它们由矩阵的对角项{Di,i}W−1 i=1表示。在两个窗口中,相同相位(即,i = j)都具有相同的值|t1 − t2|,它们由矩阵的对角项{Di,i}W−1 i=1表示。因此,基于这种代表性,我们利用全局自相关RSS(|t1 − t2|)来定义两个窗口之间的关系,如下所示:
其中RSS表示从列车序列S计算的全局自相关。
现在,我们设计一个损失,以确保所有窗口表示对之间的相似性遵循数据空间中测量的全局自相关。为了实现这一点,我们以受SupCR启发的相对方式定义积极和消极样品(Zha等人,2022)用于图像域中的回归任务。然而,与SupCR使用注释标签来确定图像之间的关系不同,我们使用全局自相关RSS来确定窗口之间的关系,使我们的方法成为一种无监督方法。我们将由N个窗口组成的小批量X ∈ RN×I馈送到编码器以获得表示v ∈ RN×I×d,其中v = Enc(X,T)。由窗口i索引,我们的基于自相关的对比损失,称为AutoCon,然后在具有相应时间序列{T(i)} N i=1的表示{v(i)} N i = 1上计算为:
其中Sim(·,·)测量两个表示之间的相似性(例如,沿着时间轴的最大合并v(i)之间的余弦相似性(Yue等人,2022)),并且r(i,j)= r(T(i),T(j))表示两个窗口之间的全局相关性。在训练过程中,总共有N ×(N − 1)个可能的对,由(i,j)索引。每一对(即,作为锚点对)通过将表现出全局自相关R(i,k)低于锚点对的全局自相关R(i,j)的任何对视为负对而将其自身指定为相对正的对。图3描述了我们在给定批次中选择策略的示例。由于在每次迭代中形成批次的是一组不同的窗口,因此我们期望表示反映所有可能距离的全局自相关性。相对选择策略并不保证正窗口具有接近1的高相关性;它只需要比同一批中的其他负窗口具有更高的相关性。因此,我们引入r(i,j)作为权重,以区分具有不同相关度的正对,类似于焦点丢失(Lin等人,(2017年版)。为了使LAutocon最小化,编码器学习表示,使得具有高相关性的对比具有低相关性的对更接近。
与传统的基于对比的方法相比,我们的AutoCon具有几个显著的优势。首先,尽管AutoCon是一种无监督的表示方法,但它不依赖于数据增强,而数据增强在大多数基于对比的方法中是常见的(Tonekaboni等人,2021年; Yue等人,2022年; Woo等人,第2022条a款)。基于扩充的方法需要由扩充过程引起的额外计算成本,并且增加了扩充数据的前向-后向处理。而且,现有的对比学习方法仅将时间上接近的样本视为窗口内的正对。这最终不能适当地学习彼此远离但由于长期周期性而相似的窗口的表示。因此,我们的方法在计算上是高效的,并且能够学习长期表示,从而增强了有效预测长期变化的能力。
3.2 DECOMPOSITION ARCHITECTURE FOR LONG-TERM REPRESENTATION
现有模型通常采用季节分支和趋势分支相结合的分解架构来实现季节预测和趋势预测的分离。为了强调趋势是部分捕获在窗口内的长期变化,我们将趋势分支视为长期分支,将季节性分支视为短期分支。我们的AutoCon方法旨在学习长期表示法,因此自然不会在短期分支中使用它来强制执行长期依赖项。然而,将AutoCon与当前的分解体系结构集成带来了一个挑战,因为两个分支共享相同的表示(Wu等人,2021年;周等人,2022b;刘等人,2022b),或者长期分支由不适合学习表示法的线性层组成(Zeng等人,2023;Wang等人,2023)。此外,我们观察到最近的基于线性的模型(Zeng等人,2023)在短期预测方面优于复杂的深层模型,这使得人们怀疑是否需要深层模型来学习高频变化。基于这些考虑,我们重新设计了一个具有良好定义的现有块的模型体系结构,以尊重短期预测的时间局部性和长期预测的全球性,如图4所示。我们的分解体系结构有三个主要特征。
3.2.1 Normalization and Denormalization for Nonstationarity
首先,我们使用窗口单位归一化和反归一化方法(等式4)(Kim等人,2021年; Zeng等人,2023)如下:
式中,X/是输入序列的均值。这些简单的方法有助于有效地缓解分布偏移问题(Kim等人,2021年)的非平稳性的真实世界的时间序列。
3.2.2 Short-term Branch for Temporal Locality
接下来,我们观察到短周期变化经常在输入序列中重复多次,并且在时间上接近的情况下表现出类似的模式。这种短期变化的局部性支持了最近基于线性的模型的成功(Zeng等人,2023),其仅使用相邻序列的顺序信息。因此,我们采用线性层进行短期预测,如下所示:
3.2.3 Long-term Branch for Temporal Globality
设计用于应用AutoCon方法的长期分支采用编码器-解码器架构。具有足够能力来学习长期呈现的编码器利用顺序信息和全局信息(即,从T)导出的基于时间戳的特征如下:
只要在处理长序列时没有问题,编码器的网络选择就很灵活。我们选择了时间卷积网络(Bai等人,2018)(TCN),广泛用于学习时间序列表示(Yue et al.,#20222;计算效率。解码器采用多尺度移动平均(MA)块(Wang等人,2023),具有不同的内核大小{ki}n i=1,以基于如下表示v捕获多个周期:
位于长期分支头部的MA块平滑了短期波动,自然鼓励分支关注长期信息。我们重新设计的架构通过目标函数L优化如下:
其中均方误差(MSE)和AutoCon损失与权重λ组合作为超参数。超参数敏感性分析见附录A.6。每个操作的详细描述(例如,线性、填充和MLP)可在附录A.1中找到。
4 EXPERIMENTS
为了验证所提出的方法,我们在9个真实世界数据集上进行了广泛的实验,这些数据集来自6个领域:机械系统(ETT)、能源(电力)、交通(交通)、天气(天气)、经济(交易所)和疾病(ILI)。我们遵循标准方案(Wu等人,2021年),并将所有数据集按照时间顺序按6:2:2的比例分为训练集、验证集和测试集。我们选择了具有不同架构的最新基准模型,这些架构被分类为线性架构(Zhou等人,2022 a; Zeng等人,2023),基于CNN(Wu等人,2023; Wang等人,2023)和基于变压器的(Zhou等人,2022 b; Liu等人,2022 b; Nie等,2023年)的报告。此外,我们还将我们的模型与两个模型(Challu等人,2023; Zhang & Yan,2023),其重点是学习多元预测的通道间依赖性。附录A提供了有关数据集和基准实施的更多详细信息。
4.1 MAIN RESULTS
Extended Long-term Forecasting
为了更好地评估我们的模型在预测长期变化方面的性能(随着预测长度的延长,长期变化往往具有越来越大的意义),我们设计了我们的实验来延长每个数据集的预测长度O。传统的基准实验通常预测多达720个步骤,这种转变使我们能够探索模型在更具挑战性的预测场景中的能力。对于总长度较长的数据集,例如ETTh,电力,交通和天气,我们将预测长度从720增加到2160。此外,对于总长度较短的Exchange和ILI数据集,我们将输出长度分别扩展到1080和112。总体而言,表1显示,我们的AutoCon模型在单变量设置中获得第一名42次,优于最先进的基线。当根据长度检查性能变化时,与其他最佳模型相比,我们的模型在预测未来时显示出显着的改善(例如,平均而言,96和720的错误减少了5%,1440和2160的错误减少了12%。这些结果从经验上证明了我们的AutoCon在有效捕获窗口之外存在的长期变化方面的贡献。
Dataset Analysis
由于我们的目标是学习长期变化,因此我们模型的性能改进可能会受到长期变化的大小和数量的影响。图5显示了每个数据集特有的各种一年的商业周期和自然周期。For instance,ETTh2和Electricity数据集具有强的长期相关性,其峰值在重复多次的几个滞后处。因此,我们在ETTh2和Electricity数据集上的方法表现出显着的性能提升,与第二好的模型相比,分别减少了34%和11%的误差。相比之下,天气数据集在窗口外的相关性比上述两个数据集相对较低。这使得我们的模型在天气数据集上显示出最小的改进,误差减少了3%。因此,我们的方法的优越性表现得更强烈的数据集具有较强的长期相关性,从而经验验证我们的贡献。
Extension to Multivariate Forecasting
如表2所示,我们的方法通过在每个通道的基础上计算自相关然后遵循通道独立性方法(Nie等人,2023年)的报告。附录A.2描述了多变量设置的详细信息。
4.2 MODEL ANALYSIS
Temporal Locality and Globality 如3.2节所述,我们提出了一个模型架构,它结合了局部性线性模型和全局性深度模型的优点。图6(a)表明,对于高达96个单位的短期预测,线性模型(DLinear)实现了比深度模型(如TimesNet,Nonstationary和FED former)更低的错误率。然而,随着预测长度的延长,DLinear的误差开始发散。相反,TimesNet和Nonstationary即使在预测长度增加的情况下也保持了一致的错误率,但在短期预测方面表现不如线性模型。这些观察结果是我们的分解架构的动机,它精通短期和长期预测(图6(a)中的蓝线)。
Ablation Studies
在这里,我们进行了消融研究,以验证我们的方法的每个组成部分。图6(B)显示了在完整模型上进行的消融研究的结果,并且当去除短期分支后,短期预测出现显著误差。当去除长期分支时,它显示出长期预测的显著误差。此外,如果不集成我们的AutoCon,长期性能就会下降。如表3所示,这些趋势在各种数据集中一致。
问题1:
这个对比学习,是什么对比的?
问题2:
代码中的AutonCon的损失对整个模型预测趋势有什么帮助?
更多推荐


所有评论(0)