Autoformer的核心:基于周期的依赖发现(Period-based dependencies)
时间序列通常有周期性(比如交通流的日周期、周周期)。处于“相同相位”的子序列(比如“这周五晚高峰”和“上周五晚高峰”)在形状上是高度相似的。我们的目标不是去关注所有历史数据,而是把注意力集中在那些与当前时刻处于同一相位的历史片段上。
自相关公式(RXX(τ)R_XX(\tau)RXX(τ)):
RXX(τ)=limL→∞1L∑t=1LXtXt−τ \mathcal{R}_{\mathcal{XX}}(\tau) = \lim_{L \to \infty} \frac{1}{L} \sum_{t=1}^{L} \mathcal{X}_t \mathcal{X}_{t-\tau}RXX(τ)=L→∞limL1t=1∑LXtXt−τ
τ\tauτ(Time Lag/Delay):这是一个滑动窗口的步长, 测试序列与其自身延迟了τ\tauτ步后的版本之间的关系。∑t=1LXtXt−τ\sum_{t=1}^{L} \mathcal{X}_t \mathcal{X}_{t-\tau}∑t=1LXtXt−τ是衡量两个序列的相似度,如果序列在滞后τ\tauτ时发生了重合(比如τ=24\tau=24τ=24小时),波峰对波峰,波谷对波谷,乘积均为正,总和(R\mathcal{R}R)就会非常大。如果τ\tauτ不是周期(比如τ=13\tau=13τ=13小时),波峰对波谷,正负相消,总和(R\mathcal{R}R)就会趋近于 0。R(τ)\mathcal{R}(\tau)R(τ)的值越大,说明τ\tauτ这个周期越“真实”,我们越应该信赖在这个滞后长度下的历史信息。
使用方式: 当计算出所有可能的**τ\tauτ对应的R(τ)\mathcal{R}(\tau)R(τ),从中只挑选出R(τ)\mathcal{R}(\tau)R(τ)最大的前k**(Top-K)个τ\tauτ, 根据R(τ)\mathcal{R}(\tau)R(τ)的大小,对找到的历史子序列进行加权,置信度越高,该周期的信息在预测未来时所占的权重就越大。
Autoformer的核心:时延信息聚合(Time delay aggregation)
为了实现序列级连接,我们需要将相似的子序列信息进行聚合。它使用Roll()操作替代传统的点对点矩阵。
在标准的 Self-Attention 中,我们通过计算QKTQK^TQKT来让每一个 Token 去“寻找”其他相关的 Token。 而在 Autoformer 中,既然我们已经计算出了最强的kkk个周期滞后τ1,…,τk\tau_1, \dots, \tau_kτ1,…,τk(比如昨天、上周、上个月),我们就需要把这些历史时刻的数据**“搬运”**到当前时刻来进行融合。
Roll 操作的物理含义:Roll(V,τ)Roll(V, \tau)Roll(V,τ)的意思是将整个序列VVV向右平移τ\tauτ个时间步。目的是把过去的数据搬运到当前的索引位置上。
AutoCorrelation(Q,K,V)=∑i=1kRoll(V,τi)R^Q,K(τi) \text{AutoCorrelation}(\mathcal{Q,K,V}) = \sum_{i=1}^{k} \text{Roll}(\mathcal{V}, \tau_i) \hat{\mathcal{R}}_{\mathcal{Q,K}}(\tau_i)AutoCorrelation(Q,K,V)=i=1∑kRoll(V,τi)R^Q,K(τi)
基于选择的周期性最强的k个进行聚合,将所有平移并加权后的序列叠加起来,得到最终的输出。实际上是在做多周期的特征融合。