2023年商品量化专题报告 Transformer结构和原理分析

  • 来源:中信期货
  • 发布时间:2023/04/12
  • 浏览次数:1338
  • 举报
相关深度报告REPORTS

商品量化专题报告:如何利用Transformer~based模型对价格进行“天气预报”.pdf

商品量化专题报告:如何利用Transformer~based模型对价格进行“天气预报”。在上一篇报告中,介绍了如何利用RNN系列算法对价格进行单元单步预测,本文围绕多元长序列预测展开,尝试实现类似于天气预报的预测效果。RNN系列算法具有较强长期依赖性不适用于长序列预测,因此本文选择具有超强信息提取能力的Transformer模型为落脚点展开讨论。然而由于Transformer模型存在过高计算复杂度这一瓶颈,因此本文从近两年顶会论文中挑选出三个基于Transformer的改良模型(Informer、Autoformer和FEDformer)分别进行了介绍和测试对比。为测试...

一、引言

在上篇报告中,我们讨论了短期时序预测的方法,优化后的预测模型在短 期预测中取得较好的拟合效果。然而,在现实生活中,短期价格预测对策略帮 助有限,需得对未来价格进行长周期预测才能更充分地对行情进行判断。在上 篇报告中介绍的 RNN 系列网络使用的是递归结构,因此只能进行单向依次计算, 限制了模型的并行能力。同时,RNN 系列网络存在长期依赖问题,随着时间推移, RNN 会忘记较长时间之前的信息,从而造成梯度消失和梯度爆炸现象。因此, RNN 等网络只能进行短期预测。

近几年越来越多的学者尝试将 Transformer 运用 在长序列预测中,Transformer 自 2017 年被提出后在 NLP 和 CV 领域取得巨大的 成功,是第一个完全依赖自注意力机制来捕捉输入与输出信息关系的传导模型。 自注意力机制保留该时刻信息与先前所有时刻信息的直接连接,能够缓解梯度 消失和梯度爆炸的问题,允许信息在更长的序列上传播。同时,Transformer 不 是类似 RNN 的顺序结构使用,具有更好的并行性,符合现有的 GPU 框架。然而, Transformer 存在三大挑战:二次时间复杂度、高内存使用量和 encoderdecoder 架构局限性,使其不能直接适用于长期时序预测问题。

本文罗列了 3 个 近两年改良比较成功的模型,它们针对 Transformer 存在的问题提出了不同改 进手段,分别为 1)Informer 模型,来自发表于 AAAI21 的一篇最佳论文 《 Informer : Beyond Efficient Transformer for Long Sequence TimeSeries Forecasting》,提出了 ProbSparse 自注意机制、自注意蒸馏操作和生 成式解码器这三大改进,极大地降低了模型的计算复杂性; 2)Autoformer 模 型,由清华大学软件学院机器学习实验室在 2021 年提出,包含深度分解架构, 和自相关机制两大创新点,能有效提升了长序列模型的预测性能;

3) FEDformer 模型,由阿里达摩院在 2022 年提出,使用了低秩近似(low-rank approximation)将计算复杂性降为线性,并进一步提升了模型的预测精度。本 篇为本系列的第二篇,分为三大部分,第一部分将介绍 Transformer 模型的要 点和结构原理;第二部分将介绍三个变形模型各自的结构原理;第三部分将利 用 Transformer 和三个变形模型对期货价格分别进行长序列预测并对比预测结 果。

二、Transformer的结构和原理

Transformer 模型和上篇报告中介绍的 RNN 系列模型差别较大, Transformer 模 型 宏 观 上 使 用 了 Encoder-Decoder 框 架 , 并 且 在Encoder(编码器)和 Decoder(解码器)部分都使用了多头注意力机制(Multi-Head Attention),因此本部分先对注意力机制进行介绍,再对 Transformer 结构进行 详细介绍。

(一)注意力机制

注意力机制最早由 Treisman 和 Gelade 提出,是一种模拟人脑注意力机制 的模型,其核心目标是通过计算注意力的概率分布来从众多信息中突出某关键 输入信息对输出的影响。目前大多数注意力机制均基于 Encoder-Decoder 框架, 但需要注意的是注意力机制可以看作一种通用思想,本身是不依赖于特定框架 的,而 Encoder-Decoder 框架可以看作是一种深度学习领域的研究模式,拥有 广泛的应用场景,在 NLP 领域中常用的 Encoder-Decoder 抽象框 架。

这个框架中共含有三个部分分别为:Encoder(编码器)、Decoder(解码器) 和语义表示 C。其中,Encoder 把一个变长的输入序列 X(1, 2, … , ),通过非 线性变换转化为一个中间的语义表示 C: = (1, 2, … , );Decoder 是根据输 入序列 X 的中间语义表示 C 和先前已经生成的1, 2, … , −1来预测并生成 i 时刻 的输出 = (1, 2, … , −1, ),()和()均为非线性转化函数。在这种传统框 架中,输入信息被全部保存在语义表示 C 中,因此模型精度受输入句子长度的 影响严重,从而在模型中引入了注意力机制。

和抽象的 Encoder-Decoder 框架相比,引入注意力机制后 改变最大的部分在于语义表示 C,原先针对不同输出值的语义表示 C 都是一致的, 现在语义表示 C 会根据输出值对输入值做相应的权重分配。在面对一个任务时, 可以把输入内容作为 Source,生成目标作为 Target,Source 可以看成由多个 对组成,而 Target 则由不同的 Query 组成,因此 Attention 机制 的本质就是计算每一个 Query 在 Source 中所对应的值。

1.自注意力机制(Self-Attention)

梳理完 Attention 机制后,将目光转向 Transformer 中使用的 SelfAttention 机制。和 Attention 机制相比 Self-Attention 机制最大的区别在于, Self-Attention 机制中 Target 和 Source 是一致的,所以 Self-Attention 机制 是 Source 内部元素之间或者 Target 内部元素之间发生的 Attention 机制。 Self-Attention 在计算过程中会直接将输入信息中任意两个信息直接联系起来, 所以能有效缓解 RNN 系列算法自带的长期依赖问题。 SelfAttention 的计算流程,把 Query、Key 和 Value 分别装入 Q、K 和 V 三个矩阵中, 再将三个矩阵带入以下公式中(公式 2)就可以求得 Value 的权重,这种计算方法 被称为缩放点积注意力(Scaled Dot-Product Attention),其中,为 Key 的维 度。

(二)Transformer结构详解

Transformer 模型的整体结构,由 Input、Encoder、Decoder 和 Output 四部分组成,我们根据模型处理流程进行一一理解。

1. 输入编码。输入信息在进入 Encoder 和 Decoder 部分前会经历两种编码转换,分别为 Input/Output Embedding 和 Positional Encoding。由于是运用在时序预测中, 输入信息大都为结构数据,因此在 Embedding 部分仅需对输入信息进行维度转 换。Position Encoding 部分是利用输入信息的位置进行编码,因此可以提取出 序列的顺序特征,具体公式如下: (, 2) = sin ( 10000 2 )(公式 4) (, 2 + 1) = cos( 10000 2 )(公式 5) 然后,将两种编码转换后的 Tensor 相加就可以带入相应的 Decoder 和Encoder 部分。

2. Encoder 部分。在 Vaswani 发表的论文中,Encoder 部分共含有 6 层,前一层的输出会作为 输入传入下一层中,最后一层 Encoder 的输出会输入到 Decoder 中。每一层 Encoder 中都含有两小层,分别为:一层 Multi-Head Attention 和一层 Feed Forward,每一小层后都带有一个 Add & Norm 层。

首先来看一下 Add & Norm 层 的作用,add 是指残差连接,将上一层网络的输入和输出相加,即 F(x)+x,相 当于每层求导时都加上一个常数项 1,能缓解梯度消失的问题;Norm 是指归一 化,需要注意的是 Transformer 中使用的归一化方式都是 Layer Normalization, 即在每一个样本上计算均值和方差来进行归一,公式如下: ( ) = ∗ − √ 2 + + (公式 6) 然后是 FeedForward 层,由两个线性变换和一个 ReLU 激活函数组成,公式 如下: () = max(0, 1 + 1 ) 2 + 2(公式 7) FFN 层通过第一层线性变换,将每个位置的注意结果映射到一个较大维的特 征空间,再利用 ReLU 激活函数进行过滤,最后通过再次线性变化将输出结果恢 复到原始维度。Multi-Head Attention 已在上文中进行介绍,此处就不详说了。

3. Decoder 部分。Decoder 部分和 Encoder 部分一样,都含有 6 层,每层包含三小层,分别为: 一层 Masked Multi-Head Attention、一层 Multi-Head Attention 和一层 FeedForward,Decoder 部分的 FeedForward 层和 Encoder 是一样的,主要看一 下 Masked Multi-Head Attention 层和 Multi-Head Attention 层。Masked Multi-Head Attention 层在 self-attention 机制上使用了 Mask 掩盖,来防止 Decoder 依据未来信息进行预测。Multi-Head Attention 层和 Encoder 中的 Multi-Head Attention 层相比,计算结构是一样的,但输入 Q、K 和 V 来源不同, Q 是来源于 Decoder 中上一层的输出,K 和 V 来源于 Encoder 的输出。

4. 输出部分。输出部分比较简单,由一层线性转换和一层 SoftMax 层组成,Decoder 的输 出向量经过线性转换改变维度,再进行 SoftMax 计算就能得到最终的概率矩阵。

三、Informer的结构和原理

在引言中有提到 Transformer 模型的三大挑战:二次时间复杂度、高内存 使用量和 Encoder-Decoder 架构局限性,这三大挑战使 Transformer 模型不能被 直接运用在长序列预测中,需要对算法和结构进行调整,Informer 模型就是改 良较为成功的一种模型, Informer 模型的结构,橘色、绿色和蓝 色标志标出来的部分都是 Informer 主要改变的地方。针对平方级的计算复杂度 这一大挑战,Informer 提出了 ProbSparse Self-Attention 机制,也就是橘色圈出的部分,通过筛选出重要的 Query 来降低计算复杂度。现在,我们 来看一下 ProbSparse Self-Attention 机制的细节。

Tsai 在 2019 年提出,第 i 个 Query 的 Attention 公式可以从概率的角度改写成如下公式 8 形式: ( ,, ) = ∑ ( , ) ∑ ( , ℓ ) ℓ = ( | ) [ ] (公式 8) ( |) = ( , ) ∑ ( , ℓ ) ℓ (公式 9) ( |) = 1 (公式 10) 其中,( |)也就是公式 9,定义了一个概率的形式,即在给定第 i 个 Query 条件下 key 的分布。公式 10 是公式 9 的特殊形式,代表了均匀分布,若 此 Query 分布接近均匀分布则说明此 Query 是“Lazy”的,反之说明 Query 是 “Active”的。“Lazy”的 Query 对自注意力贡献较少,因此通过筛去“Lazy” 的 Query 来降低 Transformer 模型的计算复杂度。

为了解决第二大挑战高内存使用量的问题,Informer 在 Encoder 的每层 Multi-head ProbSparse Self-Attention 层后都加入了一层自注意力蒸馏 (Self-Attention Distilling)的操作,来对上一层的输出结果进行降维。Distilling 的计算过程, 先利用卷积层对输入信息进行特征提取,再对提取后的信息进行一个 ELU 激活 过滤,最后通过最大池化层进行降维,以此来增强特征信息的鲁棒性。

最后一大挑战就是 Encoder-Decoder 结构自带的局限性,Transformer 模型 中的 Decoder 部分采用的是 step-by-step 式的动态解码,因此解码速度很慢, Informer 提出了 Generative Style Decoder。 Informer 将 Start token 技术扩展到生成式的方法中,不再像以往选择一个额 定的标志作为标记,而是从输入序列中抽取一个相对更短的长序列作为输入, 因此可以一步得出同样长度的输出结果,具体计算流程见公式 16。 = ( ,0 ) ∈ ℝ (+)×(公式 16) 以上就是 Informer 模型对 Transformer 模型提出的三大改造,其他部分还 是保持了 Transformer 模型原本的设置。这三大改造将模型的时间复杂度从 ( 2 )降到(()),相关研究也证明 Informer 模型预测结果的拟合程度远高 于 Transformer 模型。

四、Autoformer的结构和原理

Informer 通过使用稀疏形式的注意力机制来缓解二次复杂度的问题,虽然 在解决复杂度的问题上起到了效果,但也引起了信息未充分利用的问题,因此 Autoformer 模型被提出,针对 Transformer 的瓶颈进行了新一轮改良, Autoformer 模型主要含有两大革新点:深度分解架构和自相关机制。深度分解 架构是 Autoformer 模型的整体架构,包含三大部分:序列分解 单元、自相关机制以及相应的 Encoder-Decoder 结构。

以往的序列分解方法包括上篇报告中介绍的 EMD 分解都是先对过去序列进 行分解,再分别进行预测,这样会使预测结果受限于分解效果,且忽视未来各 分解序列的相互作用。为了克服这个缺陷,Autoformer 将序列分解融合到整体 模型中,遵循传统的分解手段将序列分解为季节项(Seasonal)和趋势项(Trendcyclical),从而实现渐进式分解。序列分解单元(Series Decomp Block)的 具体分解计算流程,如公式所示: = (())(公式 17) = − (公式 18) , = ()(公式 19)。

以上公式中代表了长度为 L 的输入序列,和分别代表了经均线分解 后的季节项和趋势项,公式 19 就是 Series Decomp Block 的综合表达式。了解 了分解手段后,来细看一下模型结构。首先是模型输入,Encoder 的输入就是简 单的历史序列ℝ∗,为过去的时间长度;Decoder 的输入分为季节项 (ℝ ( 2 +)× )和趋势项(ℝ ( 2 +)× )两部分,需要注意的是前 2 部分是由 分解得到的,后面 O 长度部分分别由 0 和均值补齐。具体计算公式如下: , = ( 2 : ) (公式 20) = (, 0 )(公式 21) = (, )(公式 22)。

然后是 Encoder 和 Decoder 的结构,在 Encoder 部分中,通过层层分解, 逐步消除趋势项,只保留季节项,每一大层主要由一层自相关机制和一层 Feedforward 层组成。 ℓ,1,_ = ( − ( ℓ−1 ) + ℓ−1 )(公式 23) ℓ,2,_ = (( ℓ,1 ) + ℓ,1 )(公式 24) ℓ = ( ℓ−1 )(公式 25) 若 Encoder 部分含有 N 大层,那第ℓ层的输出可以归纳写成公式 25 的形式。 在 Decoder 中,因为序列是被分为季节项和趋势项两部分分别解码,所以采用 双路处理模式。在上层对季节项的解码中,先通过自相关机制提取出未来季节 波动中的时间依赖特性,再在自相关机制中融合 Encoder 部分提取出的历史依 赖关系,最后通过一层 FeedForward 层输出结果。

而下层对趋势项的解码则采 用了加权法,将上分支每个子层的输出进行加合。具体计算公式如下: ℓ,1 , ℓ,1 = (( ℓ−1 ) + ℓ−1 )(公式 26) ℓ,2 , ℓ,2 = (( ℓ,1 , ) + ℓ,1 )(公式 27) ℓ,3 , ℓ,3 = (( ℓ,2 ) + ℓ,2 )(公式 28) ℓ = ℓ−1 + ℓ,1 ℓ,1 + ℓ,2 ℓ,2 + ℓ,3 ℓ,3 (公式 29) ℓ = ℓ,3 (公式 30) 假设 Decoder部分共有M层,那模型最终的输出结果为 + 。这 样的一个框架就是 Autoformer 模型的深度分解框架,刚刚有提到自相关机制。

五、FEDformer的结构和原理

FEDformer 模 型 是 在 2022 年 由 阿 里 达 摩 院提 出 的 , 之前提出的Transformer 变形虽然都已经在初始 Transformer 的基础上实现了优化,但仍难 以捕捉时序的总体特征和分布,因此 FEDformer 提出了两大革新:1.提出频率 增强分解的Transformer 结构,融入季节趋势分解手段,来更好地捕捉时序全 局特性;2.在 Transformer结构中提出了傅里叶增强模块和小波增强模块,来 替代原本的自注意力机制。FEDformer的整体结构,主要包括四 大子模块:频域增强模块 FEB(Frequency Enhanced Block)、分解模块(MOE Decomp)、频域增强注意力模块 FEA(Frequency Enhanced Attention)和前向传 播模块(Feed Forward)。

FEDformer 的整体架构和 Autoformer 非常相似,但除 了 Feed Forward 块,其他子模块的具体设计均不一致。同时,在 FEB 和 FEA 模 块中都分别使用了离散傅里叶变换(DFT)和离散小波变换(DWT)两种不同手段, 从而存在两种不同版本,因此我们分傅里叶增强结构和小波增强结构两部分进 行讲解。

(一)傅里叶增强结构

一般信号在频域上具有稀疏性,因此使用傅里叶变换将信号从时域转换到 频域,在频域中只需保留少部分点位,就能近似还原出时域信号。此结构使用 了离散傅里叶变换(DFT),DFT 的时间复杂度为( 2 ),此结构通过随机选择一个傅 里叶变换的子集极大地降低了输入向量的长度从而降低了计算复杂度。 我们先来看一下使用傅里叶变换的频率增强模块(FEB-f),该模块在结构中的 Encoder 和 Decoder 部分均有涉及。输入信息 x 先通过一次线性变化转换 成 q,再对 q 进行傅里叶变换得到 Q,在 Q 中随机挑选出 M 个子序列,再将挑选 出的子序列与 R(一个随机初始化的参数化内核)进行点乘得到 Y,对 Y 进行填充 (零的部分填充为ℂ ×)后再进行逆傅里叶变换就可以得出最终的模块输出。

然后是使用傅里叶变换的频率增强注意力模块。首先,对由 Queries、Keys 和 Values 得出的矩阵 q、k 和 v 进行傅里叶变换,挑选出 M 个子序列就得出了 相应的̃、̃和̃,将̃和̃相乘并用激活函数进行过滤,此处激活函数可以使用 SoftMax 函数或者 Tanh 函数,对过滤后的值和̃相乘并对结果进行填充(零的部 分填充为ℂ ×),最后进行一次逆傅里叶变换就可以得到最终输出结果。

(二)小波变换增强结构

小波变换是在傅里叶变换的基础上发展而来的,傅里叶变化把信号从时域 转换到频率能够更好地捕捉全局信息,非常适合转换平稳序列。然而傅里叶变 换只包含频率分析,没有时域分析,因此无法获取各频率出现的时间信息,无 法捕捉局部特征,在面对突变和非平稳信号时效果就很差,由此提出了小波变 换的概念,小波变换能够提供一个随频率改变的“时间-频率”窗口,能考虑到 时域和频率两方面,因此缓解了傅里叶变换的瓶颈。对于给定的(),n 尺度下 多小波系数可以被分别定义为 = [〈, ∅ 〉 ]=0 −1 , = [〈, 〉 ]=0 −1,其中∅ 为分段多项式小波的标准正交基。

FEB-w 不同于 FEB-f 的递归机制,输入信息会被循环分解成 3 个部分,独立地进行运作。在小波分解部分中,使用了固定勒让德小波分解基分解矩阵。承 接的三个 FEB-f 模块被分别用来处理产生的高频部分、低频部分和小波分解后 遗留下来的部分。对于每一个周期 L,它会产生一个处理过的高频张量(), 一个处理过的低频张量()和原始低频张量( + 1)。这是一种阶梯向下的方 法,分解阶段通过 1/2 因子对信号进行抽取,运行最多 L 个循环,其中 < 2()对于大小为 M 的给定输入序列。

通常,L 被设置成一个固定参数,在不 同分解周期 L 中,这三个 FEB-f 模块是共享的。而在小波重建部分中,会同样 递归式的构建输出张量。在每一个循环 L 中,我们合并分解部分得出(), ()和( + 1)生成()。在每一个循环中,信号张量的长度维度会被提高两 倍。FEA-w 和 FEB-w 一样都包含了分解和重构阶段,FEA-w 和 FEB-w 的重构阶段 是一致的,唯一的区别在于分解阶段。使用相同的分解矩阵对 q,k,v 信号分 别进行分解,同时,q,k,v 也使用了相同的处理模块。上文中提及的 FEB-w 模 块包含了三个用于信号处理的 FEB-f 模块,此处的 FEB-f 模块可以看作是一种 自我注意力机制的替代,同时在 FEA-w 中使用了三个 FEA-f 模块。此外,另加 了一个 FEA-f 模块来处理剩余最粗的 q(L),k(L),v(L)信号。

理解完 FEB 和 FEA 模块后,我们来看一下另一个改变较大的模块:分解模 块(MOE Decomp)。因为通常观察到的复杂周期部分是与真实世界中的趋势相融 合的,所以凭借固定窗口的平均池化来提取趋势会非常困难。本模型为克服这 个问题,提出了混合专家分解模块,它包含一组大小不同的平均过滤器来从输 入信号中提取多个趋势成分和权重,并将它们组成最终趋势。

FEDformer 的主要结构就是这些,它和 Autoformer 模型最大的区别点在于: Autoformer 是将序列分解为多个时域子序列进行特征提取,而 FEDformer 是采 用频率变换将序列分解为多个频域模态来提取特征,所有的频率特征都是从整 个序列中得出,因此具备更好的全局特性。本文接下来将在 CU、IF 和 T 三个品 种的主力合约上测试 Transformer、Informer、Autoformer 和 FEDformer 四大 类模型的预测效果。

六、预测结果分析

(一)数据选择和处理

本文选取沪铜期货、沪深 300 股指期货和十年期国债期货主力合约为测试 标的。考虑到上市时间,沪铜期货和沪深 300 股指期货数据集选用的时间范围 均为 2011 年 1 月 1 日至 2022 年 12 月 31 日,每个合约共 2917 行数据,十年期 国债期货数据集选用时间为 2015 年 3 月 20 日至 2022 年 12 月 31 日,共 1898 行 数 据, 将数 据集 划分 为 训练 集 、 验证 集和 测 试集 ,其 中 切 割比 率为 0.8:0.1:0.1。所有测试均使用日频数据,选取各主力合约的开盘价、最高价、 最低价、成交量和收盘价作为模型的输入特征。

(二)预测结果评价指标

因为本次测试结果涉及多维,因此选用平均绝对误差(MAE)和均方误差(MSE) 两种误差评价指标对模型预测性进行评估,两种指标的计算公式如下: = 1 ∑|( − ̂)|(公式 55) =1 = 1 ∑( − ̂ ) 2 =1 (公式 56) 其中,为真实值,̂为预测值,̅为真实值的平均值,m 为序列长度。MSE 和 MAE 用来衡量真实值和预测值间的偏差,值越小表明预测误差越小。

(三)模型参数设置

为探究参数设置对测试结果的影响,分别使用了过去 20/40/60 个交易日的 日频数据对未来 5/10/20/40/60 个交易日的收盘价进行预测。参考相关论文, Encoder 和 Decoder 部分网络均设置为两层,多头机制部分多头设置为 8, Batch-size 设置为 32,迭代次数设置为 20,并使用早停机制,当连续 5 次迭代轮次的损失值出现增加时停止训练。因为是对时序预测精度进行判断,因此选 取均方误差(MSE)作为损失函数,采用 Adam 作为优化器进行训练,超参数使用 默认参数,所有预测结果为随机训练三次结果的均值。最后,本文是基于 python 语言环境,以 PyTorch 作为深度学习框架进行训练和预测。

(四)预测结果展示和分析

首先,将输入长度设置为 20 利用各个模型对 CU、IF 和 T 三个品种的主力合 约收盘价分别进行预测。我们有以下几点发现,第一:几乎 在所有情况下,FEDformer 的预测精度都是显著优于其他三个模型的,当输出长 度较短时使用小波增强模块的 FEDformer 模型的预测精度高于使用傅里叶增强 模块的 FEDformer 模型,反之亦然。因此,我们认为使用傅里叶变换将时序从 时域转换到频域进行判断能更好地消除噪音,捕捉时序的全局特征,提高模型 预测拟合精度。同时,在对短序列进行预测时,通过小波增强模块捕捉价格位 置对时序变化的影响能再次强化模型的预测能力。第二:存在一次 Transformer 的预测精度优于其他模型的情况。我们发现在预测较短长度的序列时, Transformer 模型的预测结果经常优于 Autoformer 和 Informer 模型。

此外,由 于本次测试是随机训练三次,因此发现除 FEDformer 外其他三个模型的预测结 果都非常不稳定,三次预测的结果差别较大。因此,我们认为仅凭时域关系对 价格进行预测存在极大偶然性,虽然可能出现某次预测精度较优的情况,但预 测能力不稳定,普适性较差。同时,Transformer 模型的计算复杂度虽然高,但 在预测较短价格序列时,这一缺点并不明显,并不会对预测精度造成过多负面 影响。第三:预测精度会随着预测序列长度逐步削弱,尤其在预测长度高于输 入长度后,精度会发生更明显滑落,因此我们尝试通过扩大输入序列的长度来 再次优化模型的预测能力。

经过测试发现,预测结果并未与预期一致,输入长度扩大后,不管是预测 多久的序列,不同模型的预测精度都被削弱了。同时,除 FEDformer 外的三个 模型在对短序列进行预测时,这种削弱影响会更为明显。我们仔细考虑后得出 以下可能性分析,首先价格序列中噪音成分通常较大,输入序列越长噪音影响 越大。其次,Autoformer 等依靠序列自相关性进行预测的模型通常抗噪能力较 差,在预测短序列此类趋势不明显的序列时,更易受到噪音干扰,因此预测能 力下降明显。其他方面,不管输入序列和输出序列长度如何设置,和之前预测 结果一致,FEDformer 模型的预测结果几乎都是最优且最稳定的,这一点也再次 证明了 FEDformer 模型具有更强的普适性。

最后,我们结合模型的计算复杂度来综合比较一下这四个模型。虽然 FEDformer 模型公式推导后的计算复杂度是最低的,但它单 次迭代所需时间是最久的,其他三个模型的迭代时间较为相近,FEDformer 单次 迭代所需时间是其他三个模型的三倍多,采用小波增强模块的 FEDformer 单次 迭代所需时间比采用傅里叶增强模块的 FEDformer 更久。因此我们认为在输入 长度和输出长度较短时,Transformer 过高计算复杂度带来的影响并不明显, FEDformer 模型的优势更多体现于全局信息的捕捉和降噪能力。

七、结论与展望

本文详细介绍了 Transformer 模型的层结构和具体算法,并从近两年顶刊 论文中挑选出三个模型:Informer、Autoformer 和 FEDformer 进行针对性介绍, 最后在 CU、IF 和 T 三个期货品种的主力合约上进行测试,发现: 1. 不管输入序列和输出序列长度如何设置,FEDformer 模型都取得了更优 地预测结果。同时,通过使用小波增强模块,可以获取时序位置对价格变动的 影响,以此优化 FEDformer 模型对短序列的预测能力。 2. Autoformer、Informer 和 Transformer 模型在多次测试中虽然存在较 优的预测结果,但在不同轮次中预测精度跳跃较大,预测结果存在较强偶然性, 预测能力不稳定,普适性较差。

3. 所有模型的预测精度并不会随着输入长度增加而提高,输入长度越大, 预测精度反而越低。同时,预测精度会随着输出长度的增加而削弱。 4. 在对较短序列进行预测时,Transformer 过高计算复杂度对预测精度和 迭代耗时的负面影响并不明显。相反 FEDformer 模型单次迭代所需时间最高, 是其他三个模型所需时间的三倍多。在很多情况中,Transformer 模型的预测精 度也是优于 Autoformer 和 Informer 模型的。

价格时序中信噪比较低,去噪能力和信息提取能力同样重要,综合来看, 在这四个模型中 FEDformer 会更适用于价格的长序列预测。本系列更侧重于对 算法本身的介绍和使用方法的讨论,之后会在其他系列中运用此系列介绍的算 法进行具体因子和交易策略的构建。此篇为本系列的第二篇,结合上一篇 RNN 系列的算法尝试为投资者提供从量化的角度对价格进行长短期多维度判断的方 法,同时,本次测试并未对神经网络层数、神经元个数和迭代次数进行过多讨 论,后续可以通过更改参数来对模型进行更深地挖掘。

编辑:999感冒灵
  • 相关标签
  • 热门文档
  • 热门文章
  • 本年热门
  • 本季热门
  • 本月热门
  • 本年热门
  • 本季热门
  • 本月热门
分享至