摘要
变压器在时间序列预测中展示了强大的能力,得益于其全球范围建模的能力。然而,它们在非平稳的真实世界数据上性能可能会严重退化,在这些数据中联合分布随时间变化。先前的研究主要采用平稳化来削弱原始序列的非平稳性,以获得更好的可预测性。但被平稳化后失去固有非平稳性的序列对于真实世界突发事件的预测可能不太具有指导意义。本文将这一问题称为过度平稳化,导致变压器对不同序列生成难以区分的时间注意力,并且阻碍了深度模型的预测能力。为了解决序列可预测性和模型能力之间的两难,我们提出了非平稳变压器,作为一个包含两个相互依存模块的通用框架:序列平稳化和去平稳化注意力。具体而言,序列平稳化统一了每个输入的统计特性,并通过恢复的统计特性转换输出,以获得更好的可预测性。为了解决过度平稳化问题,去平稳化注意力旨在通过近似从原始序列学习的可区分注意力,恢复内在的非平稳信息到时间依赖性。我们的非平稳变压器框架显著提升了主流变压器的性能,大幅减少了均方误差(MSE),在Informer上减少了47.34%,在Reformer上减少了46.89%,使其成为时间序列预测领域的最新技术。代码可在以下仓库获取: https://github.com/thuml/Nonstationary_Transformers.
1 引言
时间序列预测在现实世界中的应用变得越来越普遍,如天气预报、能源消耗规划和金融风险评估。最近,变压器在广泛领域取得了渐进性突破,尤其是在时间序列预测中,归功于其堆叠结构和注意机制的能力,变压器能够自然地从深层次多级特征中捕捉时间依赖性,从而完美地适应时间序列预测任务。
尽管有显著的架构设计,变压器在预测现实世界时间序列时仍然面临挑战,因为数据的非平稳性。非平稳时间序列的特点是统计属性和联合分布随时间连续变化,这使得时间序列变得难以预测。此外,使深度模型能够在变化的分布上很好地泛化是一个基本问题。在之前的工作中,通常通过平稳化处理时间序列,以减弱原始时间序列的非平稳性,从而提高可预测性,并为深度模型提供更稳定的数据分布。
然而,非平稳性是现实世界时间序列的固有属性,对于发现预测的时间依赖性也具有良好的指导意义。实验表明,在平稳化序列上训练将削弱变压器学习到的注意力的区分性。普通变压器可以从不同序列中捕捉到不同的时间依赖性,而在平稳化序列上训练的变压器倾向于生成难以区分的注意力。这一问题被称为过度平稳化,将带来意外的副作用,使得变压器无法捕捉到事件性的时间依赖性,限制模型的预测能力,甚至导致模型生成的输出与真实值有巨大的非平稳性偏差。因此,如何在改善可预测性的同时减轻过度平稳化问题,是进一步提高预测性能的关键问题。
在本文中,我们探索了平稳化在时间序列预测中的效果,并提出了非平稳变压器作为一个通用框架,使变压器及其高效变体具有很好的现实世界时间序列预测能力。提出的框架包括两个相互依存的模块:序列平稳化以提高非平稳序列的可预测性和去平稳化注意力以减轻过度平稳化。技术上,序列平稳化采用一种简单但有效的归一化策略来统一每个序列的关键统计特性。去平稳化注意力近似原始序列的非平稳数据的注意力,补偿原始序列的内在非平稳性。受益于上述设计,非平稳变压器可以利用原始非平稳数据中发现的巨大可预测性和重要的时间依赖性。我们的方法在六个现实世界基准上达到了最新技术水平,并且可以推广到各种变压器以进一步改进。
我们的贡献在于三点:
- 我们明确了非平稳序列的预测能力在现实世界时间序列预测中的重要性。通过详细分析,我们发现当前的平稳化方法会导致过度平稳化问题,限制变压器的预测能力。
- 我们提出了非平稳变压器作为一个通用框架,包括序列平稳化以使序列更可预测和去平稳化注意力以避免过度平稳化问题,重新引入原始序列的非平稳性。
- 非平稳变压器显著提升了四个主流变压器的性能,在六个现实世界基准上实现了最新技术水平。
2 相关工作
2.1 时间序列预测的深度模型
近年来,具有精心设计架构的深度模型在时间序列预测中取得了巨大进展。基于RNN的模型被提出来用于序列建模中的自回归方法,但循环结构在建模长期依赖性方面可能会遇到问题。随后,变压器出现并展示了在序列建模中的强大能力。为了克服序列长度上计算量的平方增长,后续工作旨在降低自注意力机制的复杂性。尤其在时间序列预测中,Informer通过KL散度标准扩展自注意力以选择主要查询。Reformer通过引入局部敏感哈希来通过分配的相似查询近似注意力。除降低复杂性外,后续模型进一步开发了用于时间序列预测的精巧构建块。Autoformer融合了分解块成为一个规范结构,并开发了自动相关性来发现序列之间的连接。Pyraformer设计了金字塔注意力模块以捕捉不同层级的时间依赖性。其他深度但无变压器的模型也取得了显著的性能。N-BEATS提出了具有强解释性的趋势和季节项的显式分解。N-HiTS引入了层级布局和多速率采样来处理具有各自频带的时间序列。
在本文中,与以往注重架构设计的工作不同,我们从平稳性这一时间序列的基本属性出发,分析了时间序列预测任务。还值得注意的是,作为一个通用框架,我们提出的非平稳变压器可以轻松应用于各种基于变压器的模型。
2.2 时间序列预测的平稳化
虽然平稳性对于时间序列的可预测性非常重要,但现实世界的序列总是呈现非平稳性。为了解决这个问题,经典的统计方法ARIMA通过差分法对时间序列进行平稳化。对于深度模型,由于随分布变化而伴随的非平稳性问题使深度预测更加难以处理,平稳化方法被广泛探索并总是作为深度模型输入的预处理。自适应归一化对全局统计量进行z分数归一化,以适应时间序列片段。DAIN采用非线性神经网络来适应观测到的训练分布的时间序列。RevIN引入了一个两阶段的实例归一化,以分别减少每个序列的差异。
相较之下,我们发现直接对时间序列进行平稳化会损害模型建模特定时间依赖性的能力。因此,与以往的方法不同,非平稳变压器进一步发展了去平稳化注意力,将原始序列的内在非平稳性带回注意力中。
3 非平稳变压器
如前所述,平稳性是时间序列可预测性的一个重要元素。之前的“直接平稳化”设计可以减弱序列的非平稳性以提高可预测性,但它们显然忽略了现实世界序列的固有属性,这将导致图1所示的过度平稳化问题。为了解决这一困境,我们超越了以往的工作,提出了非平稳变压器作为一个通用框架。我们的模型包括两个互补的部分:序列平稳化以减弱时间序列的非平稳性和去平稳化注意力以重新引入原始序列的非平稳信息。通过这些设计,非平稳变压器可以同时提高数据的可预测性和维持模型能力。
3.1 序列平稳化
非平稳时间序列使得深度模型的预测任务变得难以处理,因为它们很难在推理过程中泛化到具有变化统计量的序列,通常是变化的均值和标准差。初步工作RevIN应用具有可学习仿射参数的实例归一化到每个输入,并将统计量恢复到相应的输出,使得每个序列遵循类似的分布。实验表明,这种设计在没有可学习参数的情况下也能很好地工作。因此,我们提出了一种更直接但有效的设计来包装变压器作为基础模型,不需要额外参数,命名为序列平稳化。如图2所示,它包含两个相应的操作:首先是归一化模块,以处理由于均值和标准差变化引起的非平稳序列,最后是去归一化模块,以将模型输出转换回原始统计量。以下是详细信息。
归一化模块 为了减弱每个输入序列的非平稳性,我们在时间维度上通过滑动窗口进行归一化。对于每个输入序列,我们通过平移和缩放操作进行转换,得到 x ′ = [ x 1 ′ , x 2 ′ , . . . , x S ′ ] T x' = [x'_1, x'_2, ..., x'_S]^T x′=[x1′,x2′,...,xS′]T,其中 S S S和 C C C分别表示序列长度和变量数量。归一化模块的公式如下:
μ x = 1 S ∑ i = 1 S x i , σ x 2 = 1 S ∑ i = 1 S ( x i − μ x ) 2 , x i ′ = 1 σ x ⊙ ( x i − μ x ) , \mu_x = \frac{1}{S} \sum_{i=1}^{S} x_i, \quad \sigma^2_x = \frac{1}{S} \sum_{i=1}^{S} (x_i - \mu_x)^2, \quad x'_i = \frac{1}{\sigma_x} \odot (x_i - \mu_x), μx=S1i=1∑Sxi,σx2=S1i=1∑S(xi−μx)2,xi′=σx1⊙(xi−μx),
其中 μ x , σ x ∈ R C × 1 \mu_x, \sigma_x \in \mathbb{R}^{C \times 1} μx,σx∈RC×1, 1 σ x \frac{1}{\sigma_x} σx1表示按元素除法, ⊙ \odot ⊙是按元素乘法。注意,归一化模块减少了每个输入时间序列之间的分布差异,使模型输入的分布更加稳定。
去归一化模块 如图2所示,在基础模型 H \mathcal{H} H预测出长度为 O O O的未来值后,我们采用去归一化来转换模型输出 y ′ = [ y 1 ′ , y 2 ′ , . . . , y O ′ ] T ∈ R O × C y' = [y'_1, y'_2, ..., y'_O]^T \in \mathbb{R}^{O \times C} y′=[y1′,y2′,...,yO′]T∈RO×C,并得到 y ^ = [ y ^ 1 , y ^ 2 , . . . , y ^ O ] T \hat{y} = [\hat{y}_1, \hat{y}_2, ..., \hat{y}_O]^T y^=[y^1,y^2,...,y^O]T作为最终的预测结果。去归一化模块的公式如下:
y ′ = H ( x ′ ) , y ^ i = σ x ⊙ ( y i ′ + μ x ) . y' = \mathcal{H}(x'), \quad \hat{y}_i = \sigma_x \odot (y'_i + \mu_x). y′=H(x′),y^i=σx⊙(yi′+μx).
通过两阶段转换,基础模型将接收到平稳化的输入,遵循稳定的分布,更容易泛化。这种设计还使得模型对时间序列的平移和缩放扰动具有等变性,从而有利于现实世界序列的预测。
3.2 去平稳化注意力
虽然每个时间序列的统计量被明确地恢复到相应的预测中,但原始序列的非平稳性不能仅通过去归一化完全恢复。例如,序列平稳化可以从不同的时间序列 x 1 , x 2 \mathbf{x}_1, \mathbf{x}_2 x1,x2(即 x 2 = α x 1 + β \mathbf{x}_2 = \alpha \mathbf{x}_1 + \beta x2=αx1+β)生成相同的平稳化输入 x ′ \mathbf{x}' x′,而基础模型将获得相同的注意力,无法捕捉到与非平稳性相关的重要时间依赖性(如图1所示)。换句话说,由过度平稳化引起的副作用发生在深度模型内部,特别是在注意力的计算中。此外,非平稳时间序列被分割并归一化为多个具有相同均值和方差的序列块,这些序列块比平稳化前的原始数据遵循更相似的分布。因此,模型更有可能生成过度平稳和无事件的输出,这与原始序列的自然非平稳性不一致。
为了解决由序列平稳化引起的过度平稳化问题,我们提出了一种新的去平稳化注意力机制,该机制可以近似在没有平稳化的情况下获得的注意力,并从原始非平稳数据中发现特定的时间依赖性。
基础模型分析 如上所述,过度平稳化问题是由于固有非平稳信息的消失引起的,这将使基础模型无法捕捉预测所需的重要时间依赖性。因此,我们尝试近似从原始非平稳序列中学习的注意力。我们从自注意力的公式开始:
Attn ( Q , K , V ) = Softmax ( Q K ⊤ d k ) V , \text{Attn}(\mathbf{Q}, \mathbf{K}, \mathbf{V}) = \text{Softmax}\left(\frac{\mathbf{Q}\mathbf{K}^\top}{\sqrt{d_k}}\right) \mathbf{V}, Attn(Q,K,V)=Softmax(dkQK⊤)V,
其中 Q , K , V ∈ R S × d k \mathbf{Q}, \mathbf{K}, \mathbf{V} \in \mathbb{R}^{S \times d_k} Q,K,V∈RS×dk分别是长度为 S S S的查询、键和值,Softmax(\cdot) 按行进行。为了简化分析,我们假设嵌入层和前馈层 f f f保持线性属性,并且 f f f分别在每个时间点上进行,即查询 Q \mathbf{Q} Q中的每个查询标记 q i \mathbf{q}_i qi可以根据输入序列 x = [ x 1 , x 2 , ⋯ , x S ] ⊤ \mathbf{x} = [\mathbf{x}_1, \mathbf{x}_2, \cdots, \mathbf{x}_S]^\top x=[x1,x2,⋯,xS]⊤计算为 q i = f ( x i ) \mathbf{q}_i = f(\mathbf{x}_i) qi=f(xi)。由于对每个时间序列变量进行归一化是常规做法,以避免某个变量在缩放中占主导地位,我们可以进一步假设每个序列变量 x \mathbf{x} x具有相同的方差,因此原始 σ x ∈ R C × 1 \sigma_x \in \mathbb{R}^{C \times 1} σx∈RC×1简化为一个标量。归一化模块之后,模型接收到平稳化输入 x ′ = ( x − 1 μ x ⊤ ) / σ x \mathbf{x}' = (\mathbf{x} - 1 \mu_x^\top)/\sigma_x x′=(x−1μx⊤)/σx,其中 1 ∈ R S × 1 1 \in \mathbb{R}^{S \times 1} 1∈RS×1是全1向量。基于线性属性假设,可以证明注意力层将接收 Q ′ = [ f ( x 1 ′ ) , ⋯ , f ( x S ′ ) ] ⊤ = ( Q − 1 μ Q ⊤ ) / σ x \mathbf{Q}' = [f(\mathbf{x}'_1), \cdots, f(\mathbf{x}'_S)]^\top = (\mathbf{Q} - 1 \mu_{\mathbf{Q}}^\top)/\sigma_x Q′=[f(x1′),⋯,f(xS′)]⊤=(Q−1μQ⊤)/σx,其中 μ Q ∈ R d k × 1 \mu_{\mathbf{Q}} \in \mathbb{R}^{d_k \times 1} μQ∈Rdk×1是 Q \mathbf{Q} Q在时间维度上的均值(详细证明见附录A)。而且,Softmax(\cdot) 中的对应转换后的 K ′ , V ′ \mathbf{K}', \mathbf{V}' K′,V′也如此。没有序列平稳化,Softmax(\cdot) 中的自注意力输入应为 Q K ⊤ / d k \mathbf{QK}^\top/\sqrt{d_k} QK⊤/dk,而现在的注意力基于 Q ′ , K ′ \mathbf{Q}', \mathbf{K}' Q′,K′计算:
Q ′ K ′ ⊤ = 1 σ x 2 ( Q K ⊤ − 1 ( μ Q K ⊤ ) − ( Q μ K ⊤ ) 1 ⊤ + 1 ( μ Q μ K ⊤ ) 1 ⊤ ) , \mathbf{Q}' \mathbf{K}'^\top = \frac{1}{\sigma_x^2} \left( \mathbf{QK}^\top - 1 (\mu_{\mathbf{Q}} \mathbf{K}^\top) - (\mathbf{Q} \mu_{\mathbf{K}}^\top) 1^\top + 1 (\mu_{\mathbf{Q}} \mu_{\mathbf{K}}^\top) 1^\top \right), Q′K′⊤=σx21(QK⊤−1(μQK⊤)−(QμK⊤)1⊤+1(μQμK⊤)1⊤),
Softmax ( Q K ⊤ d k ) = Softmax ( σ x 2 Q ′ K ′ ⊤ + 1 ( μ Q μ K ⊤ ) d k ) . \text{Softmax}\left( \frac{\mathbf{QK}^\top}{\sqrt{d_k}} \right) = \text{Softmax}\left( \frac{\sigma_x^2 \mathbf{Q}' \mathbf{K}'^\top + 1 (\mu_{\mathbf{Q}} \mu_{\mathbf{K}}^\top)}{\sqrt{d_k}} \right). Softmax(dkQK⊤)=Softmax(dkσx2Q′K′⊤+1(μQμK⊤)).
我们发现 Q μ K ∈ R S × 1 \mathbf{Q} \mu_{\mathbf{K}} \in \mathbb{R}^{S \times 1} QμK∈RS×1和 μ Q μ K ⊤ ∈ R \mu_{\mathbf{Q}} \mu_{\mathbf{K}}^\top \in \mathbb{R} μQμK⊤∈R,它们分别在每一列和输入的行维度上重复操作。由于Softmax(\cdot) 对输入行维度上的相同平移不变,我们得到以下公式:
Softmax ( Q K ⊤ d k ) = Softmax ( σ x 2 Q ′ K ′ ⊤ + 1 ( μ Q μ K ⊤ ) d k ) . \text{Softmax}\left( \frac{\mathbf{QK}^\top}{\sqrt{d_k}} \right) = \text{Softmax}\left( \frac{\sigma_x^2 \mathbf{Q}' \mathbf{K}'^\top + 1 (\mu_{\mathbf{Q}} \mu_{\mathbf{K}}^\top)}{\sqrt{d_k}} \right). Softmax(dkQK⊤)=Softmax(dkσx2Q′K′⊤+1(μQμK⊤)).
方程5推导出从原始序列 x \mathbf{x} x中学习的注意力 Softmax ( Q K ⊤ / d k ) \text{Softmax}\left( \mathbf{QK}^\top/\sqrt{d_k} \right) Softmax(QK⊤/dk)的直接表达式。除当前的 Q ′ , K ′ \mathbf{Q}', \mathbf{K}' Q′,K′来自平稳化序列 x ′ \mathbf{x}' x′外,该表达式还需要由序列平稳化消除的非平稳信息 σ x , μ Q , K \sigma_x, \mu_{\mathbf{Q}}, \mathbf{K} σx,μQ,K。
去平稳化注意力 为了恢复对非平稳序列的原始注意力,我们尝试将消失的非平稳信息带回计算中。基于方程5,关键是近似正的缩放标量 τ = σ x 2 ∈ R + \tau = \sigma_x^2 \in \mathbb{R}^+ τ=σx2∈R+和移位向量 Δ = K μ Q ∈ R S × 1 \Delta = \mathbf{K} \mu_{\mathbf{Q}} \in \mathbb{R}^{S \times 1} Δ=KμQ∈RS×1,定义为去平稳因子。由于严格的线性属性对于深度模型很难成立,而直接从未经平稳化的 x , Q , K \mathbf{x}, \mathbf{Q}, \mathbf{K} x,Q,K的统计数据中估计和利用真实因子非常费力,我们尝试通过一个简单但有效的多层感知器层来学习去平稳因子。由于我们只能从当前的 Q ′ , K ′ \mathbf{Q}', \mathbf{K}' Q′,K′中发现有限的非平稳信息,唯一合理的补偿非平稳性的来源是未经平稳化的原始 x \mathbf{x} x。因此,作为方程5的直接深度学习实现,我们应用一个多层感知器作为投影器,从未经平稳化的 x \mathbf{x} x的统计数据 μ x , σ x \mu_x, \sigma_x μx,σx中学习去平稳因子 τ , Δ \tau, \Delta τ,Δ:
log τ = MLP ( σ x , x ) , Δ = MLP ( μ x , x ) , \log \tau = \text{MLP}(\sigma_x, \mathbf{x}), \quad \Delta = \text{MLP}(\mu_x, \mathbf{x}), logτ=MLP(σx,x),Δ=MLP(μx,x),
Attn ( Q ′ , K ′ , V ′ , τ , Δ ) = Softmax ( τ Q ′ K ′ ⊤ + 1 Δ ⊤ d k ) V ′ , \text{Attn}(\mathbf{Q}', \mathbf{K}', \mathbf{V}', \tau, \Delta) = \text{Softmax}\left( \frac{\tau \mathbf{Q}' \mathbf{K}'^\top + 1 \Delta^\top}{\sqrt{d_k}} \right) \mathbf{V}', Attn(Q′,K′,V′,τ,Δ)=Softmax(dkτQ′K′⊤+1Δ⊤)V′,
其中去平稳因子 τ \tau τ和 Δ \Delta Δ由所有层的去平稳化注意力共享(图2)。去平稳化注意力机制从平稳化序列 Q ′ , K ′ \mathbf{Q}', \mathbf{K}' Q′,K′和非平稳序列 x , μ x , σ x \mathbf{x}, \mu_x, \sigma_x x,μx,σx学习时间依赖性,并与平稳化值 V ′ \mathbf{V}' V′相乘。因此,它可以从平稳化序列的可