论文信息
论文名字:Enhancing the Locality and Breaking the Memory Bottleneck of Transformer on Time Series Forecasting
发表:2019NIPS
论文地址:https://arxiv.org/abs/1907.00235
要解决的问题
locality-agnostics:原始的Transformer架构在自注意力中通过点乘的方式计算相似度,对局部关系不敏感;
memory-bottleneck:Transformer的空间复杂度会随着输入长度的变化而指数级增长。
Method
Enhancing the locality of Transformer
采用因果卷积的方式,Q、K和V选择了不同的卷积核大小,增加历史信息,使得自注意力机制能更加多地关注局部信息。
Breaking the memory bottleneck of Transformer
从当前单元之前的单元中选择一个子集,降低输入的长度,进而缓解Transformer的存储瓶颈,而该子集的索引构成如下:
I
l
k
=
{
l
−
2
⌊
log
2
l
⌋
,
l
−
2
⌊
log
2
l
⌋
−
1
,
l
−
2
⌊
log
2
l
⌋
−
2
,
…
,
l
−
2
0
,
l
}
I^k_l=\{l-2^{\lfloor \log_2 l \rfloor},l-2^{\lfloor \log_2 l \rfloor-1},l-2^{\lfloor \log_2 l \rfloor-2},\dots,l-2^0,l \}
Ilk={l−2⌊log2l⌋,l−2⌊log2l⌋−1,l−2⌊log2l⌋−2,…,l−20,l}例如,
l
=
1024
=
2
10
l=1024=2^{10}
l=1024=210,
I
l
k
=
{
1024
−
2
10
,
1024
−
2
9
,
1024
−
2
8
,
…
,
1024
−
2
0
,
1024
}
I_l^k=\{1024-2^{10},1024-2^9,1024-2^8,\dots,1024-2^0,1024\}
Ilk={1024−210,1024−29,1024−28,…,1024−20,1024}。
实验验证
验证指标
(直接拷贝了)
人造数据上的实验结果
使用一个3层LSTM构成的模型作为baseline,并构造伪数据:
A
1
、
A
2
、
A
3
A_1、A_2、A_3
A1、A2、A3是随机生成的,
A
4
A_4
A4取三者最大。
在这个数据中,
t
0
t_0
t0表现得越大,对预测就越难,因为需要记住更多的内容。
实验结果证明,相较于LSTM,Transformer能够更好地在长距离上保证准确率。
真实世界数据的实验
Long-term and short-term forecasting,无论是在长、短期的预测中,本文的方法都有很好的表现。
Convolutional self-attention,针对因果卷积中的卷积核大小进行的消融实验。主要是两个数据集之间的差别,electricity数据集相对简单,因此无论k是多少,效果都还好;但是traffic的数据集的挑战更高,因此当k变大的时候,效果较为显著。
同时,使用了因果卷积的方法,收敛更快,这一点在两个数据集上,表现是一致的。
Sparse attention,kernel size=6,
L
e
1
=
768
(
f
o
r
s
p
a
r
s
e
)
,
L
e
2
=
293
(
f
o
r
f
u
l
l
)
;
L
t
1
=
576
,
L
t
2
=
254
L_{e_1}=768(for \ sparse),L_{e_2}=293(for\ full);L_{t_1}=576,L_{t_2=254}
Le1=768(for sparse),Le2=293(for full);Lt1=576,Lt2=254,作者们认为他们的方法无论是在electricity上还是traffic上,都有很好的表现。在traffic上表现更强的一点原因在于数据本身有更强的长距离依赖,在相同的memory负载下,full的表现不如sparse。
可是当full和sparse的长度一致时,full在electricity上的表现都更好;在traffic上,作者们认为具有长距离依赖关系的数据更加适用。但是在不加入卷积的基础上,sparse的效果还不如full,即使加入了卷积,提升也不明显。
Conclusion
在他们自己构造的数据集上,验证了Transformer在长距离依赖上的有效性,但是数据集不具备普适性,或者没有什么挑战性。
而在公开的数据集上,提升也并没有特别的多。
更多的提升应该是来自因果卷积的加入,提供了更多的历史信息,而稀疏矩阵的效果并没有达到预期中的效果,尤其是在存储上,也并没有看到很多的提升。
因此我认为这篇论文的因果卷积部分是一个创新(相较于2019年),而之后再解决存储的问题上也确实提供了可行的方法(商榷一下?)。
更详细的其实可以参考这篇博文,里面还有关于附录内容的讲解;同时也可以参考知乎上匿名大佬的评价。
力有不逮,还请见谅。