摘要:本文次要剖析自然语言解决和时序预测的相似性,并介绍Informer的翻新点。

前言

时序预测模型无外乎RNN(LSTM, GRU)以及当初十分火的Transformer。这些时序神经网络模型的次要利用都集中在自然语言解决下面(transformer就是为了NLP设计的)。在近些年来,RNN和Transformer逐步被利用于时序预测下面,并获得了很好的成果。2021年发表的Informer网络取得了AAAI best paper。本文次要剖析自然语言解决和时序预测的相似性,并介绍Informer的翻新点。

具体的本文介绍了

• 晚期机器翻译模型RNN-AutoEncoder的原理

• RNN-AutoEncoder升级版Transformer的原理

• 时序预测与机器翻译的异同以及时序预测算法的分类

• AAAI21最佳论文,时序预测模型INFORMER的翻新点剖析

RNN AutoEncoder

晚期自然语言解决:RNN autoencoder

Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. “Sequence to sequence learning with neural networks.” arXiv preprint arXiv:1409.3215 (2014). (google citation 14048)

这里以机器翻译为例子,介绍RNN autoencoder的原理。

输出句子通过分词,编码成数字,而后embedding成神经网络能够承受的向量。

在训练过程中,能够应用teacher forcing,即decoder的输出应用实在值,迫使在训练过程中,误差不会累加

在在线翻译过程中,encoder局部流程雷同,decoder局部,指标句子是一个单词一个单词生成的

晚期RNN auto encoder构造尽管相比于传统模型获得了巨大成功,但encoder,decoder之间的信息流传仅仅时由繁多的一个隐层链接实现的,这样势必会造成信息失落,因而,Bahdanau, Dzmitry, Kyunghyun Cho, and Yoshua Bengio. “Neural machine translation by jointly learning to align and translate.” arXiv preprint arXiv:1409.0473 (2014).(citation 16788)提出在输出和输入之间减少额定的attention链接,减少信息传递的鲁棒性以及体现输入句子中不同单词受输出句子单词影响的差异性。

Transformer

2017-划时代:Transformer—LSTM autoencoder的延申。

既然attention成果如此的好,那么是否只保留attention而摈弃循环神经网络呢?

Google在17年年底提出了transformer网络,带来了nlp的技术反动。

transformer实质上还是一个信息程序传递的模型。次要蕴含了positional encoding(用于辨别词语呈现的先后顺序),self-attention, attention, 以及feed forward网络四大局部。与RNN不同的是,Transformer利用了attention机制进行信息传递,具体的,self-attention的信息传递机制如下:

一个词向量和句子中所有词向量形成的矩阵做相干失去相关性向量,做softmax归一化后,求得所有词向量形成的加权和,失去新的词向量。

transformer同样用attention机制,代替了RNN-AE中用来传递句子之间信息的隐层链接。此外,在decoder阶段,为了保障矩阵中上一个下一个单词仅仅由他后面的单词决定,在self-attention中,还须要做一个上三角矩阵的masking。

在训练过程中,个别同样采取teacher forcing的办法,即decoder输出是残缺的指标句子的embedding。而在在线翻译的时候,仍然从采取了如RNN-AE一样的滚动输入的形式,即初始输出为<SOS>,余下向量全副用padding。失去输入后,一个一个退出到decoder输出中,直到遇到<EOS>。

在transformer提出当前,基于Transformer的BERT预言模型成为了NLP中统治级别的模型。

时序预测与机器翻译的异同

时序预测依照输出的区别能够分为两大类,即间接时序预测和滚动时序预测。

间接时序预测,的输出是被预测局部的工夫戳,输入是被预测局部的值。在训练过程中间接时序预测算法首先把输入和工夫戳的关系建设为y=f(x)函数,而后用训练集拟合这个函数。在预测阶段,间接输出被预测局部的工夫戳即可取得目标值。典型的算法即为FB的PROPHET算法。

与间接时序预测算法不同的是,滚动工夫序列预测算法绝大部分都不依附工夫戳信息。滚动工夫序列预测把工夫序列模型建设为x_{t+1,t+n}=f(x_{t−m,t})_xt_+1,_t_+_n_=_f_(_xt_−_m_,_t_),即被预测时间段的值由历史时间段的值决定。在训练阶段,把训练集切分为一个一个的输入输出对,用SGD迭代缩小输入和指标实在值的误差,在预测阶段用被预测数据前一段的历史数据作为输出,失去预测输入。

现阶段,基于深度学习的预测算法绝大多数都属于滚动工夫序列预测类别。

时序预测与机器翻译的相同点
• 数据输出都是一个工夫序列矩阵
○ 时序预测的输出矩阵为(t, d_{feature})(_t_,_dfeature_), t为输出工夫长度,d_{feature}_dfeature_为每个工夫点的数据维度
○ nlp的输出矩阵为(t, d_{embed})(_t_,_dembed_),t为输出句子的最大长度,d_{embed}_dembed_为此嵌入向量长度
• 都是一个seq2seq的问题,能够用RNN-AE以及Transformer解决

时序预测与机器翻译的不同点
• nlp中,词语须要一系列预处理能力失去网络输出矩阵而时序预测中,输出矩阵是天然造成的。
• nlp中,在线翻译采取了滚动输入的形式,nlp输入先做softmax并匹配为单词后,从新做embedding才作为下一次预测的输出,这样的作法能够克服一部分误差累积。而在时序预测中,如果采取滚动输入的形式,上一个工夫点的输入是间接被当作下一时间点的输出的。这样可能会带来过多的误差累积。

Informer论文剖析

Transformer近些年来成为了时序预测的支流模型。在刚刚完结的AAAI 2021中,来自北航的论文Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting失去了BEST paper的荣誉。Informer论文的主体仍然采取了transformer encoder-decoder的构造。在transformer的根底上,informer做出了诸多进步性能以及升高复杂度的改良。

  1. Probsparse attention

a. transformer最大的特点就是利用了attention进行时序信息传递。传统transformer在信息传递时,须要进行两次矩阵乘,即(softmax(QK)^T/sqrt{d})∗V(_softmax_(_QK_)_T_/_d_)∗_V_,则attention的计算复杂度为O(L_q L_k)_O_(_Lq__Lk_),其中L_q_Lq_ 为query矩阵的工夫长度,L_k_Lk_ 为key矩阵的工夫长度。为了缩小attention的计算复杂度,作者提出,attention的信息传递过程具备稠密性。以t工夫为例,并非所有t工夫以前的工夫点都和t工夫点都有关联性。局部工夫点和t工夫点的关联性十分小,能够疏忽。如果疏忽掉这些工夫点和t工夫点的attention计算,则能够升高计算复杂度。

b. attention的数学表达式为
out_i=softmax(q_i K^T)V=sumlimits_{j=1}^{L_k}frac{exp(q_ik_j^T/sqrt{d})}{sumlimits_{l=1}^{L_k}exp(q_ik_j^T/sqrt{d})}v_j=sumlimits_{j=1}^{L_k}p(k_j|q_i)v_j_outi_=_softmax_(_qi__KT_)_V_=_j_=1∑_Lk__l_=1∑_Lk_exp(_qi__kjT_/_d_)exp(_qi__kjT_/_d_)_vj_=_j_=1∑_Lk__p_(_kj_∣_qi_)_vj_
在计算attention的时候,若q_i_qi_ 和key矩阵整体相关性较低,则p(k_j |q_i )_p_(_kj_∣_qi_)进化为均匀分布,这时,attention的output进化为了对value矩阵的行求均值。因而,能够用p(k_j |q_i )_p_(_kj_∣_qi_)和均匀分布的差异,即p(k_j |q_i )_p_(_kj_∣_qi_)和均匀分布的KL散度,来度量queryq_i_qi_ 的稠密度。如果KL散度高,则依照传统办法求attention,如果KL散度低,则用对V求行均匀的形式代替attention。总的来说,INFORMER中提出了一种度量query稠密度(和均匀分布的类似水平)并用value的行均匀近似attention的办法。

c. 具体的令q为均匀分布,p为p(k_j |q_i )_p_(_kj_∣_qi_),则KL散度通过计算为M(q_i,K)=lnsumlimits_{j=1}^{L_k}e^{frac{q_ik_j^T}{sqrt{d}}}-frac{1}{L_k}sumlimits_{j=1}^{L_k}frac{q_ik_j^T}{sqrt{d}}_M_(_qi_,_K_)=ln_j_=1∑_Lk__ed__qi__kjT_−_Lk_1_j_=1∑_Lk__d__qi__kjT_
依照INFORMER的思维,即可对每一个query计算KL散度,而后取topk的query进行attention,其余的query对应的行间接用V的行均匀进行填充。

d. 依据以上的思维,在attention的时候的确能够升高复杂度,然而,在排序的时候,复杂度仍然是O(L_k L_q)_O_(_Lk__Lq_)。因而,作者又提出了一种对M(q_i,K)_M_(_qi_,_K_)排序进行近似计算的形式。在这里,因为证实波及到我的一些生疏畛域,例如随机微分,我并没有深刻取细嚼慢咽。这里就间接出现论断。

i. M(q_i,K)=lnsumlimits_{j=1}^{L_k}e^{q_i k_j^T/sqrt{d}} −frac{1}{L_k}sumlimits_{j=1}^{L_k}{q_i k_j^T}/sqrt{d}_M_(_qi_,_K_)=ln_j_=1∑_Lk__eqi__kjT_/_d_−_Lk_1_j_=1∑_Lk__qi__kjT_/_d_ 能够用其上界bar{M}(q_i,K)=maxlimits_j({q_i k_j^T/sqrt{d}}) −frac{1}{L_k}sumlimits_{j=1}^{L_k}{q_i k_j^T}/sqrt{d}_M_(_qi_,_K_)=_j_max(_qi__kjT_/_d_)−_Lk_1_j_=1∑_Lk__qi__kjT_/_d_代替,作者证实近似后大概率不影响排序。

ii. 上界在计算的时候能够只随机采样一部分k_j_kj_,缩小k_j_kj_ 也就缩小了乘法的次数,升高了复杂度。作者在附录中证实这样的随机采样近似大概率对排序没有影响。

e.

i. 作者在附录中,给出了probsparse self-attention的具体实施过程

ii. 在第2行,对K进行采样,使得sparse 排序过程得以简化复杂度

iii. 在第5行,只选出top-u作为query,使得attention做了简化

f. 对于probsparse,须要留神的问题有以下几点:

i. 这个机制只用在了self-attention中。在文中,作者把提出的办法称为了prob-sparse self-attention,在源代码中,也只用在了self-attention中。至于为什么不能用于cross-attention,当初不太分明。

ii. 这个机制在有三角矩阵masking的状况下也不能用,因为在有masking的状况下,query和key的乘法数量原本就缩小了。

iii. 因而,probsparse只能用于encoder的self-attention中

iv. 尽管论文中提出probsparse能够缩小复杂度,但因为减少了排序的过程,不肯定能缩小计算工夫,在一些数据长度原本就较少的状况下,可能会减少计算工夫。

  1. Attention distilling

a. 与一般transformer不同的是,因为probsparse self-attention中,一些信息是冗余的,因而在前面采取了convolution+maxpooling的办法,缩小冗余信息。这种办法也只能在encoder中应用。

  1. CNN feed forward network

a. 在17年的transformer中,feedforward网络是用全连贯网络形成的,在informer中,全连贯网络由CNN代替。

  1. Time stamp embedding

a. Time stamp embedding也是Informer的一个特色。在一般的transformer中,因为qkv的乘法并不辨别矩阵行的先后顺序,因而要加一个positional encoding。在INFORMER中,作者把每个工夫点工夫戳的年,月,日等信息,也退出作为encoding的一部分,让transformer能更好的学习到数据的周期性。

  1. Generative decoding

a. 在NLP中,decoding局部是迭代输入的。这样的作法如果在时序预测中利用的化,在长序列预测中会引起较长的计算复杂度。其次,因为NLP中有词语匹配的过程,会较少噪声累积,而时序预测中,这种噪声累积则会因为单步滚动预测而变得越发显著。

b. 因而,在decoding时,作者采取了一次输入多部预测的形式,decoder输出是encoder输出的前面局部的截取+与预测指标形态雷同的0矩阵。

其中,X_{token}_Xtoken_ 由X_{feed_en}_Xfeed___en_ 后半局部截取而成。

  1. Informer代码:https://github.com/zhouhaoyi/Informer2020

点击关注,第一工夫理解华为云陈腐技术~