RNN/LSTM细节及编程输入输出维度问题、GRU

为了解决RNN的长时依赖的问题。RNN无法保存较长的时间的信息,因为梯度消失问题。

输入问题

先讲一点编程时候的输入问题,LSTM的输出其实就是相当于每次输入一个序列(一个序列样本)。写input的时候,直接写 inputs = Input(shape=(length_rows,length_cols)),如下所示,每一个时间步其实就是length_rows,每一个时间步中的绿点就是length_cols。【100个句子,每个句子20个词,每个词80维度的向量,那么形状就是(100,20,80)】

下面是一个两层的RNN,一个有四个时间步,图中省略了第一到第二层结果的一些传递。
在这里插入图片描述
等同这个简图

在这里插入图片描述

所以embedding的一个作用就是修改维度到合适的相同维度。Batch_size就是样本的数目,一次只输入一个样本。

x = LSTM(UNITS, return_sequences=True)(inputs)
UNITS代表把一个词的词向量转化为UNITS大小,LSTM输入的参数就是**(samples, timestep, input_dim),samples指的是批量训练样本的数量,timesteps是时间步,自己设定的(词的数目),input_dim是每个time_step输入的shape。**
在这里插入图片描述

LSTM细节

LSTM如何解决RNN长期依赖的问题,也就是可以实现对长期的信息的记忆的问题:

原因就是LSTM引入了门控单元的机制,也就是添加了C这条通路,使得可以较长长时间保存信息。
在这里插入图片描述
LSTM单元(unit)一般由一个细胞(cell),一个输入门 (inputgate),一个输出门(outputgate)和一个遗忘门 (forgetgate)组成. •细胞能够记住任意时间间隔上的值,三个门能够控制进出细胞的 信息流动。

引入了“门”机制对细胞状态信息进行添加或删除,实现长时记忆。

•“门”机制由一个Sigmoid激活函数层和一个向量点乘操作组成, •Sigmoid层的输出控制了信息传递的比例。
在这里插入图片描述
下面对门一一介绍:

1.遗忘门

LSTM通过遗忘门(forget gate)实现对细胞状态信息 遗忘程度的控制,输出当前状态的遗忘权重,取决于ht-1和𝑥t。

在这里插入图片描述

2.输入门

LSTM通过输入门(input gate)实现对细胞状态输入 接收程度的控制,输出当前输入信息的接受权重,取决于ht-1和 𝑥t
在这里插入图片描述

3.输出门

LSTM通过输出门(output gate)实现对细胞状态输出 认可程度的控制,输出当前输出信息的认可权重,取决于ht-1和 𝑥t。
在这里插入图片描述

状态的更新

取决于遗忘门和输入门
遗忘门输出的权重,作用于Ct-1,加上输入门,一起构成新的Ct
在这里插入图片描述

在这里插入图片描述

双向RNN

假设当前t的输出不仅仅和之前的序 列有关,并且还与之后的序列有关。
BidirectionalRNN由两个RNNs上下叠加在一起组成,输出由这两 个RNNs的隐藏层的状态决定。

在这里插入图片描述

在这里插入图片描述

Stack RNN

在这里插入图片描述

GRU

相比LSTM的三个门,GRU简化了,只有两个门,一个保持对短期信息的敏感,一个保持对长期信息的敏感。

GRU还是很强的,rt是重置门,zt是更新门,重置门决定先前的隐藏状态单元是否被忽略,更新门控制当前隐藏状态单元是否需要被新的隐藏状态单元更新。** **

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值