LSTM——长短期记忆网络

LSTM神经网络是很火的一种神经网络架构,在这里记录一下自己的学习理解,但是个人才疏学浅,内容可能有理解错误的地方,如有错误,以后再慢慢改正。
参考资料:邱锡鹏老师的《神经网络与深度学习》


相比于一般的RNN循环结构,LSTM与之不同的则是记忆单元的结构不同,相比于RNN记忆单元的取出和更新,LSTM的记忆单元引入了门控机制,来让模型自己学习什么时候允许“记忆”、“遗忘”、“输出”的功能。

循环单元功能

在这里插入图片描述
可以看到总共有三个门,它们分别是输入门(Input Gate)、遗忘门(Forget Gate)和输出门(OutputGate)。它们的作用分别是:

  1. 遗忘门: 控制上一个时刻的内部状态需要遗忘多少信息
  2. 输入门: 控制当前时刻的候选状态有多少信息需要保存。
  3. 输出门: 控制当前时刻的内部状态 有多少信息需要输出给外部状态。
    由图上可以知道,我们传递给记忆单元的总共有四个输入,而只有一个输出。 四个输出分别是控制输入门的信息、控制输出门的信息、控制遗忘门的信息和外部要传入进去的值Value,输出则是最后得到的输出的值。
    那么它们的作用是如何实现的呢?

实现过程

计算过程

在这里插入图片描述
这里我们通常选择的激活函数函数是sigmoid函数,因为sigmoid函数将值限定到(0,1)范围内,符合门控的机制,越小输出就越少,越大则会越接近原本的值。途中 z zi zf zo 分别指代要更新记忆单元的值、控制输入门的信息、控制遗忘门的信息和控制输出门的信息。cell里面存储的就是当前的记忆信息。
在这里插入图片描述
其计算过程为:

  1. 首先输入 z,计算出三个门控状态 和Value值。三个门控状态分别是通过sigmoid函数得到一个在(0,1)之间的值。而value的值或者说要更新的值得激活函数则是tanh函数,然后得到一个g(z)(在这里,值得激活函数为什么是tanh而不是Relu函数或者其他的?有一些研究专门讨论过,以后再开一个博客记录一下
  2. 先计算输入门最后得到的值,通过输入门的门控值和得到的Value值相乘来得到:
    在这里插入图片描述
    然后计算当前遗忘门对于之前记忆信息的候选状态,这里的c是上一轮的记忆信息:
    在这里插入图片描述
    接着,将它们相加得到最新的记忆信息:
    在这里插入图片描述
  3. 最后,我们将结合输出门的状态,将刚刚得到内部状态的记忆信息传递给外部状态,这里的h也是tanh函数:
    在这里插入图片描述

输入

那么我们的三个门控的状态和要更新和输出的状态值都怎么得到呢?一开始我们说过需要四个输入,其实就是同一个数据 x 有四个不同的参数来得到四个值。
在这里插入图片描述
就像图上一样,数据x转换为了四个输入向量,而此时已经有LSTM的循环单元替换了之前的全连接的神经元,而现在输入向量的维度就和LSTM循环神经元的个数一样 。总之一句话,大家想象是这个LSTM特殊的门控单元替换了之前的全连接的神经元就ok。

LSTM循环单元结构

在这里插入图片描述
这是一张整体的结构单元,可以看见LSTM单元的每一步都是如何运算的,这里相比于之前的不同则是,最开始有输入数据x和上一轮的输出的一个向量拼接。然后,真正的LSTM,在输入这一部分,还要再加上内部状态信息也就是c的拼接。(这一部分LSTM内部作用细节还要慢慢深究),数学公式可以简单概括如下:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值