首页 > 其他分享 >Non-stationary Transformers: Exploring the Stationarity in Time Series Forecasting

Non-stationary Transformers: Exploring the Stationarity in Time Series Forecasting

时间:2024-07-05 09:26:34浏览次数:15  
标签:Exploring Non Transformers 平稳 mu 归一化 序列 mathbf 注意力

文章目录

摘要

变压器在时间序列预测中展示了强大的能力,得益于其全球范围建模的能力。然而,它们在非平稳的真实世界数据上性能可能会严重退化,在这些数据中联合分布随时间变化。先前的研究主要采用平稳化来削弱原始序列的非平稳性,以获得更好的可预测性。但被平稳化后失去固有非平稳性的序列对于真实世界突发事件的预测可能不太具有指导意义。本文将这一问题称为过度平稳化,导致变压器对不同序列生成难以区分的时间注意力,并且阻碍了深度模型的预测能力。为了解决序列可预测性和模型能力之间的两难,我们提出了非平稳变压器,作为一个包含两个相互依存模块的通用框架:序列平稳化和去平稳化注意力。具体而言,序列平稳化统一了每个输入的统计特性,并通过恢复的统计特性转换输出,以获得更好的可预测性。为了解决过度平稳化问题,去平稳化注意力旨在通过近似从原始序列学习的可区分注意力,恢复内在的非平稳信息到时间依赖性。我们的非平稳变压器框架显著提升了主流变压器的性能,大幅减少了均方误差(MSE),在Informer上减少了47.34%,在Reformer上减少了46.89%,使其成为时间序列预测领域的最新技术。代码可在以下仓库获取: https://github.com/thuml/Nonstationary_Transformers.

1 引言

时间序列预测在现实世界中的应用变得越来越普遍,如天气预报、能源消耗规划和金融风险评估。最近,变压器在广泛领域取得了渐进性突破,尤其是在时间序列预测中,归功于其堆叠结构和注意机制的能力,变压器能够自然地从深层次多级特征中捕捉时间依赖性,从而完美地适应时间序列预测任务。

尽管有显著的架构设计,变压器在预测现实世界时间序列时仍然面临挑战,因为数据的非平稳性。非平稳时间序列的特点是统计属性和联合分布随时间连续变化,这使得时间序列变得难以预测。此外,使深度模型能够在变化的分布上很好地泛化是一个基本问题。在之前的工作中,通常通过平稳化处理时间序列,以减弱原始时间序列的非平稳性,从而提高可预测性,并为深度模型提供更稳定的数据分布。

然而,非平稳性是现实世界时间序列的固有属性,对于发现预测的时间依赖性也具有良好的指导意义。实验表明,在平稳化序列上训练将削弱变压器学习到的注意力的区分性。普通变压器可以从不同序列中捕捉到不同的时间依赖性,而在平稳化序列上训练的变压器倾向于生成难以区分的注意力。这一问题被称为过度平稳化,将带来意外的副作用,使得变压器无法捕捉到事件性的时间依赖性,限制模型的预测能力,甚至导致模型生成的输出与真实值有巨大的非平稳性偏差。因此,如何在改善可预测性的同时减轻过度平稳化问题,是进一步提高预测性能的关键问题

在本文中,我们探索了平稳化在时间序列预测中的效果,并提出了非平稳变压器作为一个通用框架,使变压器及其高效变体具有很好的现实世界时间序列预测能力。提出的框架包括两个相互依存的模块:序列平稳化以提高非平稳序列的可预测性和去平稳化注意力以减轻过度平稳化。技术上,序列平稳化采用一种简单但有效的归一化策略来统一每个序列的关键统计特性。去平稳化注意力近似原始序列的非平稳数据的注意力,补偿原始序列的内在非平稳性。受益于上述设计,非平稳变压器可以利用原始非平稳数据中发现的巨大可预测性和重要的时间依赖性。我们的方法在六个现实世界基准上达到了最新技术水平,并且可以推广到各种变压器以进一步改进。

我们的贡献在于三点:

  • 我们明确了非平稳序列的预测能力在现实世界时间序列预测中的重要性。通过详细分析,我们发现当前的平稳化方法会导致过度平稳化问题,限制变压器的预测能力。
  • 我们提出了非平稳变压器作为一个通用框架,包括序列平稳化以使序列更可预测和去平稳化注意力以避免过度平稳化问题,重新引入原始序列的非平稳性。
  • 非平稳变压器显著提升了四个主流变压器的性能,在六个现实世界基准上实现了最新技术水平。
    在这里插入图片描述
    图 1:对具有不同均值 μ \mu μ和标准差 σ \sigma σ 的不同序列的学习时间注意力的可视化。(a) 是从在原始序列上训练的基础变压器 [34] 获得的。(b) 是从在平稳化序列上训练的变压器中获得的,展示了相似的注意力。© 是从非平稳变压器中获得的,包含去平稳化注意力以避免过度平稳化。

2 相关工作

2.1 时间序列预测的深度模型

近年来,具有精心设计架构的深度模型在时间序列预测中取得了巨大进展。基于RNN的模型被提出来用于序列建模中的自回归方法,但循环结构在建模长期依赖性方面可能会遇到问题。随后,变压器出现并展示了在序列建模中的强大能力。为了克服序列长度上计算量的平方增长,后续工作旨在降低自注意力机制的复杂性。尤其在时间序列预测中,Informer通过KL散度标准扩展自注意力以选择主要查询。Reformer通过引入局部敏感哈希来通过分配的相似查询近似注意力。除降低复杂性外,后续模型进一步开发了用于时间序列预测的精巧构建块。Autoformer融合了分解块成为一个规范结构,并开发了自动相关性来发现序列之间的连接。Pyraformer设计了金字塔注意力模块以捕捉不同层级的时间依赖性。其他深度但无变压器的模型也取得了显著的性能。N-BEATS提出了具有强解释性的趋势和季节项的显式分解。N-HiTS引入了层级布局和多速率采样来处理具有各自频带的时间序列。

在本文中,与以往注重架构设计的工作不同,我们从平稳性这一时间序列的基本属性出发,分析了时间序列预测任务。还值得注意的是,作为一个通用框架,我们提出的非平稳变压器可以轻松应用于各种基于变压器的模型。

2.2 时间序列预测的平稳化

虽然平稳性对于时间序列的可预测性非常重要,但现实世界的序列总是呈现非平稳性。为了解决这个问题,经典的统计方法ARIMA通过差分法对时间序列进行平稳化。对于深度模型,由于随分布变化而伴随的非平稳性问题使深度预测更加难以处理,平稳化方法被广泛探索并总是作为深度模型输入的预处理。自适应归一化对全局统计量进行z分数归一化,以适应时间序列片段。DAIN采用非线性神经网络来适应观测到的训练分布的时间序列。RevIN引入了一个两阶段的实例归一化,以分别减少每个序列的差异。

相较之下,我们发现直接对时间序列进行平稳化会损害模型建模特定时间依赖性的能力。因此,与以往的方法不同,非平稳变压器进一步发展了去平稳化注意力,将原始序列的内在非平稳性带回注意力中。

在这里插入图片描述
跳转按钮
图 2:非平稳变压器。序列平稳化作为包装器应用于基础模型,以归一化每个传入的序列并对输出进行去归一化。去平稳化注意力替代了原始注意力机制,以近似从未平稳化序列中学习到的注意力,它通过学习的去平稳因子 τ \tau τ和 Δ \Delta Δ 重新调整当前时间依赖性的权重。

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​=S1​i=1∑S​xi​,σx2​=S1​i=1∑S​(xi​−μx​)2,xi′​=σx​1​⊙(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} σx​1​表示按元素除法, ⊙ \odot ⊙是按元素乘法。注意,归一化模块减少了每个输入时间序列之间的分布差异,使模型输入的分布更加稳定。

详细解释

为了减弱每个输入序列的非平稳性,我们在时间维度上通过滑动窗口进行归一化。具体步骤如下:

  1. 平移和缩放操作:对于每个输入序列,我们通过计算其均值和标准差,进行平移(减去均值)和缩放(除以标准差)操作,使其归一化为具有相似统计特性的序列。

  2. 公式描述

    • 设输入序列为 x = [ x 1 , x 2 , … , x S ] T x = [x_1, x_2, \ldots, x_S]^T x=[x1​,x2​,…,xS​]T,其中 S S S表示序列长度, C C C表示变量数量。
    • 归一化后的序列为 x ′ = [ x 1 ′ , x 2 ′ , … , x S ′ ] T x' = [x'_1, x'_2, \ldots, x'_S]^T x′=[x1′​,x2′​,…,xS′​]T。
  3. 计算步骤

    • 首先计算输入序列的均值 μ x \mu_x μx​和方差 σ x 2 \sigma_x^2 σx2​:
      μ x = 1 S ∑ i = 1 S x i \mu_x = \frac{1}{S} \sum_{i=1}^{S} x_i μx​=S1​i=1∑S​xi​
      σ x 2 = 1 S ∑ i = 1 S ( x i − μ x ) 2 \sigma_x^2 = \frac{1}{S} \sum_{i=1}^{S} (x_i - \mu_x)^2 σx2​=S1​i=1∑S​(xi​−μx​)2
    • 然后将每个输入值进行平移和缩放操作,得到归一化后的值 x i ′ x'_i xi′​:
      x i ′ = 1 σ x ⊙ ( x i − μ x ) x'_i = \frac{1}{\sigma_x} \odot (x_i - \mu_x) xi′​=σx​1​⊙(xi​−μx​)
  4. 符号说明

    • μ 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} σx​1​表示按元素除法。
    • ⊙ \odot ⊙是按元素乘法。
  5. 效果

    • 归一化模块减少了每个输入时间序列之间的分布差异,使模型输入的分布更加稳定,有助于模型在处理不同时间序列时具有更好的泛化能力。

示例说明
假设我们有一个时间序列 x = [ 2 , 4 , 6 , 8 , 10 ] x = [2, 4, 6, 8, 10] x=[2,4,6,8,10],其均值 μ x = 6 \mu_x = 6 μx​=6,标准差 σ x = 2.83 \sigma_x = 2.83 σx​=2.83(近似值)。通过归一化操作,我们得到新的序列 x ′ = [ − 1.41 , − 0.71 , 0 , 0.71 , 1.41 ] x' = [-1.41, -0.71, 0, 0.71, 1.41] x′=[−1.41,−0.71,0,0.71,1.41]。这使得新的序列具有均值为0,标准差为1,更加稳定。

去归一化模块 如图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​).

通过两阶段转换,基础模型将接收到平稳化的输入,遵循稳定的分布,更容易泛化。这种设计还使得模型对时间序列的平移和缩放扰动具有等变性,从而有利于现实世界序列的预测。

详细解释

去归一化模块的目的是在模型预测出未来值之后,将其转换回原始统计特性,使得预测结果在现实世界中具有更好的可解释性和有效性。具体步骤如下:

  1. 模型预测输出

    • 基础模型 H \mathcal{H} H预测出长度为 O O O的未来值,表示为 y ′ = [ y 1 ′ , y 2 ′ , … , y O ′ ] T ∈ R O × C y' = [y'_1, y'_2, \ldots, y'_O]^T \in \mathbb{R}^{O \times C} y′=[y1′​,y2′​,…,yO′​]T∈RO×C,其中 O O O表示预测的时间步数, C C C表示变量数量。
  2. 去归一化操作

    • 为了将模型输出 y ′ y' y′转换回原始数据的统计特性,我们采用去归一化操作,将 y ′ y' y′转换为 y ^ = [ y ^ 1 , y ^ 2 , … , y ^ O ] T \hat{y} = [\hat{y}_1, \hat{y}_2, \ldots, \hat{y}_O]^T y^​=[y^​1​,y^​2​,…,y^​O​]T,作为最终的预测结果。
  3. 公式描述

    • 预测值 y ′ y' y′通过去归一化操作转换为最终结果 y ^ \hat{y} y^​,公式如下:
      y ^ i = σ x ⊙ ( y i ′ + μ x ) \hat{y}_i = \sigma_x \odot (y'_i + \mu_x) y^​i​=σx​⊙(yi′​+μx​)
      其中, μ x \mu_x μx​是输入序列的均值, σ x \sigma_x σx​是输入序列的标准差, ⊙ \odot ⊙表示按元素相乘。
  4. 符号说明

    • μ x , σ x ∈ R C × 1 \mu_x, \sigma_x \in \mathbb{R}^{C \times 1} μx​,σx​∈RC×1,分别表示均值和标准差。
    • σ x \sigma_x σx​表示按元素相乘的缩放因子。
    • y i ′ y'_i yi′​表示模型的预测输出。
    • y ^ i \hat{y}_i y^​i​表示最终去归一化后的预测结果。
  5. 效果

    • 通过去归一化操作,模型的预测结果会重新调整回原始数据的统计特性,确保输出的预测结果具有实际意义。
    • 这种设计还使得模型对时间序列的平移和缩放扰动具有等变性,从而有利于现实世界序列的预测。

示例说明
假设模型预测输出 y ′ = [ 0.5 , 0.7 , 1.2 ] y' = [0.5, 0.7, 1.2] y′=[0.5,0.7,1.2],输入序列的均值 μ x = 3 \mu_x = 3 μx​=3,标准差 σ x = 2 \sigma_x = 2 σx​=2。通过去归一化操作,我们得到最终的预测结果 y ^ = [ 4 , 4.4 , 5.4 ] \hat{y} = [4, 4.4, 5.4] y^​=[4,4.4,5.4]。这种转换确保了模型输出能够符合输入数据的实际分布。

总结
通过这两阶段的转换(归一化和去归一化),基础模型将接收到平稳化的输入,这些输入遵循稳定的分布,更容易泛化。同时,去归一化使得模型的输出能够恢复到原始数据的统计特性,从而更适用于现实世界的时间序列预测。这种设计确保了模型的预测结果在处理不同时间序列时能够保持准确性和稳定性。

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(dk​ ​QK⊤​)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的查询、键和值, S o f t m a x ( ⋅ ) Softmax(\cdot) Softmax(⋅) 按行进行。为了简化分析,我们假设嵌入层和前馈层 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)。而且, S o f t m a x ( ⋅ ) Softmax(\cdot) Softmax(⋅) 中的对应转换后的 K ′ , V ′ \mathbf{K}', \mathbf{V}' K′,V′也如此。没有序列平稳化, S o f t m a x ( ⋅ ) Softmax(\cdot) Softmax(⋅) 中的自注意力输入应为 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′⊤=σx2​1​(QK⊤−1(μQ​K⊤)−(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(dk​ ​QK⊤​)=Softmax(dk​ ​σx2​Q′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,它们分别在每一列和输入的行维度上重复操作。由于 S o f t m a x ( ⋅ ) Softmax(\cdot) Softmax(⋅) 对输入行维度上的相同平移不变,我们得到以下公式:

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(dk​ ​QK⊤​)=Softmax(dk​ ​σx2​Q′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′相乘。因此,它可以同时受益于平稳化序列的可预测性并保持原始序列的固有时间依赖性。

总体架构

按照之前在时间序列预测中使用变压器[39, 37]的方法,我们采用标准的编码器-解码器结构(图2所示),其中编码器用于从过去的观测中提取信息,解码器用于聚合过去的信息并从简单的初始化中细化预测。标准的非平稳变压器通过序列平稳化模块包裹在基础变压器[34]的输入和输出上,并通过我们提出的去平稳化注意力替换自注意力,这可以提升基础模型的非平稳序列预测能力。对于变压器的变种[19, 39, 37],我们在Softmax( ⋅ \cdot ⋅)中的项上应用去平稳化因子 τ \tau τ和 Δ \Delta Δ,以重新整合非平稳信息(具体实现细节见附录E.2)。

准时跳到!!!! **公式推导详解**

我们从归一化操作开始,逐步推导出注意力矩阵 Q ′ \mathbf{Q'} Q′的归一化公式。

1. 归一化操作

假设输入序列为 x = [ x 1 , x 2 , … , x S ] T \mathbf{x} = [\mathbf{x}_1, \mathbf{x}_2, \ldots, \mathbf{x}_S]^T x=[x1​,x2​,…,xS​]T,我们希望将其归一化为 x ′ = ( x − 1 μ x ⊤ ) / σ x \mathbf{x}' = (\mathbf{x} - 1\mu_x^\top)/\sigma_x x′=(x−1μx⊤​)/σx​。

其中:

  • μ x ∈ R C × 1 \mu_x \in \mathbb{R}^{C \times 1} μx​∈RC×1:均值向量,表示每个特征的均值。
  • σ x ∈ R C × 1 \sigma_x \in \mathbb{R}^{C \times 1} σx​∈RC×1:标准差向量,表示每个特征的标准差。
  • 1 ∈ R S × 1 1 \in \mathbb{R}^{S \times 1} 1∈RS×1:全1向量,用于在时间维度上进行广播。

2. 输入序列的归一化

归一化后的序列为:
x ′ = x − 1 μ x ⊤ σ x \mathbf{x}' = \frac{\mathbf{x} - 1\mu_x^\top}{\sigma_x} x′=σx​x−1μx⊤​​

这是对输入序列 x \mathbf{x} x的每个元素进行的归一化操作,使其均值为0,方差为1。

3. 计算查询矩阵 Q \mathbf{Q} Q

假设查询矩阵 Q \mathbf{Q} Q是通过某个线性变换 f ( ⋅ ) f(\cdot) f(⋅)作用在输入序列 x \mathbf{x} x上得到的:
Q = [ f ( x 1 ) , f ( x 2 ) , … , f ( x S ) ] T \mathbf{Q} = [f(\mathbf{x}_1), f(\mathbf{x}_2), \ldots, f(\mathbf{x}_S)]^T Q=[f(x1​),f(x2​),…,f(xS​)]T

我们需要将这个公式应用到归一化后的序列 x ′ \mathbf{x}' x′上。也就是说,我们需要计算:
Q ′ = [ f ( x 1 ′ ) , f ( x 2 ′ ) , … , f ( x S ′ ) ] T \mathbf{Q'} = [f(\mathbf{x}'_1), f(\mathbf{x}'_2), \ldots, f(\mathbf{x}'_S)]^T Q′=[f(x1′​),f(x2′​),…,f(xS′​)]T

4. 线性变换 f f f的作用

假设 f ( ⋅ ) f(\cdot) f(⋅)是一个线性变换,这意味着对于任意向量 a \mathbf{a} a和标量 β \beta β,都有:
f ( α a + β ) = α f ( a ) + f ( β ) f(\alpha \mathbf{a} + \beta) = \alpha f(\mathbf{a}) + f(\beta) f(αa+β)=αf(a)+f(β)

应用到归一化后的序列上,我们得到:
Q ′ = f ( x − 1 μ x ⊤ σ x ) \mathbf{Q'} = f\left(\frac{\mathbf{x} - 1\mu_x^\top}{\sigma_x}\right) Q′=f(σx​x−1μx⊤​​)

5. 归一化后的查询矩阵 Q ′ \mathbf{Q'} Q′

将线性变换 f f f分别应用到每个元素上,我们有:
Q ′ = 1 σ x [ f ( x ) − f ( 1 μ x ⊤ ) ] \mathbf{Q'} = \frac{1}{\sigma_x} \left[f(\mathbf{x}) - f(1\mu_x^\top)\right] Q′=σx​1​[f(x)−f(1μx⊤​)]

因为 μ x \mu_x μx​是常量,所以 f ( 1 μ x ⊤ ) f(1\mu_x^\top) f(1μx⊤​)可以表示为 1 f ( μ x ⊤ ) 1 f(\mu_x^\top) 1f(μx⊤​)。因此,我们可以将其简化为:
Q ′ = 1 σ x [ Q − 1 f ( μ x ⊤ ) ] \mathbf{Q'} = \frac{1}{\sigma_x} \left[\mathbf{Q} - 1 f(\mu_x^\top)\right] Q′=σx​1​[Q−1f(μx⊤​)]

将 f ( μ x ⊤ ) f(\mu_x^\top) f(μx⊤​)简化为 μ Q \mu_{\mathbf{Q}} μQ​,得到最终的归一化后的查询矩阵公式:
Q ′ = Q − 1 μ Q ⊤ σ x \mathbf{Q'} = \frac{\mathbf{Q} - 1\mu_{\mathbf{Q}}^\top}{\sigma_x} Q′=σx​Q−1μQ⊤​​

6. 解释

  • Q ′ \mathbf{Q'} Q′是归一化后的查询矩阵。
  • Q \mathbf{Q} Q是原始查询矩阵。
  • 1 ∈ R S × 1 1 \in \mathbb{R}^{S \times 1} 1∈RS×1是全1向量,用于广播均值向量。
  • μ Q ∈ R d k × 1 \mu_{\mathbf{Q}} \in \mathbb{R}^{d_k \times 1} μQ​∈Rdk​×1是 Q \mathbf{Q} Q在时间维度上的均值。
  • σ x ∈ R C × 1 \sigma_x \in \mathbb{R}^{C \times 1} σx​∈RC×1是输入序列的标准差。

通过上述步骤,我们从归一化操作开始,逐步推导出查询矩阵 Q \mathbf{Q} Q在归一化后的表达形式。这解释了为什么归一化后的 x ′ \mathbf{x'} x′符合公式 ( x − 1 μ x ⊤ ) / σ x (\mathbf{x} - 1\mu_x^\top)/\sigma_x (x−1μx⊤​)/σx​。

准时跳到!!!!

这张图展示了非平稳变压器(Non-stationary Transformers)的架构,包括数据处理的各个阶段和相关的模块。我们将详细解释图中的流程及用到的知识。

整体流程

  1. 输入数据 ( x \mathbf{x} x)

    • 原始输入序列 x \mathbf{x} x经过归一化处理,生成归一化后的序列 x ′ \mathbf{x'} x′。
  2. 归一化 (Normalization)

    • 归一化模块将输入序列 x \mathbf{x} x转换为均值为0,方差为1的标准化序列 x ′ \mathbf{x'} x′,以及计算得到均值 μ x \mu_x μx​和标准差 σ x \sigma_x σx​。
  3. 嵌入层 (Embedding)

    • 归一化后的序列 x ′ \mathbf{x'} x′通过嵌入层,生成输入嵌入 H \mathbf{H} H。
  4. 编码器 (Encoder) 和解码器 (Decoder)

    • 编码器从过去的观测值中提取信息,解码器聚合这些信息并进行预测。
  5. 去归一化 (De-normalization)

    • 解码器输出预测值 y ′ \mathbf{y'} y′,通过去归一化模块恢复到原始尺度,得到最终预测结果 y \mathbf{y} y。

模块详解

1. 归一化模块 (Normalization)

  • 输入:原始序列 x \mathbf{x} x、均值 μ x \mu_x μx​、标准差 σ x \sigma_x σx​。
  • 输出:归一化序列 x ′ \mathbf{x'} x′。
  • 公式:
    x ′ = x − 1 μ x ⊤ σ x \mathbf{x'} = \frac{\mathbf{x} - 1\mu_x^\top}{\sigma_x} x′=σx​x−1μx⊤​​

2. 投影器 (Projector)

  • 通过多层感知器 (MLP) 学习去平稳化因子 τ \tau τ和 Δ \Delta Δ。
  • 输入:均值 μ x \mu_x μx​、标准差 σ x \sigma_x σx​。
  • 输出:去平稳化因子 τ \tau τ和 Δ \Delta Δ。

3. 注意力机制 (Attention Mechanism)

  • 去平稳化注意力 (De-stationary Attention)
    • 输入:查询矩阵 Q ′ \mathbf{Q'} Q′、键矩阵 K ′ \mathbf{K'} K′、值矩阵 V ′ \mathbf{V'} V′,以及去平稳化因子 τ \tau τ和 Δ \Delta Δ。
    • 处理:调整注意力权重以恢复非平稳信息。
    • 输出:调整后的注意力输出。
  • 自注意力 (Self-attention)
    • 输入:查询矩阵 Q ′ \mathbf{Q'} Q′、键矩阵 K ′ \mathbf{K'} K′、值矩阵 V ′ \mathbf{V'} V′。
    • 处理:计算注意力权重并进行矩阵乘法。
    • 输出:加权后的值矩阵。

4. 重新调整 (Rescale)

  • 输入:注意力权重和去平稳化因子。
  • 处理:调整注意力权重以反映原始非平稳信息。
  • 输出:调整后的注意力权重。

5. 加和与归一化 (Add & Norm)

  • 每层的输出与输入相加并进行归一化处理。

6. 前馈网络 (Feed Forward)

  • 多层感知器,用于进一步处理注意力层的输出。

流程总结

  1. 输入预处理

    • 原始序列 x \mathbf{x} x经过归一化模块,生成标准化序列 x ′ \mathbf{x'} x′。
  2. 注意力层

    • 在注意力层中,使用去平稳化因子调整注意力权重,确保捕捉非平稳时间序列中的重要信息。
  3. 编码器-解码器结构

    • 标准的编码器-解码器结构提取时间依赖性,并进行预测。
  4. 去归一化处理

    • 预测结果通过去归一化模块恢复到原始尺度,得到最终的预测值 y \mathbf{y} y。
  5. 投影器学习因子

    • 使用投影器学习并应用去平稳化因子,确保模型能够捕捉非平稳时间序列中的关键依赖关系。

这一架构通过结合归一化、去平稳化注意力和标准的编码器-解码器结构,有效地处理非平稳时间序列,提升了模型的预测能力。

核心思想

是的,这篇论文的核心思想是结合平稳化和去平稳化操作来处理时间序列数据。具体过程如下:

数据平稳化

  1. 平稳化处理 (Normalization)
    • 输入数据 x \mathbf{x} x通过平稳化处理,生成归一化后的数据 x ′ \mathbf{x'} x′。
    • 平稳化的目标是减弱数据的非平稳性,使模型更容易学习到数据的规律。

自注意力机制中的去平稳化操作

在自注意力机制的计算过程中,去平稳化操作被引入来恢复原始数据的非平稳性信息,从而提高模型的预测性能。具体步骤如下:

  1. 自注意力计算 (Self-Attention)

    • 对平稳化后的输入 x ′ \mathbf{x'} x′进行自注意力计算。
    • 生成查询矩阵 Q ′ \mathbf{Q'} Q′、键矩阵 K ′ \mathbf{K'} K′和值矩阵 V ′ \mathbf{V'} V′。
  2. 去平稳化注意力 (De-stationary Attention)

    • 引入去平稳化因子 τ \tau τ和 Δ \Delta Δ来调整注意力权重,恢复非平稳信息。
    • 去平稳化因子 τ \tau τ和 Δ \Delta Δ是通过投影器 (Projector) 从输入数据的统计特性(均值 μ x \mu_x μx​和标准差 σ x \sigma_x σx​)中学习到的。

具体流程

  1. 归一化操作

    • 输入数据 x \mathbf{x} x经过平稳化处理,生成归一化后的数据 x ′ \mathbf{x'} x′。
    • 平稳化公式:
      x ′ = x − 1 μ x ⊤ σ x \mathbf{x'} = \frac{\mathbf{x} - 1\mu_x^\top}{\sigma_x} x′=σx​x−1μx⊤​​
  2. 生成去平稳化因子

    • 通过投影器 (Projector) 学习去平稳化因子 τ \tau τ和 Δ \Delta Δ。
    • 投影器的输入是均值 μ x \mu_x μx​和标准差 σ x \sigma_x σx​。
  3. 自注意力计算

    • 使用归一化后的数据 x ′ \mathbf{x'} x′进行自注意力计算,生成查询矩阵 Q ′ \mathbf{Q'} Q′、键矩阵 K ′ \mathbf{K'} K′和值矩阵 V ′ \mathbf{V'} V′。
  4. 去平稳化注意力计算

    • 在自注意力计算过程中,使用去平稳化因子 τ \tau τ和 Δ \Delta Δ调整注意力权重,恢复非平稳信息。
    • 调整后的注意力公式为:
      Attn ( Q ′ , K ′ , V ′ , τ , Δ ) = Softmax ( τ Q ′ K ′ ⊤ + Δ d k ) V ′ \text{Attn}(\mathbf{Q'}, \mathbf{K'}, \mathbf{V'}, \tau, \Delta) = \text{Softmax} \left( \frac{\tau \mathbf{Q'} \mathbf{K'}^\top + \Delta}{\sqrt{d_k}} \right) \mathbf{V'} Attn(Q′,K′,V′,τ,Δ)=Softmax(dk​ ​τQ′K′⊤+Δ​)V′

为什么需要去平稳化操作

  1. 恢复非平稳信息

    • 平稳化处理使数据的分布更加稳定,但也可能丢失一些重要的非平稳性信息。去平稳化操作可以在注意力计算过程中恢复这些信息,从而提高模型的预测能力。
  2. 增强模型的适应性

    • 结合平稳化和去平稳化操作,使模型既能处理平稳数据,也能适应非平稳数据,从而提高模型的泛化能力和预测准确性。

总结

论文的创新点在于结合平稳化和去平稳化操作,通过在自注意力计算过程中引入去平稳化因子,恢复非平稳信息,从而提高模型的预测性能。这种方法有效地解决了传统方法中因过度平稳化导致的预测能力下降的问题。

为什么最终预测结果还要进行去平稳化

调整后的注意力机制在处理过程中已经引入了去平稳化因子,用以恢复原始数据的非平稳信息。然而,在最终的预测数据输出阶段,仍然需要进行去平稳化操作,以确保预测结果能够准确地反映原始数据的尺度和分布。以下是详细解释:

调整后的注意力机制

在调整后的注意力计算中,引入了去平稳化因子 τ \tau τ和 Δ \Delta Δ:
Attn ( Q ′ , K ′ , V ′ , τ , Δ ) = Softmax ( τ Q ′ K ′ ⊤ + Δ d k ) V ′ \text{Attn}(\mathbf{Q'}, \mathbf{K'}, \mathbf{V'}, \tau, \Delta) = \text{Softmax} \left( \frac{\tau \mathbf{Q'} \mathbf{K'}^\top + \Delta}{\sqrt{d_k}} \right) \mathbf{V'} Attn(Q′,K′,V′,τ,Δ)=Softmax(dk​ ​τQ′K′⊤+Δ​)V′

这里,去平稳化因子用于调整注意力权重,从而恢复输入数据中原本的非平稳性信息。

为什么最终预测结果还要进行去平稳化

尽管在注意力计算过程中已经进行了去平稳化调整,但以下几个原因解释了为什么最终预测结果仍需进行去平稳化:

  1. 恢复原始尺度

    • 在归一化阶段,输入数据被标准化为均值为0、方差为1的尺度。模型在这个标准化的空间中进行训练和预测。
    • 为了使预测结果在实际应用中有意义,需要将其恢复到原始数据的尺度。这需要将标准化后的预测结果通过逆向操作(去平稳化)进行恢复。
  2. 保持一致性

    • 模型在训练时使用的是归一化后的数据。如果不进行去平稳化处理,预测结果将与原始数据的分布和尺度不一致,可能导致解读和使用上的困难。
    • 去平稳化处理可以确保预测结果与训练数据的一致性,使得结果更加可靠和可解释。
  3. 结合平稳和非平稳信息

    • 去平稳化操作不仅恢复了原始数据的尺度,还结合了模型在标准化空间中学到的非平稳信息,使得最终的预测结果能够更好地反映真实情况。
    • 通过将标准化后的预测结果重新映射回原始数据空间,模型的预测能力得以增强。

最终去平稳化公式

假设预测结果为 y ′ \mathbf{y'} y′,则最终的去平稳化操作如下:
y = σ x y ′ + μ x \mathbf{y} = \sigma_x \mathbf{y'} + \mu_x y=σx​y′+μx​

其中:

  • y \mathbf{y} y是最终的预测结果。
  • y ′ \mathbf{y'} y′是模型在标准化空间中的预测结果。
  • σ x \sigma_x σx​和 μ x \mu_x μx​分别是输入数据的标准差和均值,用于将预测结果恢复到原始数据的尺度。

图示解释

在图中,去平稳化模块位于最终的预测输出阶段,其目的是将标准化后的预测结果 y ′ \mathbf{y'} y′恢复到原始尺度 y \mathbf{y} y:

  1. 平稳化 (Normalization):将原始输入数据 x \mathbf{x} x转换为标准化数据 x ′ \mathbf{x'} x′。
  2. 嵌入 (Embedding):对标准化数据进行嵌入处理,输入编码器和解码器。
  3. 编码器和解码器 (Encoder and Decoder):处理嵌入数据并进行预测,输出标准化预测结果 y ′ \mathbf{y'} y′。
  4. 去平稳化 (De-normalization):将标准化预测结果 y ′ \mathbf{y'} y′通过去平稳化处理恢复到原始尺度,得到最终预测结果 y \mathbf{y} y。

总结

尽管调整后的注意力机制在处理中已经进行了去平稳化,但为了确保最终预测结果的尺度和分布与原始数据一致,仍然需要在输出阶段进行去平稳化处理。这一步骤是必不可少的,确保了模型预测结果的实际应用价值和可解释性。

标签:Exploring,Non,Transformers,平稳,mu,归一化,序列,mathbf,注意力
From: https://blog.csdn.net/weixin_45633221/article/details/140171470

相关文章

  • PowerShell 和 NSSM(Non-Sucking Service Manager)的组合可以用来创建和管理 Windows 上
    PowerShell和NSSM(Non-SuckingServiceManager)的组合可以用来创建和管理Windows上的服务。NSSM是一个开源工具,允许你将任何可执行文件转换为Windows服务。下面是一个简单的示例,展示如何使用PowerShell和NSSM来创建和管理一个服务。步骤一:下载和安装NSSM下载NSSM:......
  • 【Effective Python教程】(90个有效方法)笔记——第3章:函数——24:用None和docstring来描
    文章目录第3章:函数第24条用None和docstring来描述默认值会变的参数函数默认值的坑(函数的默认参数值只在定义函数时计算)解决方法:将函数默认参数值设为None,然后再在函数体中判断并初始化函数默认参数值设置为None的其他应用示例“函数默认参数值设置为None”与“函数参数......
  • [本科项目实训] Hugging Face Transformers 模型部署与微调
    TransformersHuggingFaceTransformer提供了模型的加载、推理、微调接口,使用该库可以轻松完成自然语言模型的部署微调工作,其有继承自AutoClass的四个最为常见的接口,且调用方式均为AutoClass.from_pretrain("model_name"):AutoTokenizer:用于文本分词AutoFeatureExtractor:用......
  • non_blocking=True 与 torch.cuda.synchronize()
    需要注意的是:GPU和CPU之间是异步执行的,CPU向GPU下达指令以后会立刻执行之后的代码,CPU不会等待GPU执行完成一、non_blocking=True 目的:压缩gpu的效果,避免CPU与GPU设备数据传输时间开销带来的计算效率低下在PyTorch中, non_blocking 是一个布尔类型的参数,用于指定是否启用......
  • Mozilla 收购广告指标公司 Anonym
    在数字广告和隐私保护之间的紧张关系日益加剧的背景下,Mozilla宣布收购广告指标公司Anonym。这一举措不仅标志着Mozilla在广告技术领域的重大进展,也反映了其致力于用户隐私保护的坚定承诺。本文将探讨此次收购的背景、意义以及对未来广告技术和隐私保护的潜在影响。数字广告与......
  • 大模型基本概念学习 - Checkpoint、PyTorch、 TensorFlow、Transformers、ModelScope
    文章目录前言一、checkpoint二、TensorFlow1.简介2.主要特点3.示例代码三、PyTorch1.简介2.主要特点3.示例代码四、TensorFlow和PyTorch区别五、Transformers六、Transformers通过配置或自动检测来决定使用PyTorch或TensorFlow1.自动检测2.通过环境变量配......
  • Transformers是SSMs:通过结构化状态空间对偶性的广义模型和高效算法(一)
    文章目录摘要1、引言2、背景与概述2.1、结构化状态空间模型2.2、注意力机制2.3、结构化矩阵2.4、概述:结构化状态空间对偶性2.5、符号3、状态空间模型是结构化矩阵3.1、状态空间模型的矩阵变换形式3.2、半可分离矩阵3.2.1、顺序半可分离(SSS)表示3.2.2、1-半可分矩阵:标量SS......
  • VPC Access Connector 介绍 - 让 Non-VPC product 也可以访问VPC Network内的资源
    什么是VPCproduct和非VPCproduct在GCP上,VPCproduct指的是属于某个制定的vpcsubnet,具有至少1个该subnet的内网ip的产品常见的例如:computeengine/MIG(managedinstancesgroup)某些dataflowjob(指定了可选参数subnet)CloudComposer(基于airflow)......
  • 2024-06-22:用go语言,给定一个起始下标为 0 的长度为3的整数数组 nums,根据这些数字构建
    2024-06-22:用go语言,给定一个起始下标为0的长度为3的整数数组nums,根据这些数字构建三角形。如果无法构成三角形,则返回"none";否则根据三角形的边长关系返回对应类型的字符串:equilateral(等边三角形)、isosceles(等腰三角形)或scalene(不等边三角形)。输入:nums=[3,3,3]。输出:"e......
  • Transformers--4-37-中文文档-四十五-
    Transformers4.37中文文档(四十五)原文:huggingface.co/docs/transformersOWL-ViT原文:huggingface.co/docs/transformers/v4.37.2/en/model_doc/owlvit概述OWL-ViT(VisionTransformerforOpen-WorldLocalization)是由MatthiasMinderer、AlexeyGritsenko、AustinSton......