Beyond Efficient Transformer for Long SequenceTime-Series Forecasting就是用Transformer的方法来对长时间的序列进行一个预测的问题。
这篇文章主要面向的问题是序列数据的预测,通过研究历史序列数据掌握其中的规律,进而去预测该序列未来的趋势;长时间序列包括它输入的时候是一个很长的序列,也包括输出的时候它预测一个很长的时间范围,比如说我们预测高速公路的车流量,可能是五分钟一个点,但是我要预测未来10天的或者半个月的那就相当于预测上千个点,这就是指这个长时间序列预测问题。
对长时间的序列进行预测有两个要求,一个是预测能力要比较好,还有一个是由于它的输入和输出序列是非常长的,所以对于这种长的输入输出要有比较高的效率。目前Transformer方法在序列预测上取得了比较好的效果,所以想用Transformer去解决一下这个问题,但是针对这种长时间序列预测的问题上,规范的Transformer有几个局限性。
Transformer的问题
1.计算self-attention的时间复杂度为O(L2)
2.输入长时间序列导致内存占用过大
3.对于长时间序列预测问题,预测速度下降
首先就是Transformer的时间复杂度和空间复杂度都是O(L2)(L序列长度)因为这个Transformer就是利用self-attention构成Encorder Decoder模型,self-attention就是对一个时刻计算其他所有的时刻与他的相似程度,就是重要性;Transformer是堆叠了好多个mult-head self-attention,如果你的时间序列很长的话,它堆叠多然后就导致它变量多,占用的内存过大;TF目前很多的深度网络模型一样是Encorder和Decoder的结构,它在解码的时候动态的,需要根据上一个Encoder输出然后输入到Decoder里面来逐步预测,所以当预测的时间点越长,速度越慢,这个结构在长序列的输入输出的情况下,效率就不是很好。
三个改进:
1. ProbSparse Self-attention
2. Self-attention Distilling
3.Generative Style Decoder
所以就引出了本篇文章,他用的方法就是Informer,通过改进TS模型,更好的预测能力。三个改进解决了上面的三个问题。1.在Self-attention的时候用了一个ProbSparse来降低时间复杂度;2.是做了一个Self-attention Distilling(蒸馏自注意),因为它输入的序列是非常长的,所以它认为信息在这些序列中是比较稀疏的,所以它进行了一个蒸馏提取,将输入的长序列信息进行一个浓缩;3.针对上面提到的这个预测的效率问题,对decoder提出了一个generative style decoder,不再使用step by step的方式,滚动预测,一步到位把未来的值全部计算出来,使得预测的效率会变得更高。这就是这篇文章整个的一个逻辑。