DLinear模型:Are Transformers Effective for Time Series Forecasting?

news2024/12/27 12:27:42

 本文发表于2022年8月份 

Abstract

  

    基于Transformer的长时间序列预测模型不断涌现,并且性能在过去几年力不断提高,但Transformer是否对长时间序列问题有效?

 具体来说,Transformer是提取长序列中各元素间语义关联最成功的模型,但是在时间序列模型中,我们需要在一个有序的连续点集合中提取时间关系。虽然采用位置编码和使用tokens嵌入子序列有利于保留一些排序信息,但变化无常的自注意力机制不可避免的导致部分时间信息丢失。所以为了验证我们的想法,我们引入了一组名为LTSF-Linear的简单单层线性模型,实验结果表明LTSF-Linear在所有数据集上都出乎意料的优于现有基于Transformer的复杂LSTF模型,而且往往有很大优势。

 此外我们还进行了全面的验证实验,探讨LTSF模型各种设计元素对时间关系提取能力的影响,我们也主张在未来重新检查Transformer对其他时间序列分析任务的有效性。

1. Introduction

  

在当今数据驱动的世界中,时间序列无处不在。考虑到历史数据,时间序列预测(TSF)是一项长期的任务,具有广泛的应用,包括但不限于交通流量估计、能源管理、金融投资。在过去十几年里,(TSF)解决方案经历了从传统的统计方法(如ARIMA)和机器学习技术(如GBRT)到基于深度学习的解决方案,如循环神经网络(RNN)和时间卷积网络(TCN)的发展。

  Transformer可以以说是最成功的序列模型架构。在自然语言处理(NLP)、语音识别和计算机视觉等各种方面有着非常显著的优势。最近,基于Transformer的时间序列预测模型也在不断涌现,最值得注意的是专注于解决长期时间序列预测(LTSF)问题的模型,包括LogTrans(NeurIPS2019),Informer(AAAI2021最佳论文)。Autoformer(NeurIPS 2021),Pyraformer(ICLR2022 Oral),Triformer(IJCAI 2022)和FED-former(ICML 2022)。

  Transformer主要依赖多头注意力机制工作,它具有提取长序列中各元素(如文本中的单词或图像中的块)之间语义关联显著的能力。然而自注意力机制在某种程度上是无序的(特征之间没有空间位置关系)。虽然使用各种类型的位置编码技术可以保留一些排序信息,但在这些技术之上应用自注意力机制后,仍然不可避免会有部分信息损失。这对于NLP等语义丰富的应用来说,通常不是一个严重的问题,例如,即使我们对句子中的一些词重新排序,句子的语义也基本保留下来。但是,在分析时间序列数据时,数值型数据缺乏语义,而我们主要对连续点间趋势变化进行建模,也就是说顺序本身起着最关键的作用,因此,我们提出以下耐人寻味的问题。Transformer对长时间序列预测真的有效吗?

  此外,虽然现有基于Transformer的LTSF模型显示出比传统方法更好的结果,在所有实验中,被比较的(非Transformer)基线都形成了自回归或多步骤迭代预测(IMS),这些方法在LTSF问题上有显著的误差积累效应。因此在这项工作中,我们用多步骤直接预测(DWS)策略与基于Transformer的模型进行对比,以验证其实际性能。

  

此外,虽然现有基于Transformer的LTSF模型显示出比传统方法更好的结果,在所有实验中,被比较的(非Transformer)基线都形成了自回归或多步骤迭代预测(IMS),这些方法在LTSF问题上有显著的误差积累效应。因此在这项工作中,我们用多步骤直接预测(DWS)策略与基于Transformer的模型进行对比,以验证其实际性能。

  并非所有的时间序列都是可预测的,更不用说长期预测了(例如对于混乱的系统而言)。我们假设,长期预测只对那些具有相对明确趋势和周期性的时间序列可行。由于线性模型已经可以提取这样的信息,我们引入一组名为LTSF-Liner的简单线性模型作为新的比较基线。LTSF-Liner用单层线性模型对历史时间序列进行回归,以直接预测未来的时间序列。我们在9个广泛使用的基准数据集上进行了广泛的实验,这些数据集包含了各种现实生活中的应用交通、能源、经济、天气和疾病。令人惊讶的是,我们的结果显示,LTSF-Liner线性模型在所有情况下都优于现有基于Transformer的复杂模型,而且往往有很大的优势(20%~50%)。此外,我们发现,与现有Transformer模型中的主旨相比,大部分Transformer模型都未能提取出长序列时间上的关系,也就是说,预测误差并没有随着回视窗口大小的增加而减少(有时甚至增加)。最后我们对现有基于Transformer模型进行了各种分析研究,以研究其中各种设计元素的影响,总而言之,这项工作包括:
     1.这是一项挑战Transformer模型对长期时间序列预测任务的有效性工作
     2. 根据LTSF-Liner在9个基准数据集上的表现,LTSF-Liner可以成为LSTF问题的一个新基线
     3.对现有基于Transformer模型各个方面进行全面实证研究,包括对长输入的建模能力,对时间序列顺序的敏感性,位置编码和子序列嵌入的影响,模型复杂度比较。

综上所述,我们认为,至少对于LTSF-Liner来说,基于Transformer的模型对长时间序列预测任务的有效性被严重夸大了。同时,虽然LTSF-Liner取得了较好的准确率,但它只是作为未来研究TSF问题的一个简单基线,我们也主张在未来重新审视基于Transformer的模型在其他时间序列分析任务中的有效性。

2. Preliminaries: TSF Problem Formulation

   对于包含C CC变量的时间序列,给定历史数据

当T > 1 时,多步迭代(IMS)预测通过学习一个单步预测器,并迭代应用它来获得多步预测;直接多步预测(DWS)直接一次性优化多步预测目标。与DMS预测结果相比,IMS预测的方差较小,这要归功于自回归机制,但它们不可避免地受到误差累计的影响。因此,当有一个高度准确的单步预测器,且T TT相对较小时,IMS预测是最好的。相反,当很难得到一个无偏的单步预测器时,或者T TT很大时,DMS预测会更准确。

3. Transformer-Based LTSF Solutions

   基于Transformer的模型在自然语言处理和计算机视觉等许多长期人工智能任务中取得了较好的表现,这都要归功于多头注意力机制的有效性。同时也引发了人们对基于Transformer的时间序列建模的大量研究。特别是大量的研究工作致力于LTSF任务。考虑到Transformer模型擅长捕捉长距离依赖关系的能力,他们中的大多数都集中在探索较少数据的长期预测问题上(T > > 1 )

  当把假想的Transformer模型应用到LSTF任务时,出现了一些局限性。包括原始的自我注意力机制的O(L^2)时间/内存复杂度和auto-regressive解码器设计造成的错误累积。Informer解决了这些问题,并提出了一个新的Transformer架构,降低了时间、内存复杂度,并提出DMS预测策略。后来,更多的Transformer变体在模型中引入了各种时间序列特征来实现性能或效率的提升。我们将现有基于Transformer的LSTM解决方案设计要素总结如下:

 Time series decomposition:

   对于数据的预处理,在LSF中常见的是zero-mean方法。此外,Autoformer首次在每个神经块后面应用季节性趋势分解,这是时间序列分析中的一种标准方法,可以使原始数据更加可预测。具体来说,该模型使用移动平均核(moving average kernel)来提取时间序列的趋势周期成分。原始序列与趋势成分间差值被视为季节性成分。在Autoformer模型分解方案的基础上,FEDformer进一步提出了专家混合策略,以融合不同移动平均核所提取的趋势成分。

Input embedding strategies:

Transformer架构中自我注意力层无法保留时间序列的位置信息,然而局部位置信息(即时间序列的顺序)是很重要的。此外,全局时间信息,如分层时间戳(周、月、年)和不可知的时间戳(假期和事件),也是有信息量的。为了增强时间序列输入的时间背景,在基于SOTATransformer的方法中,一个实用的设计是将7种方法嵌入模型,如固定位置编码、通道投影嵌入和可学习时间模块。此外,还引入了带有时间卷积层的嵌入层或可学习时间戳。

Self-attention schemes:

   Transformer主要依靠自注意力机制来提取成对元素的语义依赖关系,其冬季是为了减少 O(L^2)的时间和空间复杂度。Transformer近期工作提出了两种提高效率的策略。一方面,LogTrans使用Logsparse掩码将计算复杂度降低到 O(LlogL),而Pyraformer采用金字塔式注意力,以O(L)时间和内存复杂度捕捉层次上的多尺度时间依赖。另一方面,Informer和FEDformer在自我注意力矩阵中使用了低等级权重(low-rank property)。Informer提出了ProbSparse自注意力机制和自蒸馏操作,将复杂度降低到了O(LlogL),FEDformer设计了傅里叶变换增强块和小波增强块。最后,Autoformer设计了串联式自动相关机制来代替原来的自注意力层。

Decoders:

  vanilla Tranformer解码器以自回归方式输出序列,导致了缓慢的输入速度和错误累积效应,特别是对于长时间序列预测。Informer为DMS预测设计了生成式解码器。其他Transformer变体也采用类似的DMS策略。例如,Pyraformer使用全连接层串联空间时间轴(fully-connected layer concatenating Spatio-temporal axes)作为解码器。Autoformer分别提取趋势、周期特征并与季节成分自动相关机制叠加得到最终的预测结果。FEDformer也使用了相似的频率衰减块分解得到最终结果。
   Transformer模型效果依赖成对元素之间的语义关系,而自注意力机制本身是无序的(permutation-invariant),它对时间关系的建模能力主要取决于与输入标记相关的位置编码。考虑到时间序列中的原始数值数据(如股票价格或电力价值),它们之间几乎没有任何点状的语义关联。在时间序列建模中,我们主要对一组连续点间时间关系感兴趣,这些元素的顺序起着关键性作用,而并非成对关系。虽然采用位置编码和嵌入(embedding)模块有利于保留一些排序信息,但自我注意力机制的性质不可避免的导致时间信息丢失。根据上述观察,我们对重新审视基于Tranformer的LSTF解决方案有了兴趣。
 

4. An Embarrassingly Simple Baseline

    现有基于Transformer的LTSF解决方案(T >> 1)实验中所有被比较的非Transformer模型基线都是IMS预测技术,众所周知,这种策略会受到显著的错误累积效应影响。我们假设,这些作品的性能改进主要是由于其使用了DMS策略。

 为了验证这一假设,我们通过时间线性层提出了最简单的DMS模型,名为LTSF-Liner,作为比较的基线。LTSF-Liner通过加权和操作直接对历史时间序列做回归,以预测未来。其数学表达式为:X ^ i = W X i \hat{X}_{i} = WX_i 
X^ i=WX i,其中W ∈ R T×L是沿时间轴的线性层。X ^ i ,X^ i分别为预测值与输入值。值得注意的是,LTSF-Liner在不同变量间共享权重,并且不对任何空间相关进行建模
  L S T F − L i n e r LSTF-LinerLSTF−Liner是一组线性模型。Vanilla Linear是单层线性模型。为了处理不同领域(如金融、交通和能源领域)的时间序列,我们进一步引入了两种预处理方法的变种,名为DLiner和NLiner
  具体来说,DLinear是Autoformer和FEDformer中使用位置编码策略与线性层的组合。它首先将原始数据分别分解为移动平均分类量、季节趋势分量。然后将两个单层线性层应用于每个分量,我们将两个特征相加,得到最终预测结果。通过明确的处理趋势,当数据中存在明显趋势时,DLinear增强了vanilla linear性能。
同时,为了提高LTSF-Linear的性能,当数据集出现分布偏移时,NLinear首先用序列最后一个值减去输入。然后,输入经过一个线性层,在进行最终预测之前,将减去的部分加回来。NLinear中加减操作可以看做对输入序列的简单标准化
 

5. Experiments

5.1. Experimental Settings

Dataset.

我们在9个广泛使用的真实数据集上进行了广泛的实验,包括ETT(电力变压器温度)(ETTh1,ETTh2,ETTm1,ETTm2),交通,电力,天气,ILI,汇率。所有这些变量都是多变量时间序列,我们在附录中留下了数据描述。

Evaluation metric.

按照以前的工作,我们使用平均平方误差(MSE)和平均绝对误差(MAE)作为核心指标来比较性能。

Compared methods.

我们包括五个最近基于transformer的方法。FEDformer,Autoformer,Informer,Pyraformer和LogTrans。此外,我们还包括一个简单的DMS方法。Repeat模型,它重复回视窗口的最后一个值,作为另一个简单的基线。由于FEDformer有两个变种,我们比较了精度更好的一个。

5.2. Comparison with Transformers

在下表中,我们按照上述实验设置,在9个基准上广泛评估了所有提到的Transformer模型。令人惊讶的是,LTSF-Linear的性能在9个基准测试中得到了改善。在大多数情况下,LTSF-Linear比SOTA FEDformer在多变量预测上有20%~50%的改进,其中LTSF-Linear甚至不对变量之间的关联性进行建模。对于不同的时间序列基准,NLinear和DLinear在处理分布偏移和趋势季节性特征方面显示出优越性。我们还在附录中提供了ETT数据集的单变量预测结果,其中LTSF-Linear仍然以很大优势持续优于基于Transformer的LTSF解决方案。

 FEDformer在ETTh1数据集上实现了有竞争力的预测精度。这是因为FEDformer采用了经典的时间序列分析技术,如频率处理,这带来了时间序列的归纳偏差,有利于时间特征的提取能力。综上所述,这些研究结果显示,现有基于复杂Transformer模型在现有的9个基准上似乎并不有效,而LTSF-Linear可以成为一个强大的基线。另一个有趣的现象是,尽管Repeat模型在预测长期季节性数据(如电力和交通)时显示出较差的结果,但他在Exchange-Rate数据集上出人意料地超过了所有基于Transformer的方法(超出大约45%)。这主要是由于基于Transformer的方法对趋势错误预测造成的,它可能会对训练数据中突然变化的噪音进行过度拟合,从而导致显著的性能下降。相反Repeat没有偏向性如下图(b)

 如上图所示,我们绘制了在三个选定时间序列数据集上使用Transformer解决方案和LTSF-Linear的预测结果,这些数据具有不同的时间间隔。当输入为96个时间步长,输出为336个时间步长时,Transformer不能捕捉到电力和ETT2数据的偏向性。此外,它们也很难预测诸如汇率等非线性数据的趋势。这些现象进一步表明现有基于Transformer的解决方案对LTSF任务是不够的。


5.3. More Analyses on LTSF-Transformers

   现有的LSTF-Transformer能否从较长输入序列中很好的提取时间关系?回视窗口(look-back window)大小对预测的准确性影响很大,因为它决定了我们能从历史数据中学习多少。一般来说,一个具有强大时间关系提取能力的LSTF模型应该能够在较大的回视窗口尺寸下取得更好的结果。

  为研究输入回视窗口大小对模型的影响,我们分别使用{ 24 , 48 , 72 , 96 , 120 , 144 , 168 , 192 , 336 , 504 , 672 , 720 } \{24,48,72,96,120,144,168,192,336,504,672,720\}{24,48,72,96,120,144,168,192,336,504,672,720}作为回视窗口大小预测720个时间步长,下图显示了在两个数据集上MSE。与之前研究类似,当回视窗口大小增加时,现有基于Transformer的模型性能会下降或保持稳定,相比之下,所有的LTSF-Linear性能都随着回视窗口大小的增加而明显提升。因此,如果给定一个较长的序列,现有的解决方案倾向于过度拟合时间噪声,而不是提取时间信息,而输入时间步长96正好适合大多数Transformer模型。

虽然回视窗口的时间动态性对短期时间序列预测的准确性有显著影响,但我们假设长期预测取决于模型是否能够很好的捕捉趋势和周期性,也就是说,预测范围越远,回视窗口本身的影响越小。

为了验证上述假设,在下表中,我们比较了同一数据集两个不同回视窗口对未来720个时间步长的准确性。从实验结果来看,SOTATransformer性能略有下降,表明这些模型只能从相邻时间序列中捕捉到类似的时间信息。由于捕捉数据集的内在特征一般不需要大量的参数,即1个参数可以代表周期性。使用过多参数甚至会导致过拟合,这也部分解释了为什么LSTF-Linear比基于Transformer方法表现更好。

   自注意力机制对LTSF有效吗?

我们验证了现有Transformer中这些复杂的设计是否是有效的。前者(如Informer)是必不可少的。在下表中,我们逐步将Informer转换为Linear。首先,我们将每个自注意力层与一个线性层组合,称为Att.Linear,因为自注意层可以被视为一个权重动态变化的全连接层。此外,我们抛弃了Informer中其他辅助设计(例如FFN),留下嵌入层和线性层,命名为Embed-Linear。最后,我们将该模型简化为一个线性层。令人惊讶的是,Informer的性能随着结构逐渐简化而增长,这表明至少对于现有的LTSF基准来说,自注意力机制和其他复杂模块是不必要的。

现有的LSTF-Tansformer模型能否很好的保存时间秩序?

自注意力机制在本质上是permutation-invariant的,顺序因素影响不大。然而,在时间序列预测中,序列顺序往往起着关键作用。我们认为,即使有了位置和时间信息的嵌入,现有的基于Transformer的方法仍然会丢失时间信息。在下表中,我们在嵌入策略之前对原始输入进行了洗牌。两种洗牌策略,Shuf:随机清洗整个输入序列。Half-Ex:将输入序列的前一半与后一半交换。有趣的是,在汇率数据集上,与原始输入相比,即使输入序列被随机洗牌,所有基于Transformer的方法性格都没有波动。相反,LTSF-Linear性能却很差。这表明,具有不同位置和时间嵌入的LTSF-Transformer保留了相当有限的时间关系,在嘈杂的金融数据上容易过拟合,而LTSF-Linear可以自然的建立秩序关系,使用较少参数避免过拟合。

对于ETTh1数据集,FEDformer和Autoformer在其模型中引入了时间序列的inductive bias,使得它们可以在具有明显时间趋势(如周期性)的数据集中提取某些时间信息。因此,在Shuf模式下,模型失去了秩序信息,两模型平均降幅为73.28%和56.91%。此外,Informer在Shuf和Half-Ex模式下收到的影响较小,因为它没有时间上的inductive bias。总的来说,在所有情况下,LTSF-Linear平均降幅都大于基于Transformer的方法,这表明Transformer不能很好的保存时间顺序。

  不同的嵌入策略效果如何?我们研究了基于Transformer的方法中使用的位置和时间戳嵌入的好处。在下表中,如果没有位置嵌入(wo/Pos.),Informer的预测错误会大大增加。如果没有时间戳嵌入(wo/Temp),随着预测长度的增加,Informer性能将逐渐受损。由于Informer对每个标记使用一个时间步长,因此有必要在标记中引入时间信息。

   FEDformer和Autoformer不是在每个标记中使用单一时间步长,而是输入一连串的时间戳来嵌入时间信息。因此,它们可以在没有固定的位置嵌入情况下达到相当的甚至更好的性能。然而,如果没有时间戳嵌入,Autoformer的性能会迅速下降,因为它失去了全局时间信息。相反,由于FEDformer提出的频率增强模块引入了时间上的inductive bias,它在去除任何位置/时间戳后受到的影响较小。

 训练数据的大小是现有LTSF-Transformer的限制因素吗?

有些人可能会认为,基于Transformer的解决方案性能不佳是由于基准数据集规模太小。与计算机视觉或自然语言处理任务不同,LTSF是在多姿多彩的时间序列上进行的,因此很难扩大训练数据的规模。事实上,训练数据的大小将对模型的性能产生重大影响。因此,我们对交通数据集进行了实验,比较了在完整数据集(17544 * 0.7小时)、缩短后数据集(8760小时,即1年)上模型的精度。出乎意料的是,如下表,在大多数情况下,减少训练集误差也会随之减少。这可能是因为整年的数据比长但不完整的数据规模更能保持清晰的时间特征。虽然我们不能得出结论:我们应该使用更少的数据进行训练,但这表明训练数据的规模并不是影响Autoformer和FEDformer性能的限制性原因。

6. Conclusion and Future Work

Conclusion

这项工作对新兴的基于Transformer的长时间序列预测问题解决方案的有效性提出质疑。我们使用一个简单的线性模型LTSF-Linear作为DWS预测基线来验证我们的想法。请注意我们的贡献不在于提出了一个线性模型,而在于提出了一个重要的问题,展示了令人惊讶的对比,并通过各种角度证明了为什么LTSF-Transformer并不像这些作品中所说那样有效。我们真诚的希望我们的研究能对这一领域的未来的工作有所帮助。

Future work

LSTF-Linear模型效果有限,它只是为未来的研究提供了一个简单而有竞争力的基线,具有很强的可解释性。例如,单层线性网络很难捕捉到由变化点引起的时间动态变化。因此我们认为在新的模型设计、数据处理和基准方面有很大的潜力来解决困难的LSTF问题

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

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

相关文章

模型评估:A/B测试的陷阱

互联网公司中,A/B测试是验证新模块、新功能、新产品是否有效;新算法、新模型的效果是否有提升;新设计是否受到用户欢迎;新更改是否影响用户体验的主要测试方法。在机器学习领域中,A/B测试是验证模型最终效果的主要手段…

js逆向第16例:猿人学第12题入门级js

文章目录 一、前言二、定位关键参数三、代码实现一、前言 任务:抓取这5页的数字,计算加和并提交结果 既然是入门级,那肯定很简单了 二、定位关键参数 控制台查看请求数据,m值应该就是关键参数了 进入堆栈 马上定位到了m值"m": btoa(yuanrenxue + window.pag…

商品源数据如何采集,您知道吗?

如今,电子商务已经渗透到了人们生活的方方面面。2020年新冠肺炎突如其来,打乱了人们正常的生产生活秩序,给经济发展带来了极大的影响。抗击疫情过程中,为避免人员接触和聚集,以“无接触配送”为营销卖点的电子商务迅速…

安达发|APS换产矩阵功能带来的便利

APS换产矩阵功能是一种在生产计划和排程中广泛应用的工具,它能够帮助企业实现生产过程的优化和效率提升。通过使用APS换产矩阵功能,企业可以更好地管理生产线上的资源,合理安排生产任务,提高生产效率和产品质量。 1.AP…

Spacedesk | 最新版本移动端扩展PC副屏

我的设备: 电脑:戴尔G15 5511、i7-11800H、Windows 11、RTX3060(推荐显卡高级一些,算力差点的可能带不动这款软件) 平板:荣耀V6、麒麟985、安卓10、分辨率2000*1200(手机也行,我用的平板&…

Windows 双网卡链路聚合解决方案

Windows 双网卡链路聚合解决方案 链路聚合方案1:Metric介绍操作 方案2:NetSwitchTeam介绍操作 方案3:NIC介绍操作 方案4:Intel PROSet 链路聚合 指将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出/入…

Overleaf Docker编译复现计划

Overleaf Docker编译复现计划 Overleaf Pro可以支持不同年份的Latex镜像自由选择编译,这实在是一个让人看了心痒痒的功能。但是很抱歉,这属于Pro付费功能。但是我研究了一下,发现其实和Docker编译相关的代码,社区版的很多代码都没…

Windows下Python+PyCharm+miniconda+Cuda/GPU 安装步骤

1. 官网安装Python 3.9 Python Release Python 3.9.0 | Python.org 2. 安装pycharm https://download.jetbrains.com/python/pycharm-professional-2023.3.2.exe 3. 安装miniconda Miniconda — miniconda documentation 4. 安装完miniconda 创建虚拟环境 conda create …

吴飞教授 人工智能 模型与算法 启发式搜索课件发散分析

一、文章介绍 本文是针对吴飞教授在MOOC课程 :《人工智能:模型与算法》 2.1节 启发式搜索的课前发散 在课程2.1节 启发式搜索章节中,吴飞教授以如何计算城市地图两点之间最短路径为例,重点讲授了贪婪最佳优先搜索和A*搜索算法&a…

Android 集成firebase 推送(FCM)

1,集成firebase 基础 1>googleService文件 2>项目级gradle 3>app级gradle 4>setting 2,推送相关 重点: 源文档:设置 Firebase Cloud Messaging 客户端应用 (Android) (google.com) /*** 监听推送的消息* 三种情况…

php中常用的几个安全函数

1. mysql_real_escape_string() 这个函数对于在PHP中防止SQL注入攻击很有帮助,它对特殊的字符,像单引号和双引号,加上了“反斜杠”,确保用户的输入在用它去查询以前已经是安全的了。但你要注意你是在连接着数据库的情况下使用这个…

抵御爬虫的前线护盾:深度解读验证码技术的演变历程

一.前言 在当今信息技术迅速发展的背景下,网站和在线服务面临着日益增长的自动化访问威胁,这些大多来自于各类爬虫程序。这种大量的自动化访问不仅对网站的正常运行构成压力,还可能导致敏感数据的泄露,甚至被用于不正当竞争和恶意…

微内核、宏内核、混合内核,三者到底有什么区别?

最近几年,随着国内大厂纷纷发布自研操作系统,大家对这些操作系统的出身和相貌吵得不可开交。然而,本文并不打算陷入这种无尽的争论之中。 在计算机技术的发展历程中,所有的技术都是在不断的迭代和发展中形成的,无论是…

win10在启动游戏时报错,提示“d3dx9_25.dll文件丢失”,怎么办?d3dx9_25.dll丢失如何自动修复

一、d3dx9_25.dll文件是什么? d3dx9_25.dll是DirectX的一部分,DirectX是一种由微软开发的专门处理与多媒体、游戏程序和视频相关的应用程序接口。d3dx9_25.dll文件是DirectX9中一个重要的dll文件,主要负责处理3D图形程序,作用是帮…

python高校舆情分析系统+可视化+情感分析 舆情分析+Flask框架(源码+文档)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

图片双线性插值原理解析与代码 Python

一、原理解析 图片插值是图片操作中最常用的操作之一。为了详细解析其原理,本文以 33 图片插值到 55 图片为例进行解析。如上图左边蓝色方框是 55 的目标图片,右边红色方框是 33 的源图片。上图中,蓝/红色方框是图片,图片中的蓝/红…

记录误删除docker中极狐gitlab容器恢复过程

如题一次误操作导致删除了docker中极狐gitlab容器恢复过程 情况说明 创建容器时,我是用的是极狐官网推荐安装的步骤,具体按照官网步骤走就行 sudo docker run --detach \--hostname gitlab.example.com \--publish 443:443 --publish 80:80 --publish …

java通过okhttp方式实现https请求的工具类(绕过证书验证)

目录 一、引入依赖包二、okhttp方式实现的https请求工具类2.1、跳过证书配置类2.2、okhttp方式的 https工具类 三、测试类 一、引入依赖包 引入相关依赖包 <!--okhttp依赖包--> <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>…

书生·浦语大模型实战营-学习笔记2

目录 轻松玩转书生浦语大模型趣味Demo1. 大模型及 InternLM 模型介绍2. InternLM-Chat-7B 智能対话 Demo3. Lagent 智能体工具调用 Demo4. 浦语•灵笔图文创作理解 Demo5. 通用环境配置实验记录6. 课后作业 视频地址&#xff1a; (2)轻松玩转书生浦语大模型趣味Demo 文档教程&a…

Java电影购票小程序在线选座订票电影

Java电影购票小程序 功能&#xff1a;注册用户可已查看电影场次评价选座订票退票&#xff0c;影院管理员可以排片退款在线卖票和管理演播室等。超级管理员可管理电影排片电影院用户管理等。 演示视频 小程序&#xff1a; https://www.bilibili.com/video/BV11W4y1A7mK/?shar…