Seq2Swq之LSTM和GRU

在了解 Seq2Seq 的结构前我们必须先要知道什么是 LSTM、GRU,以便我们更好的理解 Encoder、Decoder 的理解

LSTM 网络

LSTM 的全称是 Long Short Term Memory Network,又叫做长短时记忆网络,必须明确的是它是一种特殊的 RNN 结构,那么它与标准的 RNN结构区别在哪呢?让我们来看一下标准的 RNN 结构:

由上图中可以看到,传统的 RNN 结构非常的简单,中间只有一个 tanh 层,这样会导致对上一个单元的记忆效果并不是非常的理想,因此,在此基础上诞生了一种更复杂的结构,以便能够更多的记住上一个单元的信息,LSTM 的结构如下:

为了更好的理解,我们定义一下图中各个符号的含义:

  • 黄色部分表示的是 激活函数的操作
  • 粉色表示点操作
  • 单箭头表示数据流向
  • 箭头合并表示 Concate(合并) 操作
  • 分离箭头表示向量拷贝操作
核心思想

LSTM 的核心是细胞的状态,用穿过细胞的水平线来表示,图中绿色的图表示一个 细胞(cell)

细胞的状态是指记录了到目前为止所有更新的上下文, C t − 1 C_{t-1} Ct1 表示前一个状态,在输入后会经过遗忘或添加新的内容,最终会输出一个新的状态 C t C_t Ct 近而进入到一个新的细胞(cell) 中,因为整个细胞中只存在着少量的交互信息,因此大量的信息还是直接传送过去的

在整个过程中,我们是通过一种叫做 (gate)的结构来实现对信息的删除和新增的,从而选择性的让信息通过,实质上是一个 sigmoid 的神经层和一个点乘操作的组合,如图:

因为 sigmoid ∈ [ 0 , 1 ] \in [0, 1] [0,1] ,这代表着有多少信息可以通过,0 表示不能通过,1则表示通过

LSTM 的整体流程
  • LSTM 中存在着三个门:遗忘门、输入门、输出门 ,同时这三个门也就代表了其整体的流程
遗忘门 Forget gate
  • h t − 1 h_{t-1} ht1 表示上一个细胞的输出, x t x_t xt 表示当前的输入, σ \sigma σ 表示 sigmoid 激活函数

LSTM 的第一步就决定了细胞状态中需要丢弃哪些信息,是通过 sigmoid 来实现的,通过查看 h t − 1 h_{t-1} ht1 x t x_t xt 中的信息从而输出一个 0-1 之间的向量来表示哪些信息需要丢弃,哪些信息需要保留,0表示丢弃,1表示保留

输入门 Input gate

这一步表示了需要在细胞状态中添加的新信息,此处分为二个部分:

第一部分决定需要添加哪些信息,并更新原有矩阵,sigmoid 决定要添加哪些信息,tanh 则得到一个候选的更新信息

第二部分:添加新的细胞信息,在 C t − 1 C_{t-1} Ct1 通过遗忘门丢弃一部分信息后,再通过输入门添加候选信息 C t ~ \tilde{C_t} Ct~ 的一部分得到新的细胞状态 C t C_t Ct

输出门 Output gate

最终,我们确定要输出的信息,首先用 sigmoid 来确定哪些信息要输出,再与 tanh (值在 -1 到 1之间) 处理过的 C t C_t Ct 信息进行相乘,最终得到我们确定要输出的部分

总结

以上即为 LSTM 的整个过程,需要注意以下二点:

  • LSTM 的输入有三个: h t − 1 h_{t-1} ht1 x t x_t xt C t − 1 C_{t-1} Ct1
  • 整个流程: 遗忘门(选择遗忘信息)—> 输入门(添加新的信息)—> 输出门(输出预测值)

GRU

  • z t z_t zt 表示更新门, r t r_t rt 表示重置门, h t ~ \tilde{h_t} ht~ 表示候选信息与 LSTM 中的 C t ~ \tilde{C_t} Ct~ 相似
  • h t ~ \tilde{h_t} ht~ 相当于通过重置门重置过的 h t − 1 h_{t-1} ht1 与输入 x t x_t xt 进行合并后 通过 tanh 所得
  • h t h_t ht 表示状态更新阶段,利用更新门来进行控制需要更新的信息,越接近1,记忆下来的东西越多

GRU 为 LSTM 的变体,即保持了 LSTM 的特性,还使结构更加的简单

GRU 共分为二个门:更新门和重置门。更新门用于控制前一时刻的状态信息代入到当前状态的过程,值越大,说明代入信息越多,重置门表示忽略前一时刻状态信息的程度,值越小说明忽略信息越多

区别

  • GRU 为 LSTM 的变体,在结构上来说 GRU 少了一个门,因此更简单,计算会更快

  • GRU 为 LSTM 的变体,在结构上来说 GRU 少了一个门,因此更简单,计算会更快

  • GRU 因为结构更简单,少了一个门,接收的参数也少了一个,因此在训练的时候可能会存在记住的信息会少于 LSTM

  • GRU 与 LSTM 的使用还是要根据实质的情况来定,并不能一概而论的决定哪个模型最优

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值