详细版【循环神经网络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/ ∑)
      详细版【循环神经网络RNN】(邱锡鹏)_第1张图片

    • 同步的序列到序列模式:序列标注(严格的对应关系和长度关系)
      详细版【循环神经网络RNN】(邱锡鹏)_第2张图片

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

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

      = 1 (−1, ) ∀ ∈ [1, ]

      + = 2 (+−1, ̂ −1) ∀ ∈ [1, ]

      ̂ = (+) ∀ ∈ [1, ]

      其中 (⋅) 为分类器,̂ 为预测输出 ̂ 的向量表示
      详细版【循环神经网络RNN】(邱锡鹏)_第3张图片

  • 单隐藏层简单循环网络

    令向量 ∈ ℝ 表示在时刻 时网络的输入, ∈ ℝ 表示隐藏层状态(即隐藏层神经元活性值),则 不仅和当前时刻的输入 相关,也和上一个时刻的隐藏层状态−1相关。简单循环网络在时刻 的更新公式为 = −1 + + , = ( )
    详细版【循环神经网络RNN】(邱锡鹏)_第4张图片

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

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

    • 随时间反向传播(BPTT)
      详细版【循环神经网络RNN】(邱锡鹏)_第5张图片
      详细版【循环神经网络RNN】(邱锡鹏)_第6张图片
      详细版【循环神经网络RNN】(邱锡鹏)_第7张图片
    • 实时循环学习(RTRL)
      详细版【循环神经网络RNN】(邱锡鹏)_第8张图片
  • 基于门控的循环神经网络

    • 长程依赖问题:

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

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

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

  • 长短期记忆网络LSTM

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

      = −1 + ⊙ ̃ , = ⊙ tanh( )

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

详细版【循环神经网络RNN】(邱锡鹏)_第9张图片
详细版【循环神经网络RNN】(邱锡鹏)_第10张图片

  • 门控机制

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

  • 无遗忘门的LSTM 网络
    详细版【循环神经网络RNN】(邱锡鹏)_第11张图片

  • 门控循环单元网络
    详细版【循环神经网络RNN】(邱锡鹏)_第12张图片
    详细版【循环神经网络RNN】(邱锡鹏)_第13张图片

  • 深层循环网络

    • 堆叠循环神经网络
      详细版【循环神经网络RNN】(邱锡鹏)_第14张图片
    • 双向循环神经网络
      详细版【循环神经网络RNN】(邱锡鹏)_第15张图片
  • 扩展到图结构:递归神经网路和图神经网络

你可能感兴趣的:(机器学习,pytorch,神经网络,深度学习,rnn,循环神经网络)