一、输入层Encoder改进:
1、ProbAttention算法计算权值:
原Transformer中的注意力机制时间复杂度N^2,而Informer作为实时性要求高的长时间序列预测算法必然需要提高效率,降低时间开销。
- 1.简化K:
- 对每个Q不再与所有K计算,而是随机选取25个K,这样减少计算量
- 2.简化Q:
- 每个Q与各自随机选取的25个K计算结果有25个值,选取最大值作为Q结果
- 对所有Q,选取最大的前25个Q ,因为这25个Q具有较好的区分度
- 25个Q之外的其余Q使用96个特征V的均值作为Q结果,因为这些Q区分度不大,可以看做均匀分布
- 得到的输出结果:
- 32代表patch数量。
- 8代表8头,即每个向量都有8个不同的Q、K,即从8个角度对序列进行计算。
- 25即为25个Q。
- 96为K的总数,虽然我们在计算Q时各自只选了25个K,但是最后Q需要与所有96个K进行内积才能融合所有K的特征。
2、Self-attention Distilling算法:
同样是在Transformer中的改进,为了降低时间开销。
- Distilling算法在每层堆叠Self-attention(Transformer Encoder)时调用Distilling算法使输入序列长度减半,降低了时间开销,同样的QK的选取个数也随之减少。
二、输出层Decoder改进:
- 预测某天的值需要将该天之前的真实值作为已知输入
- 多个输出结果一口气输出,不用串行等待前一个数据的输出结果。