Informer 的简单介绍

Informer 学习笔记

1. 什么是时间序列预测?

  • 用例子来看比较好理解
    image
  • 符合一定时间规律的数据

2. 为什么是Informer?

  • 背景图
    image

2.1 几种简单任务

  • 短序列预测
    • 常用的 RNN 系列模型,可以很好的预测短期数据,比如利用 30 天数据,预测后 1-3 天的短期数据,但一旦需要预测的时序变长,效果不好。
    • 主要是因为 RNN 系列模型自身的记忆限制,过长的序列,会出现梯度消失(RNN)或之前信息丢失过多(LSTM),最后参考性不大,预测自然也逐渐失去效果。
      image
    • 具体点:LSTM 的缺点
      image
      1、并行处理上存在劣势
      2、RNN的梯度问题在LSTM及其变种里面得到了一定程度的解决,但还是更长的序列则依然会显得很棘手
      3、多个门的计算,意味着计算费时,如果时间跨度很大,且网络很深,计算量会很大,很耗时
      image
    • 图也可以看到预测序列越长,计算速度(红)和MSE损失(蓝)的变化。
  • 趋势预测
    • 预测的值加入数据继续预测,可以得出趋势,但不够精准,后期如果全是预测数据,则变成了预测的预测,效果可想而知。
  • 精准长序列预测
    • 序列长,还要精准,恭喜,Informer 可以。

2.2 简单看下老牌的算法

  • 除了 RNNs 系列,还有
    • Prophet:预测趋势,是个工具包。
    • Arima:经典算法,短序列可以,预测趋势不准。

3. 什么是Informer?

3.1 核心思想

3.1.1 Transfomer架构的优劣

  • 优势
    • 万能模型,实现简单,现成代码一大堆(Pytorch也可以调)。
    • 并行的(比较 LSTM 更快), 而且有注意力机制,全局信息丰富。
  • 劣势
    • 计算问题,注意力机制需要参考每一个序列,所以序列长,效率自然也低。
    • Decoder的输出墨迹,需要参考上一个预测结果推断当前预测。

3.1.2 需要优化的地方

  • Attention 计算(Faster) ——> Encoder 堆叠
  • Decoder 输出(Once All)

3.1.3 如何优化?

  • Attention 是否有多余的计算?
    image
    可以看出相关性可能只是一小部分,大部分都是低相关;也意味着对每一个 Q 来说,只有一小部分的 K 是与其相关性强的。
  • 剔除群众中的“坏人”
    • 首先搞清楚是哪一部分群众出了问题,Q 还是 K;
      K 是关键信息,而 Q 是查询条件,需要通过 Q 把 K 筛选,形成新的带解码信息;继而说明 Q 内有"坏人",去问的时候走形式不办事,所以浪费了时间和精力。
      image
    • 其次,研究如何从群众中剔除"坏人";
      首要的,找到坏人的共性或好坏群众的差异,形成标准去考核。
      • 坏 Q 分布像是均匀分布,为了利益四处不得罪;
      • 好 Q 分布某些位置相当活跃,权重差异较大(有事情是真上)。
    • 那么方法就是,计算分布差异,即每个 Q 分布与均匀分布的差异,来显示活跃度,差异越大越活跃,剔除活跃度低的 Q,公式如下:

    \[M\left( q_i,K \right) =ln\sum_{j=1}^{L_K}{e^{\frac{q_ik_{j}^{T}}{\sqrt{d}}}}-\frac{1}{L_K}\sum_{j=1}^{L_K}{\frac{q_ik_{j}^{T}}{\sqrt{d}}} \]

    • 优化 Attention 为 ProbAttention
      • 从 K 中随机采样对 Q 进行全员考核;
        为啥随机采样?之前几张图可以显示的很好,不光 Q 少,让 Q 敏感 的 K 也很少;简单理解,选拔式的考核,真正优秀的随机考都能过,普通的偶尔能过,坏的咋考都不能过。
        image
      • 那么现在每个 Q 都有 K 个得分,接着计算差异;
      • 而为了加速,论文比较绝,直接选最大值与均匀分布算差异,即

      \[\bar{M}\left( q_i,K \right) =\mathop {max} \limits_{j}\left\{ \frac{q_ik_{j}^{T}}{\sqrt{d}} \right\} -\frac{1}{L_K}\sum_{j=1}^{L_K}{\frac{q_ik_{j}^{T}}{\sqrt{d}}} \]

      • 最后从全员 Q 选出差异最大的 N 个(N 根据序列长度来定),和所有的 K 做内积。
        那没选的咋办?组织上还需要人,用 V 的均值代替。
      • 即与其用坏人,不如从后备人员里选觉悟高的平均人才,那么 N 个会更新,其余都是 V 均值向量。
  • Encoder 的 Attention 的堆叠
    • 为了提高效率,将每次经过 Attention 的数据,通过 MaxPool 操作下采样序列变为原先的 \(\frac{1}{2}\) 长度。
    • 其次,Q 和 K 的个数也随之变小。
    • 总的来说就是继续筛人,选精英。
      image
      image
  • Decoder 输出(Once All)
    • 传统的 Decoder 需要前序输出参考作用于后续输出(One By One)。能不能一下都输出(Once All),怎么做?
    • 从输入设置Start标志位,给一个简单引导,比如预测 20-30号的结果,需要给 Decoder 一个前序指导,10-20号的标签值。如下图所示(0为待预测结果)。

3.2 模型总体

  • 位置编码
    • 三合一大礼包,信息非常丰富。
    • 位置 + 时间 + 相关时间编码。
  • Encoder
    • 输入
      • 位置编码后的信息
    • 多头 ProbSpare Self-attention
      • ProbAttention
      • MaxPool
    • 输出
      • 待解码的特征(K, V)
  • Decoder
    • 输入
      • 带引导信息和待预测位置的输入
    • 多头 Masked ProbSpare Self-attention
      • Masked ProbAttention
      • MaxPool
    • 多头 Attention
      • 来自Decoder下层的 Q 和 Encoder 输出的 K,V
    • 输出
      • 解码完成的信息
  • 全连接层
    • 输出

3.3 Informer 源码

点击这里获取 Informer 源码。

posted @ 2022-10-16 09:46  bok_tech  阅读(1567)  评论(0)    收藏  举报