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

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

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

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

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

LSTM简介

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

​ Simple RNN网络会由于梯度消失问题,致使没法回忆起长久的记忆,也就是说Simple RNN是一个Short-Term Memory的模型。可是,LSTM经过某一些操做,使得其可以回忆起长久的记忆,也就是说它是一个长的短时间记忆,所以被称之为 Long Short-Term Memory。——李宏毅ide

Simple RNN的弊端

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

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

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

LSTM的结构

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

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

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

​ 先对符号作解释:

  1. 表明的是神经网络,中间的\(\sigma\)或者\(tanh\)表明的是其激活函数。
  2. 表示逐点操做:
    • 表示逐点相乘:\(\left[\begin{array}{c}0.9 \\ 0.2 \\ -0.5 \\ -0.1\end{array}\right] \circ\left[\begin{array}{c}0.5 \\ 0 \\ 1 \\ 0.8\end{array}\right]=\left[\begin{array}{c}0.45 \\ 0 \\ -0.5 \\ -0.08\end{array}\right]\)
    • 表示逐点相加:\(\left[\begin{array}{c}0.9 \\ 0.2 \\ -0.5 \\ -0.1\end{array}\right] + \left[\begin{array}{c}0.5 \\ 0 \\ 1 \\ 0.8\end{array}\right]=\left[\begin{array}{c}1.4 \\ 0.2 \\ 0.5 \\ 0.7\end{array}\right]\)
    • 表示逐点用tanh函数:\(tanh(\left[\begin{array}{c}0.9 \\ 0.2 \\ -0.5 \\ -0.1\end{array}\right]) =\left[\begin{array}{c}0.717 \\ 0.198 \\ -0.462 \\ -0.100\end{array}\right]\)
  3. 表示以下将两个矩阵链接起来:

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

细胞状态(Cell State)

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

​ 当咱们分析一部小说主题的时候,确定不会一个字一个字地分析,咱们会抓住主要矛盾,分析小说中的主要情节矛盾,而后判断一部小说的主题。

  1. 有些小说写的比较隐晦,主题可能会在后段部分才显现出来,所以咱们在读小说的时候,会不断更新脑海中对主要矛盾的印象,往里面添加新的东西,同时删除某些次要的东西。
  2. 有的小说开门见山,在文章的开始就会告诉你主题是什么,所以,你在后面阅读的过程当中,你就不会再向你脑海中的主要矛盾添加内容了,由于你知道后面的内容不会影响主要矛盾。

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

内容参考于RNN模型与NLP应用(4/9):LSTM模型

门(Gate)

​ 在LSTM中有三种门,那么门究竟是什么呢?门的做用很简单,就是让information选择性经过。门的结构以下图左边所示:

​ 在这种状况下,当一个数据\(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}\)中哪一些数据应该被“遗忘”。

输入门(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中。

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的更新。

输出门(Output Gate)

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

​ 输出门的做用实际上就是经过控制\(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结构的介绍,若是已经可以很好的理解上面的内容,让咱们再回过头来看下面这张图,是否是就感受简单起来了呢?

​ 在下篇博客,将介绍如何使用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 的梯度消失问题
相关文章
相关标签/搜索