0
点赞
收藏
分享

微信扫一扫

详细版【循环神经网络RNN】(邱锡鹏)

循环神经网络RNN

详细代码实现见同专栏下博文

  • 给网络增加短期记忆能力的方法

    • 延时神经网络:
      • 在前馈网络中的每个非输出层都添加一个延时器,记录神经元的最近几次活性值
      • 在第 t 个时刻,第 𝑙 层神经元的活性值依赖于第 𝑙 − 1 层神经元的最近𝐾 个时刻的活性值,即 𝒉𝑡(𝑙) = 𝑓(𝒉𝑡(𝑙−1) ,𝒉𝑡-1(𝑙−1) , ⋯ , 𝒉𝑡−𝐾(𝑙−1)),其中𝒉𝑡(𝑙) ∈ ℝ𝑀𝑙 表示第 𝑙 层神经元在时刻 𝑡 的活性值。
    • 有外部输入的非线性自回归模型NARX
      • 自回归模型AR:用一个变量 𝒚𝑡 的历史信息来预测自己. 𝒚𝑡 = 𝑤0 + ∑ 𝑤𝑘𝒚𝑡−𝑘 + 𝜖𝑡 ,其中𝐾为超参数,𝑤0 , ⋯ , 𝑤𝐾 为可学习参数,𝜖𝑡 ∼ 𝒩(0, 𝜎2 )为第𝑡 个时刻的噪声, 方差和时间无关。
      • NARX是自回归模型的扩展:在每个时刻 𝑡 都有一个外部输入𝒙𝑡,产生一个输出𝒚𝑡,NARX通过一个延时器记录最近𝐾𝑥次的外部输入和最近𝐾𝑦次的输出,第 t 个时刻的输出 𝒚𝑡𝒚𝑡 = 𝑓(𝒙𝑡 , 𝒙𝑡−1, ⋯ , 𝒙𝑡−𝐾𝑥 , 𝒚𝑡−1, 𝒚𝑡−2, ⋯ , 𝒚𝑡−𝐾𝑦 ),其中𝑓(⋅)表示非线性函数,可以是一个前馈网络,𝐾𝑥 和𝐾𝑦 为超参数。
    • 循环神经网络:使用带自反馈的神经元,能够处理任意长度的时序数据。
      • 给定一个输入序列 𝒙1∶𝑇 = (𝒙1 , 𝒙2 , ⋯ , 𝒙𝑡 , ⋯ , 𝒙𝑇),循环神经网络通过下面公式更新带反馈边的隐藏层的活性值𝒉𝑡: 𝒉𝑡 = 𝑓(𝒉𝑡−1, 𝒙𝑡 ),其中𝒉0 = 0,𝑓(⋅)为一个非线性函数,可以是一个前馈网络。
      • 隐藏层的活性值𝒉𝑡也叫状态或隐状态。
      • 也具有通用近似定理,且图灵完备。
  • 具体应用

    • 序列到类别模式

      假设样本𝒙1∶𝑇 = (𝒙1 , ⋯ , 𝒙𝑇)为一个长度为𝑇 的序列,输出为一个类别 𝑦 ∈ {1, ⋯ , 𝐶}。将样本 𝒙 按不同时刻输入到循环神经网络中,得到不同时刻的隐藏状态 𝒉1 , ⋯ , 𝒉𝑇,并将 𝒉𝑇 看作整个序列的最终表示输入给分类器𝑔(⋅)进行分类,即 𝑦 = 𝑔(𝒉𝑇)。也可以对整个序列的所有状态进行平均,并用这个平均状态来作为整个序列的表示,即 𝑦 = 𝑔 (1/𝑇 ∑𝒉𝑡)
      在这里插入图片描述

    • 同步的序列到序列模式:序列标注(严格的对应关系和长度关系)
      在这里插入图片描述

    • 异步的序列到序列模式:编码器-解码器

      先编码后解码:输入为长度为 𝑇 的序列 𝒙1∶𝑇 = (𝒙1 , ⋯ , 𝒙𝑇), 输出长度为𝑀 的序列𝑦1∶𝑀 = (𝑦1 , ⋯ , 𝑦𝑀),先将样本𝒙按不同时刻输入到一个循环神经网络(编码器)中,并得到其编码𝒉𝑇,再用另一个循环神经网络(解码器)得到输出序列𝑦̂。

      𝒉𝑡 = 𝑓1 (𝒉𝑡−1, 𝒙𝑡 ) ∀𝑡 ∈ [1, 𝑇]

      𝒉𝑇+𝑡 = 𝑓2 (𝒉𝑇+𝑡−1, 𝒚̂ 𝑡−1) ∀𝑡 ∈ [1, 𝑀]

      𝑦̂𝑡 = 𝑔(𝒉𝑇+𝑡) ∀𝑡 ∈ [1, 𝑀]

      其中 𝑔(⋅) 为分类器,𝒚̂𝑡 为预测输出 𝑦̂𝑡 的向量表示
      在这里插入图片描述

  • 单隐藏层简单循环网络

    令向量𝒙𝑡 ∈ ℝ𝑀 表示在时刻 𝑡 时网络的输入,𝒉𝑡 ∈ ℝ𝐷 表示隐藏层状态(即隐藏层神经元活性值),则𝒉𝑡 不仅和当前时刻的输入𝒙𝑡 相关,也和上一个时刻的隐藏层状态𝒉𝑡−1相关。简单循环网络在时刻𝑡 的更新公式为 𝒛𝑡 = 𝑼𝒉𝑡−1 + 𝑾𝒙𝑡 + 𝒃, 𝒉𝑡 = 𝑓(𝒛𝑡 )
    在这里插入图片描述

  • 参数学习(以同步的序列到序列为例)

    输入为长度为 𝑇 的序列 𝒙1∶𝑇 = (𝒙1 , ⋯ , 𝒙𝑇), 输出长度为𝑇 的序列𝑦1∶𝑇 = (𝑦1 , ⋯ , 𝑦𝑇),定义时刻 𝑡 的损失函数为 ℒ𝑡 = ℒ(𝑦𝑡 , 𝑔(𝒉𝑡)),整个序列的损失函数为 ℒ = ∑ℒ𝑡

    • 随时间反向传播(BPTT)
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    • 实时循环学习(RTRL)
      在这里插入图片描述
  • 基于门控的循环神经网络

    • 长程依赖问题:

      • 梯度爆炸问题 :权重衰减或梯度截断

      • 梯度消失问题:更改模型或𝒉𝑡 = 𝒉𝑡−1 + 𝑔(𝒙𝑡 , 𝒉𝑡−1; 𝜃)(但是存在梯度爆炸和记忆容量问题)

    • 长短期记忆网络和门控循环单元网络

  • 长短期记忆网络LSTM

    • 新的内部状态:LSTM网络引入一个新的内部状态 𝒄𝑡 ∈ ℝ𝐷 专门进行线性的循环信息传递,同时(非线性地)输出信息给隐藏层的外部状态 𝒉𝑡 ∈ ℝ𝐷。内部状态 𝒄𝑡 通过下面公式计算:

      𝒄𝑡 = 𝒇𝑡 ⊙ 𝒄𝑡−1 + 𝒊𝑡 ⊙ 𝒄̃𝑡 , 𝒉𝑡 = 𝒐𝑡 ⊙ tanh( 𝒄𝑡 )

      其中𝒇𝑡 ∈ [0, 1]𝐷、𝒊𝑡 ∈ [0, 1]𝐷 和𝒐𝑡 ∈ [0, 1]𝐷 为三个门来控制信息传递的路径;⊙为向量元素乘积;𝒄𝑡−1 为上一时刻的记忆单元;𝒄̃𝑡 ∈ ℝ𝐷 是利用非线性函数得到的候选状态𝒄̃ = tanh(𝑾𝑐𝒙𝑡 + 𝑼𝑐𝒉𝑡−1 + 𝒃𝑐 ) ,在每个时刻 𝑡,LSTM网络的内部状态𝒄𝑡 记录了到当前时刻为止的历史信息。

在这里插入图片描述
在这里插入图片描述

  • 门控机制

  • 记忆:循环神经网络中的隐状态 𝒉 存储了历史信息,可以看作一种记忆。在简单循环网络中,隐状态每个时刻都会被重写,因此可以看作一种短期记忆。在神经网络中,长期记忆可以看作网络参数,隐含了从训练数据中学到的经验,其更新周期要远远慢于短期记忆。而在 LSTM 网络中,记忆单元 𝒄 可以在某个时刻捕捉到某个关键信息,并有能力将此关键信息保存一定的时间间隔。记忆单元 𝒄 中保存信息的生命周期要长于短期记忆 𝒉,但又远远短于长期记忆, 长短期记忆是指长的 “短期记忆”。 因此称为长短期记忆。

  • 无遗忘门的LSTM 网络
    在这里插入图片描述

  • 门控循环单元网络
    在这里插入图片描述
    在这里插入图片描述

  • 深层循环网络

    • 堆叠循环神经网络
      在这里插入图片描述
    • 双向循环神经网络
      在这里插入图片描述
  • 扩展到图结构:递归神经网路和图神经网络

举报

相关推荐

0 条评论