关于自然语言处理:详解NLP和时序预测的相似性附赠AAAI21最佳论文INFORMER的详细解析

3次阅读

共计 6072 个字符,预计需要花费 16 分钟才能阅读完成。

摘要:本文次要剖析自然语言解决和时序预测的相似性,并介绍 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

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

正文完
 0