理解LSTM和GRU

目录

 

1.LSTM网络

1.1 细胞状态(cell state)

1.2 遗忘门(forget gate)

1.3 输入门(input gate)

1.4 输出门(output gate)

2. LSTM的变种GRU


1.LSTM网络

长短期记忆网络(Long Short Term Memory networks)-通常叫做LSTMs----是RNN中一个特殊的类型。设计LSTMs的主要目的是避免出现长时期依赖的问题,它们的本质是能够记住很长时期内的信息,而且非常轻松能够做到。

先看一下RNN模块:

                                                           

再看一下LSTM模块:

                                                      

LSTM模块中的符号定义:

                                                              

注意:合并的线表示把两条线上的向量进行合并,如 h_{t-1} 与 x_t 的合并后就是 [h_{t-1},x_t] 。

1.1 细胞状态(cell state)

LSTMs最关键的地方在于cell(整个绿色的框)的状态和结构图中那条横穿的水平线,这种结构能够轻松实现信息从整个cell中穿过而不做改变,这样就能实现长时期的记忆保留:

                  

这里添加了门(gates)的概念,选择性的添加或删除信息,主要是通过一个sigmoid网络层和一个逐点相乘来实现的。

注意:

  1. sigmoid层输出的每个元素都是一个在0和1之间的实数,表示让对应信息通过的权重,如 0 表示不让任何信息通过;1 表示让所有信息通过。
  2. 每个LSTM都有三个这样的门结构,来实现保护和控制信息,分别是遗忘门(forget fate)、输入门(inout gate )和 输出门(output gate)。

1.2 遗忘门(forget gate)

首先LSTM要决定哪些信息继续通过这个cell(指的是C_{t-1}中的信息),它的输入的  h_{t-1} 和  x_t ,如下图粗线所示:

                                               

1.3 输入门(input gate)

这一步是决定让多少新的信息加入到cell状态中来(指的是X_t 中的信息),实现这个主要包括两步:

  1. 首先,一个经过sigmoid层,来决定哪些信息需要更新;一个经过tanh层生成向量,作为备选的用来更新的内容,\tilde{C_t} 。
  2. 再下一步,将上面俩各部分内容联合起来,对cell的状态进行一个更新。

                                                  

有了上面的步骤我们就可以将细胞状态C_{t-1} 更新为 C_t ,替换掉老的状态信息。

  1. 首先旧的状态C_{t-1} 与 f_t 相乘,去掉不想保留的信息;
  2. 然后加上 i_t 与 \tilde {C_t} 相乘的结果,这部分信息就是我们要添加的新内容。

                                                    

1.4 输出门(output gate)

最后,需要决定LSTM模块的输出信息,主要依赖cell的状态 C_t 经过一个非线性的过滤:

  1. 首先,我们让输入信息经过sigmoid层过滤掉不需要保留的信息;
  2. 然后,让更新的细胞状态C_{t-1} 经过一个 tanh层(把数值更新在-1到1之间);
  3. 最后,把tanh层的输出与 sigmoid层计算出来的权重相乘,这样就得到了最后输出的结果。

                                                      

2. LSTM的变种GRU

GRU,Gated Recurrent Unit,在GRU中只有两个门:重置门(reset gate)和更新门(update gate)。同时在这个结构中将细胞状态和隐层状态进行了合并,最后模型比标准的LSTM结构要简单,后来这个结构也非常流行:

                                                     

其中,r_t 表示重置门,z_t 表示重置门。这里重置门决定是否将之前的状态忘记当  r_t 趋于0 的时候,前一个时刻的状态信息 h_{t-1} 会被忘掉,隐层状态 \tilde{h_t} 会被重置为当前输入的信息;更新门决定是否将隐层状态更新为新的状态 \tilde {h_t} 。

GRU与LSTM的对比:

  1. GRU少了一个门,同时少了细胞状态 C_t ;
  2. 在LSTM中 通过遗忘门和输入门控制信息的保留和传入;GRU则通过重置门来控制是否保留上一个时刻隐层的信息,但不再限制当前时刻信息的输入
  3. LSTM中,虽然得到了新的细胞状态C_t ,但是还不能直接输出,而是要经过一个过滤处理:h_t=o_t *tanh(C_t) ;同样,在GRU中 虽然也得到了最新的隐层状态信息  \tilde {h_t} ,但还是不能直接输出,而是通过更新门来控制最后的输出:h_t= (1-z_t)*h_{t-1} + z_t *\tilde h_{t}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值