深度/机器学习基础知识要点:RNN、LSTM、GRU

RNN(循环神经网络)

  • RNN示意图
    在这里插入图片描述
    x x 是一个向量,它表示输入层的值; s s 是一个向量,它表示隐藏层的值; U U 是输入层到隐藏层的权重矩阵; o o 也是一个向量,它表示输出层的值; V V 是隐藏层到输出层的权重矩阵。循环神经网络的隐藏层的值 s s 不仅仅取决于当前这次的输入 x x ,还取决于上一次隐藏层的值 s s 。权重矩阵 W W 就是隐藏层上一次的值作为这一次的输入的权重。

    输出值 o t {o}_{t} ,是受前面历次输入值 x t x t 1 x t 2 {x}_{t}、{x}_{t-1}、{x}_{t-2} 、…影响的,这就是为什么循环神经网络可以往前看任意多个输入值的原因。

  • 计算公式:
    在这里插入图片描述

  • 双向循环神经网络

    • 示意图
      在这里插入图片描述
    • 计算公式:
      在这里插入图片描述

LSTM(长短时记忆网络)

  • 单元状态(cell state)
    在这里插入图片描述
    新增加的状态c,称为单元状态(cell state)。我们把上图按照时间维度展开:
    在这里插入图片描述
    在t时刻,LSTM的输入有三个:当前时刻网络的输入值 x t x_t 、上一时刻LSTM的输出值 h t 1 h_{t-1} 、以及上一时刻的单元状态 c t 1 c_{t-1}
    LSTM的输出有两个:当前时刻LSTM输出值 h t h_{t} 、和当前时刻的单元状态 c t c_{t}

用到了门(gate)的概念。门实际上就是一层全连接层,它的输入是一个向量,输出是一个0到1之间的实数向量。

LSTM用两个门来控制单元状态c的内容,一个是遗忘门(forget gate),它决定了上一时刻的单元状态 c t 1 {c}_{t-1} 有多少保留到当前时刻 c t {c}_{t} ;另一个是输入门(input gate),它决定了当前时刻网络的输入 x t {x}_{t} 有多少保存到单元状态 c t {c}_{t} 。LSTM用输出门(output gate)来控制单元状态 c t {c}_{t} 有多少输出到LSTM的当前输出值 h t {h}_{t}

LSTM需要学习的参数共有8组,分别是:遗忘门的权重矩阵 W f {W}_{f} 和偏置项 b f {b}_{f} 、输入门的权重矩阵 W i {W}_{i} 和偏置项 b i {b}_{i} 、输出门的权重矩阵 W o {W}_{o} 和偏置项 b o {b}_{o} ,以及计算单元状态的权重矩阵 W c {W}_{c} 和偏置项 b c {b}_{c}

  • LSTM单元结构:
    在这里插入图片描述
    • 遗忘门:
      在这里插入图片描述

    • 输入门:
      在这里插入图片描述

    • 用于描述当前输入的单元状态,它是根据上一次的输出和本次输入来计算的:
      在这里插入图片描述

    • 当前时刻的单元状态
      在这里插入图片描述

    • 输出门
      在这里插入图片描述

    • LSTM最终的输出
      在这里插入图片描述

GRU

GRU 是LSTM 的一个变体,GRU 保持了 LSTM 的效果同时又使结构更加简单。

GRU 只剩下两个门,即更新门和重置门。

  • 更新门
    用于控制前一时刻的状态信息被代入到当前状态的程度,更新门的值越大说明前一时刻的状态信息带入越多。

  • 重置门
    用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。

  • GUR单元结构
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zengNLP/article/details/104135185