TS-TCC: 通过时序和上下文对比学习时间序列表征《Time-Series Representation Learning via Temporal and Contextual Contrasting》(时间序列、时序表征、时间和上下文对比、对比学习、自监督学习、半监督学习)
现在是2023年11月14日的22:15,肝不动了,要不先回寝室吧,明天把这篇看了,然后把文档写了。OK,明天的To Do List.
现在是2023年11月15日的10:35,继续。
论文:Time-Series Representation Learning via Temporal and Contextual Contrasting(IJCAI官网版本PDF)
或者是:Time-Series Representation Learning via Temporal and Contextual Contrasting(IJCAI汇报的视频)
或者是:Time-Series Representation Learning via Temporal and Contextual Contrasting(IJCAI汇报的PPT)
或者是:Time-Series Representation Learning via Temporal and Contextual Contrasting(PDF)
或者是:Time-Series Representation Learning via Temporal and Contextual Contrasting(PDF)
或者是:Time-Series Representation Learning via Temporal and Contextual Contrasting(新加坡南洋理工大学官网版本PDF)
哪个能打开用哪个(因为我用了工具,哈哈哈哈哈)。
GitHub:https://github.com/emadeldeen24/TS-TCC
IJCAI 2021的论文。
摘要
从具有时间动态变化的无标记时间序列数据中学习恰当的表征是一项极具挑战性的任务。在本文中,我们提出了一种通过时间和上下文对比(TS-TCC)的无监督时间序列表示学习框架,以从无标记数据中学习时间序列表示。首先,通过使用弱增强和强增强将原始时间序列数据转换为两种不同但相关的视图。其次,我们提出了一个新颖的时序对比模块,通过设计一个艰难的跨视图预测任务来学习稳健的时序表征。最后,为了进一步学习分辨表征,我们提出了一个建立在时空对比模块上下文基础上的上下文对比模块。该模块试图最大化同一样本不同上下文之间的相似性,同时最小化不同样本上下文之间的相似性。我们在三个真实世界的时间序列数据集上进行了实验。结果表明,在我们提出的 TS-TCC 所学特征的基础上训练线性分类器的效果与监督训练的效果相当。此外,我们提出的 TS-TCC 在少标签数据和迁移学习场景中表现出很高的效率。代码可在 https://github.com/emadeldeen24/TS-TCC 公开获取。
1 介绍
物联网和可穿戴设备每天都在不断收集时间序列数据,用于医疗保健、制造等领域的各种应用。然而,这些数据通常没有人类可识别的模式,需要专家进行标注/标记。因此,标注时间序列数据要比标注图像难得多,而且在现实应用中标注的时间序列数据也很少[Ching 等人,2018]。鉴于深度学习方法通常需要海量的标注数据进行训练,因此在这些标注限制的时间序列数据上应用深度学习方法非常具有挑战性。
(现在是14:05,继续。)
近来,自监督学习受到越来越多的关注,它可以从未标明数据中提取有效的表征,用于下游任务。与在完整标记数据上训练的模型(即监督模型)相比,自监督预训练模型可以在有限的标记数据上取得相当的性能[Chen 等人,2020]。各种自监督方法依赖于不同的前置任务来训练模型,并从无标记数据中学习表征,例如解谜 [Noroozi and Favaro, 2016] 和预测图像旋转 [Gidaris et al., 2018]。然而,借口任务会限制所学表征的通用性。例如,对图像的不同旋转角度进行分类可能会使模型偏离对物体颜色或方位特征的学习[Oord 等人,2018]。
对比学习由于能够从增强数据中学习不变表征,因此最近在计算机视觉领域显示出了强大的自监督表征学习能力[Hjelm 等人,2019;He 等人,2020;Chen 等人,2020]。它首先应用数据增强技术探索输入图像的不同视图,然后通过最大化同一样本不同视图的相似性和最小化与不同样本视图的相似性来学习表征。然而,由于以下原因,这些基于图像的对比学习方法无法很好地应用于时间序列数据。首先,它们可能无法解决数据的时间依赖性问题,而这正是时间序列的主要特征 [Franceschi 等人,2019]。其次,用于图像的一些增强技术(如色彩失真)通常不能很好地适用于时间序列数据。迄今为止,针对时间序列数据提出的对比学习方法还很少。例如,[Mohsenvand 等人,2020 年;Cheng 等人,2020 年] 针对脑电图和心电图等生物信号开发了对比学习方法。然而,上述两种方法都是针对特定应用提出的,并不能推广到其他时间序列数据。
为了解决上述问题,我们提出了一种通过时序和上下文对比(TS-TCC)进行时间序列表示学习的框架。我们的框架采用了简单而高效的数据增强技术,可适用于任何时间序列数据,为输入数据创建两个不同但相关的视图。接下来,我们提出了一个新颖的时空对比模块,通过设计一个艰难的跨视图预测任务来学习稳健的表征,即在某个时间步,利用一个增强数据过去的潜在特征来预测另一个增强数据的未来。这种新颖的操作将迫使模型通过更难的预测任务来学习稳健的表征,以应对不同时间步和增强所带来的任何扰动。此外,我们还在 TS-TCC 中提出了一个上下文对比模块,以便在时间对比模块学习到的稳健表征的基础上进一步学习判别表征。在这个上下文对比模块中,我们的目标是最大化同一样本不同上下文之间的相似性,同时最小化不同样本上下文之间的相似性。
总之,这项工作的主要贡献如下。
- 为无监督时间序列表示学习提出了一个新颖的对比学习框架。
- 在对比学习框架中,为时间序列数据设计了简单而高效的增强方法。
- 我们提出了一个新颖的时间对比模块,通过设计一个艰难的跨视角预测任务,从时间序列数据中学习稳健的表征。此外,我们还提出了上下文对比模块,以便在稳健表征的基础上进一步学习判别表征。
- 我们使用三个数据集对我们提出的 TSTCC 框架进行了大量实验。实验结果表明,在监督学习、半监督学习和迁移学习设置下,学习到的表征对下游任务非常有效。
2 相关工作
2.1 自我监督学习
自我监督学习的最新进展始于在图像上应用借口任务来学习有用的表征,例如解拼图[Noroozi 和 Favaro,2016]、图像着色[Zhang 等人,2016]和预测图像旋转[Gidaris 等人,2018]。尽管这些借口任务取得了不错的结果,但它们依赖的启发式方法可能会限制所学表征的通用性。另一方面,对比方法通过从增强数据中学习不变表征开始大放异彩。例如,MoCo [He 等人,2020] 利用动量编码器来学习从记忆库中获得的否定对的表征。SimCLR [Chen 等人,2020] 则通过使用更大批量的否定对来取代动量编码器。此外,BYOL [Grill 等人,2020] 甚至在不使用负样本的情况下通过引导表征来学习表征。最后,SimSiam [Chen and He, 2020] 支持忽略负样本的想法,仅依靠暹罗网络和停止梯度操作就达到了最先进的性能。虽然所有这些方法都成功改进了视觉数据的表示学习,但它们可能无法很好地用于具有不同属性(如时间依赖性)的时间序列数据。
2.2 时间序列表征的自监督学习
时间序列表征学习越来越受欢迎。一些方法采用了时间序列数据的前置任务。例如,[Saeed 等人,2019] 通过对数据进行多次变换,设计了一个用于人类活动识别的二元分类借口任务,并训练模型在原始版本和变换版本之间进行分类。同样,SSL-ECG 方法[P. Sarkar, 2020]通过对数据集应用六种变换来学习心电图表示,并根据变换类型分配伪标签。此外,[Aggarwal 等人,2019] 通过对局部和全局活动模式建模来学习主体不变表征。受对比学习成功的启发,最近有一些研究利用对比学习来处理时间序列数据。例如,CPC [Oord 等人,2018] 通过预测潜在空间中的未来来学习表征,并在各种语音识别任务中取得了巨大进步。此外,[Mohsenvand 等人,2020] 还设计了与脑电图相关的增强功能,并将 SimCLR 模型[Chen 等人,2020] 扩展到脑电图数据。现有的方法要么使用时间特征,要么使用全局特征。与此不同的是,我们首先通过设计特定时间序列增强来为输入数据构建不同的视图。此外,我们还提出了一种新颖的跨视图时间和上下文对比模块,以改进时间序列数据的学习表征。
3 方法
本节将详细介绍我们提出的 TS-TCC 方法。如图 1 所示,我们首先根据强增强和弱增强对输入数据生成两种不同但相关的视图。然后,我们提出了一个时间对比模块,利用自回归模型探索数据的时间特征。这些模型利用一个视图的过去预测另一个视图的未来,从而完成一项艰难的跨视图预测任务。通过上下文对比模块,我们进一步最大限度地提高了自回归模型上下文之间的一致性。接下来,我们将在以下几个小节中介绍每个组件。
3.1 时间序列数据扩增
数据扩增是对比学习方法成功的关键部分[Chen 等人,2020;Grill 等人,2020]。对比学习方法试图最大化同一样本不同视图之间的相似性,同时最小化其与其他样本的相似性。因此,为对比学习设计适当的数据增强是很重要的[Chen 等人,2020;Mohsenvand 等人,2020]。通常,对比学习方法使用同一扩增的两种(随机)变体。然而,我们认为,使用不同的增强可以提高所学表征的鲁棒性。因此,我们建议使用两种不同的增强方法,一种是弱增强,另一种是强增强。在本文中,弱增强是一种 "抖动-扩展 "策略。具体来说,我们在信号中添加随机变化,并放大其幅度。对于强增强,我们采用置换-抖动策略,其中置换包括将信号分割成最大为 M 的随机段数,并对其进行随机洗牌。然后,在排列后的信号中加入随机抖动。值得注意的是,应根据时间序列数据的性质谨慎选择增强超参数。例如,在应用置换时,序列较长的时间序列数据中的 M 值应大于序列较短的数据中的 M 值。同样,归一化时间序列数据的抖动比应远小于未归一化数据的抖动比。
对于每个输入样本 x,我们用 xs 表示其强增强视图,用 xw 表示其弱增强视图,其中 xs ∼Ts 和 xw ∼Tw。然后将这些视图传递给编码器,以提取它们的高维潜在表示。具体来说,编码器采用[Wang 等人,2017]中提出的 3 块卷积架构。对于输入 x,编码器将 x 映射为高维潜表征 z = fenc(x)。我们定义 z = [z1, z2, ... zT],其中 T 是总的时间步数,zi ∈ Rd,其中 d 是特征长度。这样,我们就得到了强增强视图的 zs 和弱增强视图的 zw,然后将它们输入时间对比模块。(这里看的有点晕,到时候结合代码好好看一下。)
3.2 时间对比
时间对比模块采用对比损失法,通过自回归模型提取潜空间中的时间特征。给定潜表征 z,自回归模型 far 将所有 z≤t 总结为上下文向量 ct = far(z≤t),ct∈Rh,其中 h 是 far 的隐藏维度。然后用上下文向量 ct 预测从 zt+1 到 zt+k 的时间步(1 < k ≤ K)。为了预测未来的时间进程,我们使用对数线性模型来保留输入 xt+k 和 ct 之间的互信息,即 fk(xt+k,ct)=exp((Wk(ct))Tzt+k),其中 Wk 是一个线性函数,它将 ct 映射回与 z 相同的维度,即 Wk:Rh→d。
在我们的方法中,强增强产生 cs t,弱增强产生 cw t。我们提出了一个艰难的跨视图预测任务,利用强增强 cs t 的上下文来预测弱增强 zw t+k 的未来时间步,反之亦然。对比损失试图最小化预测表示与同一样本真实表示之间的点积,同时最大化与迷你批中其他样本 Nt,k 的点积。因此,我们计算两种损失 Ls TC 和 Lw TC 的方法如下:
我们使用 Transformer 作为自回归模型,因为它效率高、速度快[Vaswani 等人,2017]。Transformer 模型的架构如图 2 所示。它主要由连续的多头注意力(MHA)块和一个 MLP 块组成。MLP 块由两个全连接层组成,中间带有非线性 ReLU 函数和dropout。预规范残差连接可以产生更稳定的梯度[Wang 等人,2019],我们的Transformer采用了这种连接。我们堆叠 L 层相同的层来生成最终特征。受 BERT 模型[Devlin et al., 2019]的启发,我们在输入中添加了一个标记 c∈ Rh,其状态在输出中充当代表性上下文向量(这里没看懂。)。Transformer的操作首先是将特征 z≤t 应用到线性投影 WTran 层,该层将特征映射到隐藏维度,即 WTran : Rd→h。然后,线性投影的输出被发送到Transformer,即 ˜z = WTran(z≤t),z˜∈Rh。接下来,我们将上下文向量附加到特征向量 ˜z 中,这样输入特征就变成了 ψ0 = [c;˜z],其中下标 0 表示是第一层的输入。接下来,我们将 ψ0 通过Transformer层,如下式所示:
最后,我们从最终输出中重新连接上下文向量,使 ct = ψ0 L。
3.3 上下文对比
我们还提出了一个上下文对比模块,旨在学习更具辨别力的表征。该模块首先使用非线性投影头对上下文进行非线性转换,如 [Chen 等人,2020] 所述。投影头将上下文映射到应用上下文对比的空间中。给定一批 N 个输入样本,我们将从每个样本的两个增强视图中获得两个上下文,因此有 2N 个上下文。对于一个上下文 ci t,我们用 ci+ t 表示 ci t 的正样本,它来自同一输入的另一个增强视图,因此(ci t、ci+ t )被视为一对正样本。同时,同一批次中来自其他输入的其余 (2N - 2) 个上下文被视为 ci t 的负样本,即 ci t 可以与其负样本形成 (2N - 2) 对负样本。因此,我们可以推导出一个上下文对比损失,使正样本对之间的相似度最大化,负样本对之间的相似度最小化。这样,最终的表征就具有了鉴别性。
公式 5 定义了上下文对比损失函数 LCC。给定一个上下文 ci t,我们将其与正样本 ci+ t 的相似度除以其与所有其他 (2N - 1) 个样本(包括正对样本和 (2N - 2) 个负对样本)的相似度,从而对损失进行归一化处理。
其中,sim(u, v) = uTv/uv 表示 2 归一化的 u 和 v 之间的点积(即余弦相似度),1[m=i] ∈ {0, 1} 是一个指标函数,如果 m = i 则求 1,τ 是一个温度参数。
总体自监督损失是两个时间对比损失和上下文对比损失的组合,具体如下。
其中,λ1 和 λ2 是固定的标量超参数,表示每种损失的相对权重。
(现在是18:12,暂停,先去恰个饭。)
(19:07,滚回来了,继续。)
4 实验设置
4.1 数据集
为了评估我们的模型,我们采用了三个公开可用的数据集,分别用于人类活动识别、睡眠阶段分类和癫痫发作预测。此外,我们还在故障诊断数据集上研究了所学特征的可转移性。
人类活动识别(HAR)
我们使用 UCI HAR 数据集[Anguita 等人,2013 年],其中包含 30 名受试者在进行 6 种活动(即行走、上楼、下楼、站立、坐和躺下)时的传感器读数。他们使用安装在腰部的三星 Galaxy S2 设备收集数据,采样率为 50 Hz。
睡眠阶段分类
在这个问题中,我们的目标是将输入的脑电信号分为五类: 清醒(W)、非快速眼动(N1、N2、N3)和快速眼动(REM)。我们从 PhysioBank [Goldberger 等人,2000 年] 下载了睡眠-EDF 数据集。Sleep-EDF 包括整夜 PSG 睡眠记录,我们使用了单个 EEG 通道(即 Fpz-Cz),采样率为 100 Hz,这与之前的研究[Eldele 等人,2021]相同。
癫痫发作预测
癫痫发作识别数据集[Andrzejak 等人,2001] 由 500 名受试者的脑电图记录组成,每个受试者的大脑活动记录时间为 23.6 秒。请注意,原始数据集标注了五个类别。由于其中四个类别不包括癫痫发作,因此我们将它们合并为一个类别,并将其视为二元分类问题。
故障诊断(FD)
我们在真实世界的故障诊断数据集上进行了可转移性实验[Lessmeier 等人,2016]。该数据集是在四种不同的工作条件下收集的。每个工作条件都可以被视为一个独立的域,因为它具有不同于其他工作条件的特征[Ragab 等人,2020]。每个域有三个类别,即两个故障类别(即内部故障和外部故障)和一个健康类别。表 1 总结了每个数据集的详细信息,如训练样本数(# Train)和测试样本数(# Test)、样本长度、传感器通道数(# Channel)和类数(# Class)。
4.2 实施细节
我们将数据分成 60%、20%、20%,分别用于训练、验证和测试,并考虑对睡眠-EDF 数据集进行主体分割,以避免过度拟合。我们用 5 个不同的种子重复了 5 次实验,并报告了平均值和标准偏差。预训练和下游任务的时间为 40 个历元,因为我们注意到性能并没有随着进一步的训练而提高。我们使用的批次大小为 128(在标签数据较少的实验中减小到 32,因为数据大小可能小于 128)。我们使用了学习率为 3e-4、权重衰减为 3e-4、β1 = 0.9 和 β2 = 0.99 的 Adam 优化器。对于强增强,我们设置 MHAR = 10、MEp = 12 和 MEDF = 20,而对于弱增强,我们设置所有数据集的缩放比为 2。我们设置 λ1 = 1,而当λ2 ≈ 1 时,我们取得了良好的性能。特别是在四个数据集的实验中,我们将其设置为 0.7。在变换器中,我们设置 L = 4,头数为 4。我们调整了 h∈ {32, 50, 64, 100, 128, 200, 256},并设置 hHAR,Ep = 100, hEDF = 64。我们还将其 dropout 设为 0.1。在语境对比中,我们设置 τ = 0.2。最后,我们使用 PyTorch 1.7 建立了模型,并在 NVIDIA GeForce RTX 2080 Ti GPU 上进行了训练。
5 结果
为了展示我们提出的 TS-TCC 的功效,我们在三种不同的训练设置中对其进行了测试,包括线性评估、半监督训练和迁移学习。我们使用准确率和宏观平均 F1 分数(MF1)这两个指标来评估性能,以便更好地评估不平衡数据集。
5.1 与基线方法的比较
我们将我们提出的方法与以下基线方法进行比较。(1) 随机初始化:在随机初始化编码器的基础上训练线性分类器;(2) 监督:对编码器和分类器模型进行监督训练;(3) SSL-ECG [P. Sarkar, 2020];(4) CPC [Oord 等人,2018];(5) SimCLR [Chen 等人,2020]。值得注意的是,由于 SimCLR 最初是为图像而设计的,因此我们使用时间序列特定增强来使其适应我们的应用。
为了评估 TS-TCC 模型的性能,我们采用了标准的线性基准评估方案 [Oord 等人,2018 年;Chen 等人,2020 年]。特别是,我们在冻结的自监督预训练编码器模型之上训练线性分类器(单 MLP 层)。表 2 显示了我们的方法与基线方法的线性评估结果。总体而言,我们提出的 TS-TCC 优于所有三种最先进的方法。此外,仅使用线性分类器的 TS-TCC 在三个数据集中的两个数据集上表现最佳,而在第三个数据集上的表现与监督方法相当。这证明了我们的 TS-TCC 模型具有强大的表征学习能力。值得注意的是,对比方法(如 CPC、SimCLR 和我们的 TS-TCC)通常比基于借口的方法(即 SSL-ECG)取得更好的结果,这反映了对比方法学习到的不变特征的强大功能。此外,CPC 方法的结果优于 SimCLR,这表明在时间序列数据中,时间特征比一般特征更重要。
5.2 半监督训练
我们研究了半监督设置下 TS-TCC 的有效性,即使用训练数据中随机选择的 1%、5%、10%、50% 和 75% 的实例对模型进行训练。图 3 显示了我们的 TS-TCC 和上述设置下的监督训练结果。其中,TS-TCC 微调(即图 3 中的红色曲线)意味着我们用少量标记样本对预训练编码器进行了微调。
我们观察到,监督训练在有限的标注数据下表现不佳,而我们的 TS-TCC 微调在仅有 1%标注数据的情况下取得了明显优于监督训练的性能。例如,在 HAR 和癫痫数据集上,TS-TCC 微调仍能分别达到 70% 和 90% 左右。此外,我们的 TS-TCC 微调只需 10%的标注数据,就能在三个数据集上取得与 100%标注数据的监督训练相当的性能,这证明了我们的 TS-TCC 方法在半监督设置下的有效性。
5.3 迁移学习实验
我们通过设计迁移学习实验进一步检验了所学特征的可迁移性。我们使用表 1 中介绍的故障诊断(FD)数据集进行迁移学习设置下的评估。在这里,我们在一种条件下(即源领域)训练模型,并在另一种条件下(即目标领域)测试模型。具体来说,我们在源域上采用了两种训练方案,即 (1) 监督训练和 (2) TS-TCC 微调,其中我们使用源域中的标注数据对预训练编码器进行微调。
表 3 显示了这两种训练方案在 12 种跨域场景下的性能。很明显,在 12 个跨域场景中的 8 个场景中,我们采用微调(FT)预训练的 TSTCC 模型始终优于监督预训练。在 8 个获胜场景中,TS-TCC 模型在 7 个场景中至少提高了 7%(D→B 场景除外)。总体而言,与监督训练相比,我们提出的方法可以将所学表征的可迁移性在准确率方面提高约 4%。
5.4 消融研究
我们研究了我们提出的 TS-TCC 模型中每个组成部分的有效性。具体来说,我们将得出不同的模型变体,并进行如下比较。首先,我们在没有跨视图预测任务的情况下训练时空对比模块(TC),其中每个分支预测同一增强视图的未来时间步。这种变体被称为 "仅 TC"。其次,我们在训练 TC 模块时增加了跨视图预测任务,称为 "TC + XAug"。第三,我们训练整个 TS-TCC 模型,即 "TC + X-Aug + CC"。我们还研究了在 TS-TCC 中使用单一增强的效果。具体而言,对于输入 x,我们使用相同的增强类型生成两个不同的视图 x1 和 x2,即使用弱增强时 x1 ∼Tw 和 x2 ∼Tw。
表 4 显示了对三个数据集的消减研究。 显然,所提出的跨视图预测任务生成了稳健的特征,因此在 HAR 数据集上的性能提高了 5%以上,在 Sleep-EDF 和 Epilepsy 数据集上的性能提高了 1%。此外,上下文对比模块也进一步提高了性能,因为它有助于提高特征的区分度。在研究增强效果时,我们发现在 HAR 和 Sleep-EDF 数据集上,用相同的增强类型生成不同的视图并没有帮助。总之,我们提出的 TS-TCC 方法使用两种增强类型都能达到最佳性能。
5.5 敏感性分析
我们对 HAR 数据集进行了敏感性分析,研究了三个参数,即除公式 5 中的λ1 和λ2 外,时空对比模块中预测的未来时间步数 K。
图 4a 显示了 K 对整体性能的影响。 其中 x 轴为 K/d 百分比,d 为特征长度。显然,增加预测未来时间步的百分比可以提高性能。但是,百分比越大,用于训练自回归模型的过去数据量就越少,因此可能会影响性能。我们观察到,预测总特征长度的 40% 效果最好,因此我们在实验中将 K 设为 d×40%。图 4b 和 4c 分别显示了在 0.001 和 1000 之间改变 λ1 和 λ2 的结果。在图 4c 中,我们固定 λ1 = 1 并改变 λ2 的值。我们观察到,当 λ2 ≈ 1 时,我们的模型性能良好,其中 λ2 = 0.7 时模型性能最佳。因此,我们将 λ2 固定为 0.7,并调整 λ1 的值,如图 4b 所示,我们发现当 λ1 = 1 时,我们的模型性能最佳。我们还发现,当 λ1 < 10 时,我们的模型对其值不太敏感,而对λ2 的不同值则更加敏感。
6 结论
我们提出了一种名为 TS-TCC 的新框架,用于时间序列数据的无监督表示学习。建议的 TS-TCC 框架首先通过应用强增强和弱增强为每个样本创建两个视图。然后,时间对比模块通过应用艰难的跨视图预测任务来学习稳健的时间特征。我们还提出了一个上下文对比模块,用于在学习到的稳健表征基础上学习判别特征。实验表明,在我们的 TS-TCC 学习到的特征基础上训练的线性分类器与监督训练的效果相当。此外,我们提出的 TS-TCC 在少标签数据和迁移学习场景中表现出了很高的效率,例如,我们的 TS-TCC 只使用了 10% 的标签数据,就能达到与使用完整标签数据的监督训练相近的性能。
20:31看完了,要整理一下,感觉有点乱。
呜呜呜呜,我是菜鸡,并没有看懂这个对比学习的具体操作。