[干货]深入浅出LSTM及其Python代码实现

本文深入解析LSTM(长短时记忆网络)的工作原理,作为RNN的一种特殊形式,LSTM通过其独特的门控机制解决了长期依赖问题。文章详细介绍了遗忘门、记忆门和输出门的作用,以及如何利用这些门来更新和控制信息流,帮助读者理解LSTM如何有效地处理和保留序列数据中的信息。
摘要由CSDN通过智能技术生成

博主讲的非常清晰,一看就懂的那种,本文仅贴LSTM讲解部分,想从头看的直接点击链接看原文。原文地址:https://zhuanlan.zhihu.com/p/104475016

3. 长短时间记忆网络(LSTM)

3.1 LSTM与RNN的关系

长短期记忆(Long Short Term Memory,LSTM)网络是一种特殊的RNN模型,其特殊的结构设计使得它可以避免长期依赖问题,记住很早时刻的信息是LSTM的默认行为,而不需要专门为此付出很大代价。

普通的RNN模型中,其重复神经网络模块的链式模型如下图所示,这个重复的模块只有一个非常简单的结构,一个单一的神经网络层(例如tanh层),这样就会导致信息的处理能力比较低。

而LSTM在此基础上将这个结构改进了,不再是单一的神经网络层,而是4个,并且以一种特殊的方式进行交互。

粗看起来,这个结构有点复杂,不过不用担心,接下来我们会慢慢解释。在解释这个神经网络层时我们先来认识一些基本的模块表示方法。图中的模块分为以下几种:

  • 黄色方块:表示一个神经网络层(Neural Network Layer);
  • 粉色圆圈:表示按位操作或逐点操作(pointwise operation),例如向量加和、向量乘积等;
  • 单箭头:表示信号传递(向量传递);
  • 合流箭头:表示两个信号的连接(向量拼接);
  • 分流箭头:表示信号被复制后传递到2个不同的地方。

下面我们将分别介绍这些模块如何在LSTM中作用。

3.2 LSTM的基本思想

LSTM的关键是细胞状态(直译:cell state),表示为   ,用来保存当前LSTM的状态信息并传递到下一时刻的LSTM中,也就是RNN中那根“自循环”的箭头。当前的LSTM接收来自上一个时刻的细胞状态   ,并与当前LSTM接收的信号输入   共同作用产生当前LSTM的细胞状态  ,具体的作用方式下面将详细介绍。

在LSTM中,采用专门设计的“门”来引入或者去除细胞状态   中的信息。门是一种让信息选择性通过的方法。有的门跟信号处理中的滤波器有点类似,允许信号部分通过或者通过时被门加工了;有的门也跟数字电路中的逻辑门类似,允许信号通过或者不通过。这里所采用的门包含一个   神经网络层和一个按位的乘法操作,如下图所示:

其中黄色方块表示 神经网络层,粉色圆圈表示按位乘法操作。 神经网络层可以将输入信号转换为   到   之间的数值,用来描述有多少量的输入信号可以通过。  表示“不允许任何量通过”,  表示“允许所有量通过”。 神经网络层起到类似下图的 函数所示的作用:

其中,横轴表示输入信号,纵轴表示经过sigmod函数以后的输出信号。

LSTM主要包括三个不同的门结构:遗忘门、记忆门和输出门。这三个门用来控制LSTM的信息保留和传递,最终反映到细胞状态   和输出信号   。如下图所示:

图中标示了LSTM中各个门的构成情况和相互之间的关系,其中:

  • 遗忘门由一个 神经网络层和一个按位乘操作构成;
  • 记忆门由输入门(input gate)与tanh神经网络层和一个按位乘操作构成;
  • 输出门(output gate)与   函数(注意:这里不是   神经网络层)以及按位乘操作共同作用将细胞状态和输入信号传递到输出端。

3.3 遗忘门

顾名思义,遗忘门的作用就是用来“忘记”信息的。在LSTM的使用过程中,有一些信息不是必要的,因此遗忘门的作用就是用来选择这些信息并“忘记”它们。遗忘门决定了细胞状态   中的哪些信息将被遗忘。那么遗忘门的工作原理是什么呢?看下面这张图。

左边高亮的结构就是遗忘门了,包含一个 神经网络层(黄色方框,神经网络参数为  ),接收   时刻的输入信号   和   时刻LSTM的上一个输出信号   ,这两个信号进行拼接以后共同输入到 神经网络层中,然后输出信号  是一个    之间的数值,并与   相乘来决定  中的哪些信息将被保留,哪些信息将被舍弃。可能看到这里有的初学者还是不知道具体是什么意思,我们用一个简单的例子来说明。

假设  , 那么遗忘门的输入信号就是 的组合,即  , 然后通过  神经网络层输出每一个元素都处于 之间的向量 ,注意,此时 是一个与 维数相同的向量,此处为3维。如果看到这里还没有看懂的读者,可能会有这样的疑问:输入信号明明是6维的向量,为什么  就变成了3维呢?这里可能是将 神经网络层当成了 激活函数了,两者不是一个东西,初学者在这里很容易混淆。下文所提及的 神经网络层和 神经网络层而是类似的道理,他们并不是简单的 激活函数和 激活函数,在学习时要注意区分。

3.4 记忆门

记忆门的作用与遗忘门相反,它将决定新输入的信息   和   中哪些信息将被保留。

如图所示,记忆门包含2个部分。第一个是包含 神经网络层(输入门,神经网络网络参数为  )和一个   神经网络层(神经网络参数为  )。

  • 神经网络层的作用很明显,跟遗忘门一样,它接收   和   作为输入,然后输出一个   到   之间的数值   来决定哪些信息需要被更新;
  • Tanh神经网络层的作用是将输入的   和   整合,然后通过一个 神经网络层来创建一个新的状态候选向量   ,  的值范围在   到   之间。

记忆门的输出由上述两个神经网络层的输出决定,  与   相乘来选择哪些信息将被新加入到   时刻的细胞状态   中。

3.5 更新细胞状态

有了遗忘门和记忆门,我们就可以更新细胞状态   了。

这里将遗忘门的输出   与上一时刻的细胞状态   相乘来选择遗忘和保留一些信息,将记忆门的输出与从遗忘门选择后的信息加和得到新的细胞状态  。这就表示   时刻的细胞状态   已经包含了此时需要丢弃的   时刻传递的信息和   时刻从输入信号获取的需要新加入的信息     将继续传递到   时刻的LSTM网络中,作为新的细胞状态传递下去。

3.6 输出门

前面已经讲了LSTM如何来更新细胞状态  , 那么在   时刻我们输入信号   以后,对应的输出信号该如何计算呢?

如上面左图所示,输出门就是将 时刻传递过来并经过了前面遗忘门与记忆门选择后的细胞状态 , 与   时刻的输出信号   和   时刻的输入信号   整合到一起作为当前时刻的输出信号。整合的过程如上图所示,  和   经过一个 神经网络层(神经网络参数为  )输出一个   到   之间的数值   经过一个 函数(注意:这里不是   神经网络层)到一个在   到   之间的数值,并与  相乘得到输出信号   ,同时   也作为下一个时刻的输入信号传递到下一阶段。

其中, 函数是激活函数的一种,函数图像为:

至此,基本的LSTM网络模型就介绍完了。如果对LSTM模型还没有理解到的,可以看一下这个视频,作者是一个外国小哥,英文讲解的,有动图,方便理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值