网络流量预测入门(二)之LSTM介绍
网络流量预测入门(二)之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网络会因为梯度消失问题,导致无法回忆起长久的记忆,也就是说Simple RNN是一个Short-Term Memory的模型。但是,LSTM通过某一些操作,使得其能够回忆起长久的记忆,也就是说它是一个长的短期记忆,因此被称之为 Long Short-Term Memory。——李宏毅
Simple RNN的弊端
RNN会面临两个问题:梯度消失问题和梯度爆炸问题,关于具体的公式推导,可以参考RNN 的梯度消失问题。
简单点来说,就是下图中的\(W\)和\(U\)会随着时间序列的加长,也就是layer层数的增多而产生梯度消失和梯度爆炸问题。而LSTM通过门的机制解决了整个问题。
下面将对LSTM的结构进行介绍。
LSTM的结构
下面是一张LSTM的结构示意图,来自Understanding LSTM Networks,看起来很复杂,确实相比较于RNN,它确实要复杂很多,但是却也没那么难理解。与Simple RNN很类似,input 一个\(x_t\),output一个状态\(h_t\)。(只不过在其内部多了一个叫做Cell State的东西)
下图中,被重复的单元称之为细胞(Cell),也就是图中绿色的框框。
下图是结构图中所出现的符号:
先对符号做解释:
代表的是神经网络,中间的\(\sigma\)或者\(tanh\)代表的是其激活函数。
表示逐点操作:
表示逐点相乘:\(\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]\)
表示如下将两个矩阵连接起来:
LSTM发挥作用,离不开以下几个概念:Cell State ,Forget Gate,Input Gate ,Output Gate。下面将详细对其进行介绍。
细胞状态(Cell State)
Celle State是LSTM最关键的部分,它类似一条传输带,贯穿LSTM整个部分(可以形象地理解为主要矛盾)。举个例子:
当我们分析一部小说主题的时候,肯定不会一个字一个字地分析,我们会抓住主要矛盾,分析小说中的主要情节矛盾,然后判断一部小说的主题。
- 有些小说写的比较隐晦,主题可能会在后段部分才显现出来,因此我们在读小说的时候,会不断更新脑海中对主要矛盾的印象,往里面添加新的东西,同时删除某些次要的东西。
- 有的小说开门见山,在文章的开始就会告诉你主题是什么,因此,你在后面阅读的过程中,你就不会再向你脑海中的主要矛盾添加内容了,因为你知道后面的内容不会影响主要矛盾。
接下来将讨论三种门,不过在讨论三种门之前,我们应该先弄清楚什么是门。
内容参考于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来生成音乐。嘿嘿嘿~~
参考
- RNN模型与NLP应用(4/9):LSTM模型
- Understanding LSTM Networks
- 什么是 LSTM 循环神经网络
- ML Lecture 21-1: Recurrent Neural Network (Part I)
- RNN 的梯度消失问题
网络流量预测入门(二)之LSTM介绍的更多相关文章
- 网络流量预测入门(三)之LSTM预测网络流量
目录 网络流量预测入门(三)之LSTM预测网络流量 数据集介绍 预测流程 数据集准备 SVR预测 LSTM 预测 优化点 网络流量预测入门(三)之LSTM预测网络流量 在上篇博客LSTM机器学习生成音 ...
- 网络流量预测入门(一)之RNN 介绍
目录 网络流量预测入门(一)之RNN 介绍 RNN简介 RNN 结构 RNN原理 结构原理 损失函数$E$ 反向传播 总结 参考 网络流量预测入门(一)之RNN 介绍 了解RNN之前,神经网络的知识是 ...
- 网络流量预测 国内外研究现状【见评论】——传统的ARIMA、HMM模型,目前LSTM、GRU、CNN应用较多,貌似小波平滑预处理步骤非常关键
Time Series Anomaly Detection in Network Traffic: A Use Case for Deep Neural Networks from:https://j ...
- ARIMA模型实例讲解——网络流量预测可以使用啊
ARIMA模型实例讲解:时间序列预测需要多少历史数据? from:https://www.leiphone.com/news/201704/6zgOPEjmlvMpfvaB.html 雷锋网按:本 ...
- Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量
Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量 from:https://www.leiphone.com/news/201712/zbX22Ye5wD6CiwCJ.html 导语 ...
- 利用神经网络进行网络流量识别——特征提取的方法是(1)直接原始报文提取前24字节,24个报文组成596像素图像CNN识别;或者直接去掉header后payload的前1024字节(2)传输报文的大小分布特征;也有加入时序结合LSTM后的CNN综合模型
国外的文献汇总: <Network Traffic Classification via Neural Networks>使用的是全连接网络,传统机器学习特征工程的技术.top10特征如下 ...
- 脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?
1.引言 本文接上篇<脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手>,继续脑残式的网络编程知识学习 ^_^. 套接字socket是大多数程序员都非常熟悉的概念,它是计算机 ...
- [转帖]脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?
脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么? http://www.52im.net/thread-1732-1-1.html 1.引言 本文接上篇<脑残式网 ...
- 《用Python玩转数据》项目—线性回归分析入门之波士顿房价预测(二)
接上一部分,此篇将用tensorflow建立神经网络,对波士顿房价数据进行简单建模预测. 二.使用tensorflow拟合boston房价datasets 1.数据处理依然利用sklearn来分训练集 ...
随机推荐
- draggable()拖拽时限制移动区域
jQuery-UI为我们提供了一个非常便捷的拖拽方法:draggable(),在使用此方法时,我们可能会希望控件只在某一区域中移动,不能被拖出边界,这样的话我们可以使用下面的方法: 调用draggab ...
- C#中更改DataTable列名的三种方法
解决办法 直接修改列名 dt.Columns["Name"].ColumnName = "ShortName"; sql查询时设置别名 select ID as ...
- Windows系统提示:“windows找不到文件请确定文件名是否正确后
最近使用Win7/10系统的用户反应在系统中移动了桌面上的一些与系统无关的文档,在挪动了文件之后出现的问题,弹出了windows找不到文件请确定文件名是否正确后,再试一次, 的错误提示,该怎么办呢? ...
- [LeetCode]141. Linked List Cycle判断循环链表
快慢指针用来判断循环链表 记住 快慢指针有四种常用的应用场景: 1.找到有序链表的中点,快指针到头的时候,慢指针就是中点. 2.判断是不是循环链表,快慢指针相遇就是 3.找到循环链表的起点,以链表头 ...
- 母鸡下蛋实例:多线程通信生产者和消费者wait/notify和condition/await/signal条件队列
简介 多线程通信一直是高频面试考点,有些面试官可能要求现场手写生产者/消费者代码来考察多线程的功底,今天我们以实际生活中母鸡下蛋案例用代码剖析下实现过程.母鸡在鸡窝下蛋了,叫练从鸡窝里把鸡蛋拿出来这个 ...
- JDBC访问数据库的基本步骤是什么?
1.加载(注册)数据库驱动(到JVM) 2.建立(获取)数据库连接. 3.创建(获取)数据库操作对象. 4.定义操作的SQL语句. 5.执行数据库操作. 6.获取并操作结果集. 7.关闭对象,回收数据 ...
- java数组之排序
/** * String排序算法依据<b>词典编排顺序排序</b><br> * 所以大写字母开头的词都放在前面输出,之后才是小写之母开头的词 *@date:2018 ...
- mysql基础之double,float长度标度定义
MySQL类型float double decimal的区别 float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decima ...
- 2020安徽程序设计省赛 G序列游戏
2020安徽程序设计省赛 G序列游戏 有一个序列w,初始为空.再给出一个长度为m 单调递增的序列a.你需要对序列w 作如下n 次操作: (1)操作0,在序列尾部添加数字0. (2)操作1,在序列尾部添 ...
- 注意力论文解读(1) | Non-local Neural Network | CVPR2018 | 已复现
文章转自微信公众号:[机器学习炼丹术] 参考目录: 目录 0 概述 1 主要内容 1.1 Non local的优势 1.2 pytorch复现 1.3 代码解读 1.4 论文解读 2 总结 论文名称: ...