递归神经网络RNN——LSTM


关于LSTM模型,看懂这篇文章就OK了,不用再看别的了

1、LSTM的产生原因及优点

RNN模型中介绍了,由于长期依赖的问题,对于步长大的时刻求梯度,有一比分梯度的计算是类乘的形式,这样就会造成指数计算,从而造成梯度消失和梯度爆炸,所以LSTM和GRU模型被退出,原因是,LSTM和GRU模型他们采用了特殊的方式来进行"记忆"的存储,使得以前比较大的记忆不会像简单的RNN模型一样立刻被抹除掉,因此可以一定程度上克服梯度小时的问题

LSTM也是RNN的一种,大体结构一直,区别在于:

  • LSTM的记忆细胞是改造过的
  • 该记录的信息会一直传递,不该记录的信息会被截断掉

2、LSTM网络结构

在这里插入图片描述
注意:上边图形中的方块A并不是神经元。A是一个记忆细胞,里面有复杂的结构。

现在我们将”记忆细胞“展开:
在这里插入图片描述

对于普通的RNN我们只是简单的对上一层记忆细胞的输出乘一个参数矩阵作为下一层的一个输入,而LSTM的记忆细胞没有那么简单,这个图很重要,要会画,会写计算公式,我们来分析一下:

3、LSTM工作机制

1、LSTM怎么控制“细胞状态”:

  • LSTM通过gates(门)结构来去除或者增加“细胞状态”de信息。
  • 包含一个sigmoid神经网络层,和一个pointwist乘法操作。
  • Sigmoid输出一个0~1之间的概率值,描述每个部分有多少量可以通过,0表示“不允许任务变量通过”,1表示“运行所有变量通过”
  • LSTM中有三个“门”结构来控制细胞状态

2、要知道LSTM的里边都是有那些结构和操作:

  • 1、遗忘门

决定从细胞状态中丢弃什么信息,比如在与语言模型中,细胞状态可能包含了性别信息(他或者她),当我们看到新的代名词的时候,比如他的具体名字,可以考虑忘记旧数据

在这里插入图片描述

ft在乘Ct-1就起到了遗忘作用

  • 2、输入门(信息增加门)

决定什么信息可以增加到“信息状态”中去
Sigmoid层决定什么信息需要增加
tanh层,创建一个新的候选向量Ct
主要是为了状态更新做准备

在这里插入图片描述

经过第一个门和第二个门之后,可以确定信息的传递和增加,即可进行“细胞状态”的更新。

在这里插入图片描述

更新Ct-1为Ct
将旧状态与第一个门得到的ft相乘,丢失掉确定不要的信息
加上新的侯选值it x Ct得到最终更新后的“细胞状态”

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

基于细胞状态得到输出
首先运行一个Sigmoid层,来确定细胞状态的那个部分将输出
用一个tanh处理记忆细胞状态得到一个-1~1之间的值,再将他和Sigmoid的输出值相乘,输出程序确定输出部分。

  • 4、神经网络层(神经元)

四个黄色部分有4个神经元,每个神经元有不同的参数W,是不一样的。

  • 5、激活函数

4个神经元中有5个激活函数,有Sigmoid和tanh,粉色的激活函数没参数W

  • 6、点扭操作

用于记忆状态和细胞状态的状态选择

  • 7、矢量传输
  • 8、连接拼接
  • 9、复制
  • 10、细胞状态C(记忆单元,图中上面的直线)

类似于传送带,直接在整个链上运行,只有一些少量的线性交互(点成,点加),信息在上面流保持不变很容易。

4、LSTM Attention 机制

核心思想:抑制不重要的信息,加强重要的信息
**输入输出信息都可以做,**下面我们举一个输出信息做的,在卷积模型中的SEnet,和CAMB上就是在输入上做的Attention

Attention机制就是一个注意力机制,他具体做的就是将输入在不同的层次上加上一个权重,可能是通道上,也可能是空间上,加权重的方式也有很多种,可能是做平均池化,也可能是做最大值池化然后将输出结果做全连接在加Sigmoid或者Softmax,将输入映射到0~1的值。

LSTA Attention的作用机制有:

  • 1、直接对每个输入进行权重计算,然后在加权求和
    对输入进行权重计算,此方法很简单,就是将输入做一个全连接,随后采用Softmax函数激活概率

假设输入是一句话:
我 在 北 京
经过:lstm/rnn
输出:
y1=1 y2=4 y3=5 y4=6
如果我用普通的不含有Attention的模型做分类任务,我就只看y4的值
如果我添加了Attention
1、计算权重:
分母一样的:e1 + e4 + e5 + e6
1时刻输出y1的权重:e1 /分母 = 0.2
2时刻输出y2的权重:e4 /分母 = 0.3
3时刻输出y3的权重:e5 /分母 = 0.1
4时刻输出y4的权重:e6 /分母 = 0.4
2、最终整句话的输出:
y = (1* 0.2) +( 4 * 0.3) + (5 * 0.1) + (6 * 0.4)
这就考虑每一时刻的输出值,不在只考虑最后一时刻的输出值了

  • 2、多层加Attention机制

第一层:最后一个时刻y1
第二层:最后一个时刻y2
第三层:最后一个时刻y3
然后对每一层的最后一个时刻的y做一个Attention,用来融合每一层的信息

  • 2、加入激活函数并求和
    第一种方法我们是计算权重之后计算输出值,这里我们计算权重之后再加一个tanh激活函数,然后求完权重进行了加和。

关于LSTM模型,看懂这篇文章就OK了,不用再看别的了

LSTM有很多变种,变种就是记忆细胞里边信息的传递机制发生改变,类比LSTM都能看得懂。
OK!!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

企鹅家的北极熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值