从零开始学Python自然语言处理(二十)—— 强大的长短期记忆网络(LSTM)(上)

浏览: 2435

前文传送门:

从零开始学自然语言处理(十九)—— 不可不知的循环神经网络(RNN)

在上一章中,我们讲到了RNN网络。

RNN由于其结构特点,可以将之前的信息带到当前时刻t中,这对于处理自然语言序列问题十分重要,例如我们预测“今天 天气晴朗 , 天空 是 蓝色”中的最后一个词“蓝色”,通过训练后的RNN可以较好做到这点,此时要预测的内容只依赖于之前较少的几个词,也就是说当前要预测内容位置和提供该预测信息的内容位置距离较短,如果将相关内容信息的节点标识为蓝色,可以见下图:

但是,有时需要预测的内容相关信息和当前预测内容的位置相隔很远,而RNN在处理这类任务上表现并不好,此时的相关信息用红色表示:

所以,这种长期依赖问题,传统的RNN并不能很好学习到。

那如何处理这种长期依赖问题呢?

幸运的是,LSTM被提出来了。

长短期记忆网络(Long short-term memory, LSTM)其实也是一种RNN网络结构,只是它的结构比我们之前提到的典型RNN结构复杂得多。LSTM由Hochreiter & Schmidhuber (1997)提出,LSTM在很多自然语言处理任务上表现较好。

LSTM能较好解决传统RNN所不能解决的长期依赖问题。

在传统的RNN结构中,结构简单,例如只有个tanh层,如下图所示:

而LSTM相比之下较为复杂,结构如下图所示:

在详细了解LSTM的结构之前,我们有必要了解上图中各种元素所代表的涵义:

黄色方框代表神经网络的层结构、粉红色的圆代表元素级的操作、单个箭头代表向量的传递、两条线合并为一代表向量的连接操作、一条线分叉为两条代表同样向量内容复制一份。

LSTM的关键在于细胞状态,下图中的淡绿色为细胞,下图中的黑色实线为细胞状态。

细胞状态对于LSTM十分重要,在LSTM中,通过门来对细胞状态做处理,门,顾名思义,是一种决定信息能否通过的结构,在LSTM中,门的结构如下所示:

它是通过一个Sigmoid神经网络层和一个元素级相乘操作组成的,

在传统的前馈神经网络中,我们知道Sigmoid神经网络层的输出通常是一个向量,并且该向量的每个元素都在0~1之间的实数,可以理解为让信息通过的占比,例如0代表不让任何信息通过门,1代表让所有信息通过门。

在LSTM中,有三种门来控制细胞状态的变化。

在下一章中,我们详细拆解LSTM中的细节内容。

扫码下图关注我们不会让你失望!

推荐 0
本文由 ID王大伟 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册