• 时序预测任务:当前的输出与前面的输出也有关,即xt = f(xt-1, xt-2......xt-n)f 即时序神经网络

传统RNN:n个输入n个输出、n个输入1个输出

以n个输入,1个输出为例,上图是一个经典的 RNN 神经网络架构,输入(x1,x2,x3,x4输出一个预测值y

具体而言,利用公式 ht = f(U * xt + W * ht-1 + b)h1 开始迭代计算出 h4,再通过 y = g(V * h4 + c)计算出最终结果 y,其中 U,W,b,V,c 是神经网络训练学习出的参数,让损失函数尽量小的参数,g 是激活函数,如图中的Softmax

  1. 初始化h0,输入x1,得到h1

  2. 利用h1,输入x2,得到h2

  3. 利用h2,输入x3,得到h3

  4. 利用h3,输入x4,得到h4

  5. 利用h4,输出最终的y值

RNN变体:n个输入,m个输出

如上图所示,采用经典的 Encoder-Decoder 结构,即拥有两个 RNN 网络,一个叫Encoder,一个叫Decoder,将(x1,x2,x3,x4编码为(h1,h2,h3,h4 ,再由编码后的(h1,h2,h3,h4计算出cc 可以有多种方式计算,如图中的(1)、(2)、(3)均可,作为 Decoder 网络的输入,然后Decoder 网络再进行预测

  • 注:实际上 h0 通常是 h4

  • 缺点:实际上Decoder 网络只用到了一个输入 c ,无法完全表达整个序列的信息,体现不出时序的特点

  • 修改,引入注意力机制,将 c 变为 c1, c2, c3作为Decoder 网络的输入:

其中

a11、a12 ...... a34 也是神经网络训练学习出的参数(也有直接用点积计算的,详见注意力机制章节)