机器学习周记(第四十四周:Robformer)2024.6.17~2024.6.23

目录

  • 摘要
  • ABSTRACT
  • 1 论文信息
    • 1.1 论文标题
    • 1.2 论文摘要
    • 1.3 论文引言
    • 1.4 论文贡献
  • 2 论文模型
    • 2.1 问题描述
    • 2.2 Robformer
      • 2.2.1 Encoder
      • 2.2.2 Decoder
    • 2.3 鲁棒序列分解模块
    • 2.4 季节性成分调整模块

摘要

本周阅读了一篇利用改进 Transformer 进行长时间序列预测的论文。论文模型为 Robformer ,其主要强调了在长时间序列预测问题上模型的鲁棒性。Robformer 主要包括几个关键模块:Encoder、Decoder、鲁棒序列分解模块、季节性成分调整模块。Encoder 主要侧重于从历史信息中提取周期性依赖关系,以供解码器使用。Decoder 包含两部分:堆叠的自相关机制以获得季节性部分,以及堆叠的稳健趋势预测块用于趋势部分。鲁棒序列分解模块主要提供一种简单且有效的方法来更新内部分解模块,使其能够鲁棒地提取季节性成分。季节性成分调整模块主要作用为进一步确保分解后的季节性成分的鲁棒性。

ABSTRACT

This week, We read a paper on long-term time series forecasting using an improved Transformer model. The model, named Robformer, primarily emphasizes the robustness of the model in long-term time series forecasting problems. Robformer consists of several key modules: the Encoder, the Decoder, the Robust Series Decomposition Module, and the Seasonal Component Adjustment Module. The Encoder mainly focuses on extracting periodic dependencies from historical information for the Decoder. The Decoder contains two parts: stacked Auto-Correlation mechanisms to obtain seasonal components and stacked robust trend forecasting blocks for trend components. The Robust Series Decomposition Module provides a simple and efficient approach to updating the inner decomposition blocks to extract seasonal components robustly. The Seasonal Component Adjustment Module’s main function is to further ensure the robustness of the decomposed seasonal components.

1 论文信息

1.1 论文标题

Robformer: A robust decomposition transformer for long-term time series forecasting

1.2 论文摘要

基于 Transformer 的预测方法已广泛应用于长期多变量时间序列的预测,并在延长预测时间上取得了显著进展。然而,当长期时间序列中出现突发趋势变化和季节波动时,这些方法的性能可能会严重退化。因此,作者确定了以往 Transformer 架构的两个瓶颈:(1) 稳健性较差的分解模块。 (2) 趋势转移问题,这一问题导致了在长期多变量序列预测中趋势预测与真实值之间存在不同的分布。针对这些瓶颈,作者设计了 Robformer,一种新型基于分解的 Transformer,其包括三个新的内部模块,以增强 Transformer 的预测能力。具体而言,作者更新了分解模块,并添加了一个季节性成分调整模块以处理非平稳序列。此外,作者还提出了一种受多项式拟合方法启发的新型内部趋势预测架构,在准确性和鲁棒性方面优于以往的设计。作者的实验研究表明,在六个基准测试上,在公平的长期多变量设置下,Robformer 相比于最先进的 AutoformerFEDformer 基线分别实现了 17% 和 10% 的相对改进,这些基准测试涵盖了能源、经济、交通、天气和疾病五大主流时间序列预测应用。

1.3 论文引言

长期多变量时间序列预测(LTTF)问题旨在输出比已知序列长度多几倍的预测序列,这在许多领域如金融、能源或天气中都很常见。最近的相关研究中,引入了 Transformers 以利用其自注意机制捕捉时间点之间复杂的依赖关系,并实现长期预测。为了应对 Transformers 在计算时间和内存方面的高消耗,一些基于 Transformer 的预测模型利用稀疏自注意机制来减少计算消耗,例如 ProbSparse 自注意因果卷积自注意局部敏感哈希注意力。然而,这些方法会离散化时间序列的连续空间模式,并遗忘一些时间信息。由于合理的分解过程可以有效地理清纠缠的时间模式,这可以促进模型准确预测,基于 Transformer 的方法 AutoformerFEDformer 利用基于简单平滑移动平均方法的内部分解模块来捕捉时间依赖关系,同时保持在 ( L log ⁡ L ) (L \log L) (LlogL) 程度的复杂性。

然而,基于分解的 Transformers 仍面临一些瓶颈,例如在预测现实世界多变量时间序列时的分布转换问题。此外,一些单变量预测模型声称它们在长期单变量序列预测任务中已取得了与 Transformer 相当的结果。尽管如此,Transformers 在长期多变量时间序列预测中真的不有效吗?
在这里插入图片描述

Fig.1 ETTh2数据集上Autoformer的预测输出和真实值之间的趋势变化示意图

为了回答这个问题,Non-stationary TransformersRevIN 提出了类似于预处理的平稳化和去平稳化模块,从提高数据可预测性的角度来提升 Transformer 的性能。类似地,PatchTST 将时间序列分割成序列级别的补丁,在输入之前帮助 Transformer 提取时间依赖性,这类似于标记化方法。然而,从 Transformer 架构的角度来看,使其在现实世界的时间序列上更具鲁棒性仍然是一个具有挑战性的问题。

在实验中,作者观察到基于分解的 Transformers 架构中存在两个主要瓶颈。首先,简单的移动平均方法不足以应对趋势和周期项的突发波动和变化,特别是被异常值误导时,而传统的分解解决方案由于计算复杂度的指数增长,很难应用于内部分解模块。其次,先前的基于分解的 Transformers 很难学习时间序列中的长期趋势模式。作者在 ETTh2 数据集上比较了 Autoformer 的预测结果和真实值,如图1所示,可以发现预测的趋势和实际的趋势之间存在巨大的差距。作者进一步进行了实验,发现先前的基于分解的 Transformer 随着回溯窗口大小的增加,预测误差并没有减少。后续分析显示,这是因为它们使用输入序列的平均值作为未来趋势组件的水平,当未来趋势与输入序列的平均值不一致时,会带来错误的趋势预测。同时,当历史和预测序列的长度增加时,时间序列中包含的长期趋势模式将被揭示,这需要模型具有捕捉多个趋势模式的能力。因此,如何鲁棒地分解时间序列并增强学习多种趋势模式的能力被证明是基于分解的 Transformers 进一步提升预测性能的瓶颈。

基于此,作者尝试超越基于分解的 Transformer,并提出了一种新的端到端鲁棒 Transformer,简称 Robformer,以便在不进行预处理的情况下处理长期时间序列预测。Robformer 仍然遵循编码器-解码器结构,并采用自相关机制,但创新性地加入了鲁棒分解块和季节性组件调整块作为内部操作,以实现更好的分解。所提出的新型鲁棒分解块简单但高效,且具有低计算复杂度。Robformer 还引入了具有双残差结构的鲁棒趋势预测块,以取代原有的趋势预测方法,在具有剧烈趋势组件波动的短期内显示出更好的性能。Robformer 保持了原始 ( L log ⁡ L ) (L \log L) (LlogL) 级别的复杂度,并且可以推广到其他基于分解的 Transformers,以进一步改进基础模型。作者的 Robformer 在几乎所有六个多变量真实世界基准上都达到了最先进的准确性。

1.4 论文贡献

① 提出了鲁棒分解架构和季节性组件调整块,以减轻趋势和周期项的突发波动和变化对长期预测的影响。

② 提出了鲁棒趋势预测块来提取长期时间序列的多种趋势模式,显示出比之前的趋势预测块更强的学习能力。这些提出的块可以应用于任何基于分解的 Transformer 模型,以提升其在长期时间序列预测任务(LTTF)中的性能。

2 论文模型

2.1 问题描述

给定具有 C( C ≥ 1 C\geq1 C1) 个变量的历史时间序列数据 H = { X 1 t , . . . , X C t } t = 1 L H = \{ X^{t}_{1},...,X^{t}_{C} \}^{L}_{t=1} H={X1t,...,XCt}t=1L,其中 L 是输入序列的长度, X i t X^{t}_{i} Xit 是第 i 个变量在第 t 个时间步上的观测值。时间序列预测问题主要是预测序列在未来 T 个时间步上的值,即 H ^ = { X 1 t ^ , . . . , X C t ^ } t = L + 1 L + T \widehat{H} = \{ \widehat{X^{t}_{1}},...,\widehat{X^{t}_{C}} \}^{L+T}_{t=L+1} H ={X1t ,...,XCt }t=L+1L+T,输入 L 预测 T。在 LTTF 条件下,L<<T。

2.2 Robformer

作者将基于分解的 Transformer 改造为更为鲁棒的深度预测模型(如图2所示),包括鲁棒序列分解块(RobDecomp)季节性成分调整块(SAB) 和解码器中的鲁棒趋势预测块(RobTF)
在这里插入图片描述

Fig.2 Robformer

N 个编码器的输入是过去 L 个时间步长 H e n ∈ R L × d H_{en}\in \R ^{L \times d} HenRL×d,而 M 个解码器的输入是包含季节性部分 H d e s ∈ R ( L 2 + T ) × d H_{des} \in \R^{(\frac{L}{2}+T)\times d} HdesR(2L+T)×d 和趋势部分 H d e t ∈ R ( L 2 ) × d H_{det} \in \R^{(\frac{L}{2})\times d} HdetR(2L)×d 的分解序列。按照之前的工作,解码器的季节性部分输入包括两部分:从编码器输入 H e n H_{en} Hen 的后半部分分解出来的部分,长度为 L 2 \frac{L}{2} 2L,这部分输入可以提供过去信息;以及长度为 T 的填充标量的掩码输入。然而,与用 H e n H_{en} Hen 的平均值填充趋势部分输入不同,作者直接将长度为 L 2 \frac{L}{2} 2L 的趋势部分 H d e t H_{det} Hdet 输入到解码器中。公式如下:
H e n s , H e n t = RobDecomp ( H e n L 2 : L ) , H e n s a d j = SAB ( H e n s ) , H d e s = Concat ( H e n s a d j , H 0 ) , H d e t = H e n t , H_{ens},H_{ent}=\textup{RobDecomp}(H_{en \frac{L}{2}:L}),\\ H_{ensadj}=\textup{SAB}(H_{ens}),\\ H_{des}=\textup{Concat} (H_{ensadj},H_{0}), H_{det}=H_{ent}, Hens,Hent=RobDecomp(Hen2L:L),Hensadj=SAB(Hens),Hdes=Concat(Hensadj,H0),Hdet=Hent,
其中 H e n s , H e n t ∈ R ( L 2 ) × d H_{ens},H_{ent} \in \R^{(\frac{L}{2})\times d} Hens,HentR(2L)×d 表示 H e n H_{en} Hen 分解的季节性和趋势部分 H 0 ∈ R T × d H_{0} \in \R ^{T \times d} H0RT×d 表示填充为零的占位符。

2.2.1 Encoder

编码器主要侧重于从历史信息中提取周期性依赖关系,以供解码器使用。对于 N 个编码器层,第 l l l 个编码器层的方程可总结为 H e n l = Encoder ( H e n l − 1 ) H_{en}^{l}=\textup{Encoder}(H_{en}^{l-1}) Henl=Encoder(Henl1)。详细的方程形式化为:
g e n l , 1 , _ = RobDecomp ( AutoCorrelation ( H e n l − 1 ) + H e n l − 1 ) , g e n l , 2 , _ = RobDecomp ( FeedForward ( g e n l , 1 ) + g e n l , 1 ) , g_{en}^{l,1},\_ = \textup{RobDecomp}(\textup{AutoCorrelation}(H_{en}^{l-1})+H_{en}^{l-1}),\\ g_{en}^{l,2},\_ = \textup{RobDecomp}(\textup{FeedForward}(g_{en}^{l,1})+g_{en}^{l,1}), genl,1,_=RobDecomp(AutoCorrelation(Henl1)+Henl1),genl,2,_=RobDecomp(FeedForward(genl,1)+genl,1),
其中“_”表示不必要的部分。 H e n l = g e n l , 2 , l ∈ { 1 , . . . , N } H_{en}^{l}=g_{en}^{l,2},l \in \{ 1,...,N \} Henl=genl,2,l{1,...,N} 表示第 l l l 个编码器层的输出, AutoCorrelation ( ⋅ ) \textup{AutoCorrelation}(\cdot) AutoCorrelation() 表示 Autoformer 中提出的自相关机制,该机制可以有效发现基于周期的依赖关系,以取代原来的自注意力机制。

2.2.2 Decoder

解码器包含两部分:堆叠的自相关机制以获得季节性部分,以及堆叠的稳健趋势预测块用于趋势部分。假设有 M 个解码器层,第 l l l 个解码器层的方程可以总结为 H d e l = Decoder ( H d e l − 1 , H e n N ) H_{de}^{l}=\textup{Decoder}(H_{de}^{l-1},H_{en}^{N}) Hdel=Decoder(Hdel1,HenN) Decoder ( ⋅ ) \textup{Decoder}(\cdot) Decoder() 形式化为:
g d e l , 1 , _ = RobDecomp ( AutoCorrelation ( H d e l − 1 ) + H d e l − 1 ) , g d e l , 2 , _ = RobDecomp ( AutoCorrelation ( g d e l , 1 , H e n N ) + g d e l , 1 ) , g d e l , 3 , _ = RobDecomp ( FeedForward ( g d e l , 2 ) + g d e l , 2 ) , G d e = RobTF ( H d e t ) , g_{de}^{l,1},\_ = \textup{RobDecomp}(\textup{AutoCorrelation}(H_{de}^{l-1})+H_{de}^{l-1}),\\ g_{de}^{l,2},\_ = \textup{RobDecomp}(\textup{AutoCorrelation}(g_{de}^{l,1},H_{en}^{N})+g_{de}^{l,1}),\\ g_{de}^{l,3},\_ = \textup{RobDecomp}(\textup{FeedForward}(g_{de}^{l,2})+g_{de}^{l,2}),\\ G_{de}=\textup{RobTF}(H_{det}), gdel,1,_=RobDecomp(AutoCorrelation(Hdel1)+Hdel1),gdel,2,_=RobDecomp(AutoCorrelation(gdel,1,HenN)+gdel,1),gdel,3,_=RobDecomp(FeedForward(gdel,2)+gdel,2),Gde=RobTF(Hdet),
其中 H d e l = g d e l , 3 , l ∈ { 1 , . . . , M } H_{de}^{l}=g_{de}^{l,3},l \in \{ 1,...,M \} Hdel=gdel,3,l{1,...,M} 表示第 l l l 个解码器层的输出, H d e 0 H_{de}^{0} Hde0 表示嵌入的 H d e s H_{des} Hdes g d e l , i , i ∈ { 1 , 2 , 3 } g_{de}^{l,i},i \in \{ 1,2,3 \} gdel,i,i{1,2,3} 对应于第 l l l 层中第 i i i 个稳健分解块后的季节性部分。 G d e G_{de} Gde 表示解码器的输出。注意, RobTF ( ⋅ ) \textup{RobTF}(\cdot) RobTF() 表示模型的稳健趋势预测块。

最终预测是两个分解成分的总和: W g ∗ H d e M + G d e W_{g}*H_{de}^{M}+G_{de} WgHdeM+Gde,其中 W g W_{g} Wg 表示季节性部分的简单映射。

2.3 鲁棒序列分解模块

正如在前文中提到的,简单的移动平均方法难以处理突然的趋势变化和季节性干扰问题,如图2所示。为了解决这个困境,作者尝试提出一种简单且有效的方法来更新内部分解模块,使其能够稳健地提取季节性成分。作者在分解模块中加入二阶差分算子,使模型能够自动学习如何平滑具有突变波动的分解趋势成分。具体来说,作者对每个输入序列采用二阶移动平均。对于长度为 L 的输入序列 H ∈ R L × d H \in \R ^{L \times d} HRL×d,其处理过程为:
H t = λ 1 ∗ AvgPool ( Padding ( H ) ) + λ 2 ∗ AvgPool ( Padding ( AvgPool ( Padding ( H ) ) ) ) , λ 1 , λ 2 = Softmax ( L ( H ) ) , H s = H − H t , H_{t}=\lambda_{1} * \textup{AvgPool}(\textup{Padding}(H))+\lambda_{2} *\textup{AvgPool}(\textup{Padding}(\textup{AvgPool}(\textup{Padding}(H)))),\\ \lambda_{1},\lambda_{2}=\textup{Softmax}(L(H)),\\ H_{s}=H-H_{t}, Ht=λ1AvgPool(Padding(H))+λ2AvgPool(Padding(AvgPool(Padding(H)))),λ1,λ2=Softmax(L(H)),Hs=HHt,
其中, H s , H t ∈ R L × d H_{s},H_{t}\in \R^{L \times d} Hs,HtRL×d 分别表示季节性和趋势循环部分,每个部分都包含部分残余噪声。 λ 1 , λ 2 \lambda_{1},\lambda_{2} λ1,λ2 是基于输入序列由线性映射层 L ( H ) \textup{L}(H) L(H) 自动学习并通过 softmax 函数 Softmax ( ⋅ ) \textup{Softmax}(\cdot) Softmax() 转换为概率分布的权重。通过这种方式,这些模块可以实现相同的平滑效果。

此外,考虑到时间序列可能会与多个季节性模式耦合,这可能会扰乱去趋势过程,可以利用加权移动平均方法来消除这些影响。这种方法还可以使分解后的成分更加平滑。需要注意的是,所有权重的总和应为1。类似于 FEDformer 中的 MOEDecomp 模块,对于可能存在的多个季节性模式 { τ 1 , τ 2 , . . . , τ k } \{ \tau_{1},\tau_{2},...,\tau_{k} \} {τ1,τ2,...,τk},有 k 平均滤波器,其核大小分别为 { τ 1 , τ 2 , . . . , τ k } \{ \tau_{1},\tau_{2},...,\tau_{k} \} {τ1,τ2,...,τk}。形式上,该模块可以表示为:
H t = ∑ k = 1 K ω τ k ( H t ) τ k , ω τ 1 , . . . , ω τ k = Softmax ( L ( H ) ) , H s = H − H t H_{t}=\sum_{k=1}^{K}\omega_{\tau_{k}}(H_{t})_{\tau_{k}}, \\ \omega_{\tau_{1}},...,\omega_{\tau_{k}} = \textup{Softmax}(L(H)), \\ H_{s}=H-H_{t} Ht=k=1Kωτk(Ht)τk,ωτ1,...,ωτk=Softmax(L(H)),Hs=HHt
其中, ( H t ) τ k (H_{t})_{\tau_{k}} (Ht)τk 表示核大小为 τ k \tau_{k} τk 的趋势成分, Softmax ( L ( H ) ) \textup{Softmax}(L(H)) Softmax(L(H)) 是从输入中学习到的用于混合这些提取的趋势成分的权重。详细过程见算法1。
在这里插入图片描述

Algorithm 1

2.4 季节性成分调整模块

如图 2 所示,作者提出了季节性成分调整模块,以进一步确保分解后的季节性成分的鲁棒性。

前文中提出的Robdecomp模块可以在一定程度上缓解分布偏移问题。然而,去除趋势成分后, H s H_{s} Hs 可以被视为“污染的季节性成分”,因为它可能受到各种类型的噪声或异常值的污染。这是因为没有进行噪声去除或异常检测的预处理操作。一般来说,传统的解决方法是通过使用平均季节性模式来调整季节性成分以去除水平偏移。然而,现实世界中的季节性成分通常在幅度和相位上不规则地变化,这意味着以往的方法会导致对季节性成分中复杂信息的忽略。

为了在不牺牲信息利用的情况下提取稳健的季节性成分,作者提出通过逐步学习数据依赖的权重来调整“污染的季节性成分”,以调整季节性成分中相同相位位置的观测值。

首先,假设 T T T 是周期长度,注意如果有多个潜在的周期长度,选择最大的一个。数学上,对于分解后的季节性序列 { ( H s ) 1 , H s ) 2 , . . . , H s ) N } \{ (H_{s})_{1},H_{s})_{2},...,H_{s})_{N} \} {(Hs)1,Hs)2,...,Hs)N},可以按如下方式调整序列:
H ~ = { ( H s ) N N ≦ T ∑ k = 0 K ω τ k ( H s ) N − k T N > T , ω τ 0 , . . . , ω τ k = Softmax ( L ( H ) ) , \widetilde{H} = \begin{cases} (H_{s})_{N} &\text{} N \leqq T \\ \sum_{k=0}^{K}\omega_{\tau_{k}}(H_{s})_{N-kT} &\text{} N \gt T, \end{cases}\\ \omega_{\tau_{0}},...,\omega_{\tau_{k}}=\textup{Softmax}(L(H)), H ={(Hs)Nk=0Kωτk(Hs)NkTNTN>T,ωτ0,...,ωτk=Softmax(L(H)),
其中, H ~ \widetilde{H} H 是调整后的季节性成分, Softmax ( L ( H ) ) \textup{Softmax}(L(H)) Softmax(L(H)) 是用于组合相关观测值以调整分解后的季节性序列中每个值的可学习权重。需要注意的是,在 LTTF 条件下,输入序列 N 的长度通常接近周期长度,因此可以根据编码器或解码器中的分解块数量来等分 T,以提高该方法的可用性,因为移动平均法具有叠加效果。这意味着,如果解码器中的分解块数量为 M,可以使用 ⌈ T / M ⌉ \lceil T/M \rceil T/M 而不是参数T来调整季节性成分。详细描述可以见算法2。
在这里插入图片描述

Algorithm 2

受益于对相同相位位置观测值的约束,季节性成分调整模块可以在一定程度上减轻水平偏移和异常值的干扰,从而使 Transformer 能够进行更准确的预测。
在这里插入图片描述

Fig.3 RobTF block

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/32590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅析MySQL-基础篇01

目录 执行一条select语句&#xff0c;发生了什么&#xff1f; MYSQL执行流程是怎么样的&#xff1f; 第一步&#xff1a;连接器 第二步&#xff1a;查询缓存 第三步&#xff1a;解析SQL 解析器 第四步&#xff1a;执行SQL 预处理器 优化器 执行器 执行一条select语句…

Temu(拼多多跨境电商) API接口:获取商品详情

核心功能介绍——获取商品详情 在竞争激烈的电商市场中&#xff0c;快速、准确地获取商品数据详情对于电商业务的成功至关重要。此Temu接口的核心功能在于其能够实时、全面地获取平台上的商品数据详情。商家通过接入Temu接口&#xff0c;可以轻松获取商品的标题、价格、库存、…

Day15 —— 大语言模型简介

大语言模型简介 大语言模型基本概述什么是大语言模型主要应用领域大语言模型的关键技术大语言模型的应用场景 NLP什么是NLPNLP的主要研究方向word2vecword2vec介绍word2vec的两种模型 全连接神经网络神经网络结构神经网络的激活函数解决神经网络过拟合问题的方法前向传播与反向…

什么是REST API

1. 什么是RESTful API REST API&#xff0c;全称 Representational State Transfer&#xff0c;最初由计算机科学家 Roy Fielding 提出。 是遵循 REST 架构规范的应用编程接口&#xff08;API&#xff09;&#xff0c;支持与 RESTful Web 服务进行交互。 又被称作 RESTful API…

深度神经网络——深度学习中的 RNN 和 LSTM 是什么?

引言 自然语言处理和人工智能聊天机器人领域许多最令人印象深刻的进步都是由 递归神经网络&#xff08;RNN&#xff09; 和长短期记忆&#xff08;LSTM&#xff09;网络。 RNN 和 LSTM 是特殊的神经网络架构&#xff0c;能够处理顺序数据&#xff0c;即按时间顺序排列的数据。…

《Python 机器学习》作者新作:从头开始构建大型语言模型,代码已开源

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 自 ChatGPT 发布以来&#xff0c;大型语言模型&#xff08;LLM&#xff09;已经成为推动人工智能发展的关键技术。 近期&#xff0c;机器学习和 AI 研究员、畅销书《Python 机器学习》作者 Sebastian …

Mac M3 Pro 部署Trino-server-449

目录 1、下载安装包 2、解压并设置配置参数 3、启动并验证 4、使用cli客户端连接测试 1、下载安装包 官方&#xff1a;trino-server-449 CLI 网盘&#xff1a; server https://pan.baidu.com/s/16IH-H39iF8Fb-Vd14f7JPA?pwd3vjp 提取码: 3vjp cli https://pan.baidu.…

计算机网络 动态路由OSPF

一、理论知识 1.OSPF基本概念 ①OSPF是一种链路状态路由协议&#xff0c;使用Dijkstra算法计算最短路径。 ②OSPF使用区域&#xff08;Area&#xff09;来组织网络&#xff0c;区域0&#xff08;Area 0&#xff09;是主干区域。 ③路由器通过通告直连网络加入OSPF域。 ④反…

Ubuntu磁盘映射到本地磁盘

远程服务器是 Ubuntu 系统&#xff0c;本地是 windows 系统。 1、安装 samba 服务器 sudo apt update sudo apt install samba smbclient通过如下命令可以看到已经安装成功 $ whereis sambaoutput: samba: /usr/sbin/samba /usr/lib/x86_64-linux-gnu/samba /etc/samba /usr…

CentOS 7、Debian、Ubuntu,这些是什么意思

CentOS 7、Debian、Ubuntu 都是基于 Linux 内核的操作系统&#xff0c;它们各自有不同的特性和用途。以下是对它们的详细解释&#xff1a; CentOS 7 CentOS&#xff08;Community ENTerprise Operating System&#xff09; 是一个基于开源的 Linux 发行版。CentOS 7 是 CentOS …

如何在Qt Designer中管理QSplitter

问题描述 当按下按钮时&#xff0c;我希望弹出一个对话框&#xff0c;用户可以在其中选择内容并最终按下 ‘Ok’ 按钮。我想在这个对话框中放置一个 QSplitter&#xff0c;左侧面板将显示树状结构&#xff0c;右侧将显示其他内容。如何正确实现这一点&#xff1f; 从 Qt 的示…

【Mac】KeyKey — Typing Practice for mac软件介绍及安装

软件介绍 KeyKey 是一款为 macOS 设计的盲打练习软件&#xff0c;旨在帮助用户提高打字速度和准确性。它通过提供多种练习模式和实时反馈&#xff0c;使用户能够逐渐掌握触摸打字技能。以下是 KeyKey 的主要功能和特点&#xff1a; 主要功能和特点 多语言支持&#xff1a; …

python---OpenCv(二),背景分离方法较有意思

目录 边界矩形 旋转矩形(最小外接矩形): 计算轮廓 找4个点的坐标 把浮点型转为Int 画轮廓 边界矩形--&#xff08;最大外接矩形&#xff09; 转灰度 找轮廓 找顶点 画矩形 显示 背景分离方法&#xff08;这个很好玩&#xff0c;可以识别在动的物体&#xff09; 边…

泛微E9与金蝶云星空ERP的无缝集成案例详解(包括接口与字段)

业务系统现状 背景介绍 泛微E9和金蝶云星空ERP是两款广泛应用与企业管理的信息系统&#xff0c;分别在移动办公自动化和企业资源计划管理领域占据重要地位。然而企业在使用这些系统时往往面临着信息孤岛和系统孤立的问题&#xff0c;导致数据无法在不系统之间高效流转共享。 当…

qml:导入B站Up主的FluentUI插件

文章目录 文章介绍如何加载1、下载代码2、官方文档和组件介绍 运行FluentUI新建自己的qml项目&#xff0c;并导入FluentUI调用组件&#xff0c;展示效果图 文章介绍 up主“会磨刀的小猪”模仿微软Fluent风格写的界面&#xff0c;可以理解为用qt和qml写出的win10/win11风格的界…

Ubuntu 之Glade图形化设计器

演示环境说明&#xff1a;本机使用Windows 11 家庭版本搭载 Ubuntu 22.04.4 LTS 子系统&#xff0c;同时并安装Ubuntu桌面虚拟化软件XLaunch。 如果没有搭建好上述问题&#xff0c;请参考&#xff1a;windows11子系统Ubuntu 22.04.4子安装图形化界面 Glade是什么&#xff1f;…

im即时通讯软件系统,私有化部署国产化信创适配安全可控

私有化部署IM即时通讯软件系统是许多企业为了确保数据安全、控制隐私保护、提升灵活性而考虑的重要选择之一。信创适配安全可控是企业在私有化部署IM即时通讯软件系统时需要关注的关键点。本文将探讨私有化部署IM即时通讯软件系统的意义、信创适配的重要性&#xff0c;以及如何…

使用Vercel 搭建自己的Dashy导航页

背景 Dashy 是一个开源的自托管导航页面配置服务&#xff0c;它具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。用户可以利用 Dashy 将自己常用的一些网站聚合起来&#xff0c;形成一个个性化的导航页面。 同类的竞品还有Heimdall, Flare 等。 可以通过Docker 等…

OneNote 作为恶意软件分发新渠道持续增长

目前&#xff0c;Office 文件已经默认禁用宏代码&#xff0c;攻击者开始转向利用其他微软的软件产品来进行恶意 Payload 投递。默认情况下&#xff0c;OneNote 应用也包含在 Office 2019 和 Microsoft 365 软件中&#xff0c;所以 OneNote 文件越来越受到攻击者的青睐。如果有人…

(南京观海微电子)——TFT LCD压合技术

TFT-LCD TFT-LCD open cell后段制程主要指的是将驱动IC和PCB压合至液晶板上&#xff0c;这个制程主要由三个步骤组成&#xff1a; 1.ACF (Anisotropic Conductive Film)的涂布。 在液晶板需要压合驱动IC的地方涂布ACF&#xff0c;ACF又称异方性导电胶膜&#xff0c;特点是上下…