Autoformer 架构详细解释
上述图片展示了 Autoformer 架构的工作流程,包含编码器和解码器的结构。我们来详细解析图中的各个组件及其功能:
编码器部分(Autoformer Encoder)
-
输入数据(Encoder Input):
- 输入的是需要预测的时间序列数据。
-
自动相关机制(Auto-Correlation):
- 这个模块通过检测时间序列中的周期性依赖关系,生成相关矩阵(K, Q, V 表示键、查询和值)。
- 自动相关机制帮助捕捉序列中隐含的周期性信息。
Autoformer之自动相关机制(Auto-Correlation Mechanism)的实现文章链接
-
序列分解模块(Series Decomp):
- 蓝色模块用于将时间序列分解为季节性部分和趋势-周期性部分。
- 分解后的数据更容易建模,特别是季节性成分。
Autoformer 架构之序列分解模块(Series Decomp)的实现的文章链接
-
前馈网络(Feed Forward):
- 红色模块,前馈神经网络用于处理分解后的序列,提取更多特征。
- 经过处理后的数据再经过一次序列分解模块进一步细化。
Autoformer 架构之前馈网络(Feed Forward)的详细解释文章链接
-
多层堆叠(N×):
- 编码器由多个这样的模块堆叠组成,以增强特征提取和建模能力。
解码器部分(Autoformer Decoder)
-
季节性初始化(Seasonal Init):
- 初始季节性部分设为零(Zero),表示开始时没有特定的季节性模式。
-
趋势-周期性初始化(Trend-cyclical Init):
- 初始趋势部分设为输入数据的均值(Input Data Mean),作为趋势累积的起点。
-
自动相关机制(Auto-Correlation):
- 绿色模块,解码器的自动相关机制帮助利用编码器传递的季节性信息。
- 这一模块在解码器中再次检测并利用时间序列中的周期性依赖关系。
-
序列分解模块(Series Decomp):
- 解码器中的蓝色模块继续对数据进行分解,处理趋势和季节性成分。
-
前馈网络(Feed Forward):
- 红色模块,前馈网络进一步处理分解后的数据,提取更多特征。
-
多层堆叠(M×):
- 解码器也由多个这样的模块堆叠组成,以增强特征提取和预测能力。
-
预测输出(Prediction):
- 解码器最终生成预测结果,将所有处理过的信息结合起来。
详细步骤解析
-
时间序列输入:
- 原始时间序列数据被输入到编码器中进行处理。
-
编码器处理:
- 自动相关机制:检测并利用时间序列中的周期性依赖关系,融合相关信息。
- 序列分解模块:将时间序列分解为季节性和趋势-周期性成分,去除长周期趋势,专注于季节性模式。
- 前馈网络:处理分解后的序列,提取更多特征,并再次分解细化。
- 编码器的这些处理过程在多个堆叠层中重复,以提取更丰富的特征。
-
解码器初始化:
- 季节性初始化设为零,趋势初始化设为输入数据的均值。
-
解码器处理:
- 解码器同样使用自动相关机制和序列分解模块处理数据。
- 每个步骤包括自动相关检测、序列分解和前馈网络处理,逐步累积趋势成分。
- 自动相关机制在解码器中利用编码器传递的季节性信息,增强预测能力。
-
预测生成:
- 最终,解码器将所有处理过的信息结合起来,生成对未来时间序列的预测。
总结1
Autoformer 通过嵌入分解模块和自动相关机制,解决了长期时间序列预测中的复杂性。编码器去除长周期趋势,专注于季节性模式建模;解码器则逐步累积趋势信息,并利用编码器传递的季节性信息进行预测。这个架构有效提升了时间序列预测的准确性和效率。
Autoformer 架构详细解释及具体数据举例
我们将使用具体的数据示例来详细说明 Autoformer 架构的全流程,包括编码器、解码器、序列分解模块和前馈网络的工作过程。
假设我们有如下的时间序列数据,表示某个商店的月度销售额(单位:千元):
月份 | 销售额 (千元) |
---|---|
2019年1月 | 100 |
2019年2月 | 120 |
2019年3月 | 130 |
2019年4月 | 150 |
2019年5月 | 170 |
2019年6月 | 180 |
2019年7月 | 190 |
2019年8月 | 200 |
2019年9月 | 220 |
2019年10月 | 230 |
2019年11月 | 240 |
2019年12月 | 260 |
2020年1月 | 130 |
2020年2月 | 140 |
2020年3月 | 160 |
2020年4月 | 180 |
2020年5月 | 170 |
2020年6月 | 190 |
2020年7月 | 200 |
2020年8月 | 210 |
2020年9月 | 220 |
2020年10月 | 230 |
2020年11月 | 240 |
2020年12月 | 260 |
编码器部分(Autoformer Encoder)
-
输入数据(Encoder Input):
- 输入的是要预测的时间序列数据。
-
自动相关机制(Auto-Correlation):
- 计算自相关函数来检测时间序列中的周期性依赖关系。
- 例如,检测到每年有一个周期性模式。
-
序列分解模块(Series Decomp):
- 将时间序列分解为季节性部分和趋势-周期性部分。
-
前馈网络(Feed Forward):
- 对分解后的序列进行非线性变换,提取更多特征。
-
多层堆叠(N×):
- 编码器由多个这样的模块堆叠组成,以增强特征提取能力。
示例:编码器处理流程
-
序列分解:
-
假设我们使用移动平均法和傅里叶变换来分解序列。
-
趋势部分:
月份 趋势 (千元) 2019年1月 160 2019年2月 165 2019年3月 170 2019年4月 175 2019年5月 180 2019年6月 185 2019年7月 190 2019年8月 195 2019年9月 200 2019年10月 205 2019年11月 210 2019年12月 215 2020年1月 220 2020年2月 225 2020年3月 230 2020年4月 235 2020年5月 240 2020年6月 245 2020年7月 250 2020年8月 255 2020年9月 260 2020年10月 265 2020年11月 270 2020年12月 275 -
季节性部分:
月份 季节性 (千元) 2019年1月 -60 2019年2月 -45 2019年3月 -40 2019年4月 -25 2019年5月 -10 2019年6月 -5 2019年7月 0 2019年8月 5 2019年9月 20 2019年10月 25 2019年11月 30 2019年12月 45 2020年1月 -90 2020年2月 -85 2020年3月 -70 2020年4月 -55 2020年5月 -70 2020年6月 -55 2020年7月 -50 2020年8月 -45 2020年9月 -40 2020年10月 -35 2020年11月 -30 2020年12月 -15
-
-
前馈网络处理:
- 对趋势和季节性成分进行非线性变换,例如:
- 输入向量 x t = [ 趋势 t , 季节性 t ] x_t = [\text{趋势}_t, \text{季节性}_t] xt=[趋势t,季节性t]
- 经过前馈网络,得到处理后的特征向量 h 2 , t h_{2,t} h2,t
- 对趋势和季节性成分进行非线性变换,例如:
解码器部分(Autoformer Decoder)
-
季节性初始化(Seasonal Init):
- 初始季节性部分设为零(Zero),表示开始时没有特定的季节性模式。
-
趋势-周期性初始化(Trend-cyclical Init):
- 初始趋势部分设为输入数据的均值(Input Data Mean),作为趋势累积的起点。
-
自动相关机制(Auto-Correlation):
- 利用编码器传递的季节性信息进行处理。
-
序列分解模块(Series Decomp):
- 解码器继续对数据进行分解和处理。
-
前馈网络(Feed Forward):
- 对分解后的数据进行进一步处理,提取更多特征。
-
多层堆叠(M×):
- 解码器由多个这样的模块堆叠组成,以增强特征提取和预测能力。
示例:解码器处理流程
-
初始化:
- 季节性初始化设为零。
- 趋势初始化设为输入数据的均值。
-
自动相关机制:
- 利用编码器的输出,检测并聚合周期性依赖关系。
-
序列分解和前馈网络:
- 对输入进行分解,提取和处理特征。
最终预测
通过编码器和解码器的多层处理和特征提取,最终生成对未来时间序列的预测。例如,预测2021年1月至12月的销售数据:
月份 | 预测销售额 (千元) |
---|---|
2021年1月 | 135 |
2021年2月 | 145 |
2021年3月 | 165 |
2021年4月 | 185 |
2021年5月 | 175 |
2021年6月 | 195 |
2021年7月 | 205 |
2021年8月 | 215 |
2021年9月 | 225 |
2021年10月 | 235 |
2021年11月 | 245 |
2021年12月 | 265 |
总结2
通过这个具体数据的例子,我们详细展示了 Autoformer 架构中各个部分的工作流程。编码器通过序列分解和前馈网络提取特征,解码器利用这些特征生成预测。整个过程通过多层处理和自动相关机制的应用,有效地捕捉了时间序列中的趋势和季节性模式,提高了预测的准确性。