网络流量预测入门(二)之LSTM介绍

​这篇blog大家就随便看一下吧,基本上是参照RNN模型与NLP应用(4/9):LSTM模型这个是video和Understanding LSTM Networks这篇博客写出来的。实际上大家只需要看上述两个内容就🆗了,他们的教程深入浅出,形象生动。

​在网络流量预测入门(一)之RNN 介绍中,对RNN的原理进行了介绍,然后,在简单明朗的 RNN 写诗教程中详细的介绍了如何使用keras构建RNN模型来写诗。

​而在这篇blog中将对LSTM进行介绍。

LSTM简介

​LSTM全称Long Short-Term Memory,中文名:长短期记忆,是一种循环网络。值得注意的是,Long Short-Term Memory中的-是放在Short与Term中间的。相比较于Simple RNN,LSTM在长的时间序列中有着更好的表现。

Simple RNN的弊端

​RNN会面临两个问题:梯度消失问题梯度爆炸问题,关于具体的公式推导,可以参考RNN 的梯度消失问题

​简单点来说,就是下图中的\(W\)\(U\)会随着时间序列的加长,也就是layer层数的增多而产生梯度消失和梯度爆炸问题。而LSTM通过门的机制解决了整个问题。

网络流量预测入门(二)之LSTM介绍-LMLPHP

​下面将对LSTM的结构进行介绍。

LSTM的结构

​下面是一张LSTM的结构示意图,来自Understanding LSTM Networks,看起来很复杂,确实相比较于RNN,它确实要复杂很多,但是却也没那么难理解。与Simple RNN很类似,input 一个\(x_t\),output一个状态\(h_t\)。(只不过在其内部多了一个叫做Cell State的东西)

​下图中,被重复的单元称之为细胞(Cell),也就是图中绿色的框框。

网络流量预测入门(二)之LSTM介绍-LMLPHP

​下图是结构图中所出现的符号:

网络流量预测入门(二)之LSTM介绍-LMLPHP

​先对符号做解释:

​LSTM发挥作用,离不开以下几个概念:Cell State ,Forget Gate,Input Gate ,Output Gate。下面将详细对其进行介绍。

细胞状态(Cell State)

​Celle State是LSTM最关键的部分,它类似一条传输带,贯穿LSTM整个部分(可以形象地理解为主要矛盾)。举个例子:

网络流量预测入门(二)之LSTM介绍-LMLPHP

​接下来将讨论三种门,不过在讨论三种门之前,我们应该先弄清楚什么是门。

门(Gate)

​在LSTM中有三种门,那么门到底是什么呢?门的作用很简单,就是让information选择性通过。门的结构如下图左边所示:

网络流量预测入门(二)之LSTM介绍-LMLPHP

​在这种情况下,当一个数据\(c\)通过一个门\(f\)🚪的时候(\(f\) 中的每一个数都位于\(0\sim 1\)之间),\(f\)会对数据 \(c\) 进行选择,可以让它全部通过(图中的\(-0.5*1=-0.5\)),也可以让它完全不通过(图中的\(0.2*0=0\)),当然也可以让它部分的通过。

​而在LSTM分别有着以下三种门:Forget Gate,Input Gate,Output Gate。

遗忘门(Forget Gate)

​遗忘门构成如下所示\(f_{t}=\sigma\left(W_{f} \cdot\left[h_{t-1}, x_{t}\right]+b_{f}\right)\)\(f_t\)中的每一个值都介于\(0\sim1\)之间,其中\(W_f\)\(b_f\)是LSTM在训练的时候,通过反向传播进行学习的。

​遗忘门的作用很简单,那就是控制\(C_{t-1}\)中哪一些数据应该被“遗忘”。

网络流量预测入门(二)之LSTM介绍-LMLPHP

输入门(Input Gate)

​图中的 \(i_t\) 表示输入门,\(\tilde{C}_{t}\)表示加入Cell State的数据。\(i_t\)中的每一个值都介于\(0\sim1\)之间,而\(\tilde{C}_{t}\)的值介于\(-1 \sim 1\)之间,其中\(W_i,W_c,b_i,b_c\)是通过反向传播进行学习更新的。

​输入门的作用就是控制\(\tilde{C}_{t}\)中哪一些数据能够加入到Cell State中。

网络流量预测入门(二)之LSTM介绍-LMLPHP

Cell State的更新

​Cell State的更新需要遗忘门和输入门的同时作用,遗忘门作用于上一个状态\(C_{t-1}\),输入门作用于当前输入\(\tilde{C}_{t}=\tanh \left(W_{C} \cdot\left[h_{t-1}, x_{t}\right]+b_{c}\right)\)。这样,当被遗忘门处理后的\(C_{t-1}\)加上新的输入\(\tilde{C}_{t}\),就组成新的\(C_t\)了,完成了一次Cell State的更新。

网络流量预测入门(二)之LSTM介绍-LMLPHP

输出门(Output Gate)

​输出门的结构如下说所示,\(O_t\)中的每一个值都介于\(0\sim1\)之间,其中\(W_o\)\(b_o\)是LSTM在训练的时候,通过反向传播进行学习的。

网络流量预测入门(二)之LSTM介绍-LMLPHP

​输出门的作用实际上就是通过控制\(C_t\)以达到控制\(h_t\)的目的。

输出\(h_t\)

​输出的示意图如下所示,\(tanh(C_t)\)中的每一个值都位于\(-1 \sim +1\)之间,输出门\(O_t\)通过控制\(C_t\)的information,来产生输出\(h_t\)\(h_t\)会被赋值为两份,一份作为下个layer的\(h_t\),一份用于LSTM在时序\(t\)时刻的输出。

网络流量预测入门(二)之LSTM介绍-LMLPHP

总结

​以上,便是对LSTM结构的介绍,如果已经能够很好的理解上面的内容,让我们再回过头来看下面这张图,是不是就感觉简单起来了呢?

网络流量预测入门(二)之LSTM介绍-LMLPHP

​在下篇博客,将介绍如何使用LSTM来生成音乐。嘿嘿嘿~~

参考

  1. RNN模型与NLP应用(4/9):LSTM模型
  2. Understanding LSTM Networks
  3. 什么是 LSTM 循环神经网络
  4. ML Lecture 21-1: Recurrent Neural Network (Part I)
  5. RNN 的梯度消失问题
01-28 19:50