作者:Zhihan Yue, Yujing Wang, Juanyong Duan, Tianmeng Yang, Congrui Huang, Yunhai Tong, Bixiong Xu
原文:戳我
代码:戳戳我
一、核心看点
- 利用一种多层对比学习的方法,为时序数据中每一个时间点提供一个更为好用的上下文表征方法。
- 通过在时间点上执行一个简洁的数据聚合方法,使得在时序数据中的任意一个子序列都可以被表征。
二、研究动机
- 实例层级(Instance-level)的表征方法可能没有办法很好注入时序预测、异常检测之类的适配细粒度(fine-grained)的任务。
- 针对现有各种的表征方法中,在表征某一个时间点的上下文(contextual)信息时,上下文的覆盖范围不够灵活,窗口大小相对固定。
- 多尺度的表征方法可以提高其泛化性,使其对更多的下游任务都能适配。
- 目前针对时序数据的无监督式表征学习方法,大部分都是从cv或者nlp领域照搬过来的。
三、问题建模
对包含 $N$ 个实例的时序数据 $\mathcal{X}=\left\{x_1, x_2, \cdots, x_N\right\}, x_i \in \mathbb{R}^{T \times F}$ ( $T$ 表示的是序列长度, $F$ 表示的是特征维度),构建一个非线性的嵌入(embedding)映射,将每一个 $x_i$ 映射成对应的表征量 $r_i$ 。
针对第i个实例 $x_i$ ,经过嵌入映射后得到的其表征向量写作$r_i=\left\{r_{i, 1}, r_{i, 2}, \cdots, r_{i, T}\right\}, r_{i, t} \in \mathbb{R}^K$,此处 $K$ 表示的是用户自定义的嵌入维度。
四、模型概览
- 针对第 $i$ 个实例 $x_i$, 从里面随机选取一对在时间维度上相交的子序列( $a_1$ , $b_1$)和 ( $a_2$, $b_2$ )
两序列在( $a_2$ , $b_1$ )段重合
$0<a_1 \leq a_2 \leq b_1 \leq b_2 \leq T$
两个子序列相交的原因:方便检验该方法在两个子序列上,其相交部分的上下文表征具备一致性。 - 这两段子序列都会被输入一个编码器(encoder)。
该编码器利用 contrastive loss 和 instance-wise contrastive loss 进行共同训练。
编码器分为三层:- 输入映射层( Input Projection Layer)
将 $x_{i, t}$ 映射为隐变量 $z_{i, t}$ ,后者的维度将高于前者
模型:全连接层 - 时间点掩码层( Timestamp Masking )
对隐变量$z_{i, t}$ ,随机选取时间点进行遮掩。下图打问号的部分就是被掩码遮蔽的区域。
对于一对子序列,这段操作就是在它们的相交部分,选择一段时间的数据进行单向、双向的遮蔽,并检查这两段子序列的嵌入向量,在这个遮掩区域的表征是否一致。
数学表达: $m \in\{0,1\}^T$
选取方法:在 $p=0.5$ 的伯努利分布上采样
- 扩张卷积层 ( Dilated Convolution )
对每个时间点抽取其上下文特征
模型:10个res blocks,每一个res block包含两个1D卷积层
- 输入映射层( Input Projection Layer)
进行多层级的对比( Hierarchical Contrasting )
对于同一个实例 $x_i$, 在时间点 $t$ 上,选取用于表征它的、数值不同的两个嵌入向量 $r_{i, t}$ 与 $r^\prime_{i, t}$ 。
计算其时间维度上的表征差异:其中:$\Omega$ 表征的是这对子序列相交的那一部分数据对应的时间段。
$\mathbb{1}_{\left[t \neq t^{\prime}\right]} \exp \left(r_{i, t} \cdot r_{i, t^{\prime}}\right)$ 表示当 $t \neq t^{\prime}$ 时,才去计算 $\exp (r_{i, t} \cdot r_{i, t^{\prime}})$
再计算整体上二者的表征差异:其中: $B$ 表征的是一个训练批次的大小(batch size)。
$\mathbb{1}_{[i \neq j]} \exp \left(r_{i, t} \cdot r_{j, t}\right)$ 表示当 $i \neq j$ 的时候才去计算 $\exp (r_{i, t} \cdot r_{i, t^{\prime}})$
将这两者聚合:再利用maxpooling技术,不断压缩这对子序列数据,再在压缩了的数据上执行对比计算,直到子序列的长度被压缩为1.