网络流量预测入门(二)之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),也就是图中绿色的框框。

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

​ 先对符号做解释:

  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 的梯度消失问题

网络流量预测入门(二)之LSTM介绍的更多相关文章

  1. 网络流量预测入门(三)之LSTM预测网络流量

    目录 网络流量预测入门(三)之LSTM预测网络流量 数据集介绍 预测流程 数据集准备 SVR预测 LSTM 预测 优化点 网络流量预测入门(三)之LSTM预测网络流量 在上篇博客LSTM机器学习生成音 ...

  2. 网络流量预测入门(一)之RNN 介绍

    目录 网络流量预测入门(一)之RNN 介绍 RNN简介 RNN 结构 RNN原理 结构原理 损失函数$E$ 反向传播 总结 参考 网络流量预测入门(一)之RNN 介绍 了解RNN之前,神经网络的知识是 ...

  3. 网络流量预测 国内外研究现状【见评论】——传统的ARIMA、HMM模型,目前LSTM、GRU、CNN应用较多,貌似小波平滑预处理步骤非常关键

    Time Series Anomaly Detection in Network Traffic: A Use Case for Deep Neural Networks from:https://j ...

  4. ARIMA模型实例讲解——网络流量预测可以使用啊

    ARIMA模型实例讲解:时间序列预测需要多少历史数据? from:https://www.leiphone.com/news/201704/6zgOPEjmlvMpfvaB.html   雷锋网按:本 ...

  5. Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量

    Kaggle比赛冠军经验分享:如何用 RNN 预测维基百科网络流量 from:https://www.leiphone.com/news/201712/zbX22Ye5wD6CiwCJ.html 导语 ...

  6. 利用神经网络进行网络流量识别——特征提取的方法是(1)直接原始报文提取前24字节,24个报文组成596像素图像CNN识别;或者直接去掉header后payload的前1024字节(2)传输报文的大小分布特征;也有加入时序结合LSTM后的CNN综合模型

    国外的文献汇总: <Network Traffic Classification via Neural Networks>使用的是全连接网络,传统机器学习特征工程的技术.top10特征如下 ...

  7. 脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?

    1.引言 本文接上篇<脑残式网络编程入门(一):跟着动画来学TCP三次握手和四次挥手>,继续脑残式的网络编程知识学习 ^_^. 套接字socket是大多数程序员都非常熟悉的概念,它是计算机 ...

  8. [转帖]脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?

    脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?     http://www.52im.net/thread-1732-1-1.html   1.引言 本文接上篇<脑残式网 ...

  9. 《用Python玩转数据》项目—线性回归分析入门之波士顿房价预测(二)

    接上一部分,此篇将用tensorflow建立神经网络,对波士顿房价数据进行简单建模预测. 二.使用tensorflow拟合boston房价datasets 1.数据处理依然利用sklearn来分训练集 ...

随机推荐

  1. jxl导出Excel中需要跳过的的坑

    正如上篇文章(JXL封装不能使用static关键字问题)所说,在jxl导出Excel时候如果频繁使用到WritableCellFormat去设置单元格的样式,这个时候经常会出现两种情况: 1.报警告: ...

  2. H3C路由器配置——动态路由OSPF协议

    一.介绍 1.OSPF协议介绍 (1).OSPF(Open Shortest Path First,开放最短路径优先)路由协议是用于网际协议(IP)网络的链路状态路由协议.是一个被各厂商设备广泛支持的 ...

  3. [.NET] WCFDataService项目host到IIS上碰到的一个问题:数据库未能打开

    今天在尝试重现OP一个问题的,遇到了一个新的问题. 项目坏境: WCF Data Service 5.6 Entity Framewrok 5(不用6的原因时要重新配置WCF项目) SQL Serve ...

  4. 各公有云1核1G的云主机跑分对比

    本文主要测评华为云.腾讯云.阿里云 1H1G服务器的性能,为保证结果有效性,使用环境如下: 1.1H1G Ubuntu 16.04_x64 2.Unixbench Version 5.1.3,详细信息 ...

  5. 关于yaml文件格式和bootstrap文件

    yaml文件格式简洁层次分明 语法规则如下 大小写敏感 使用缩进表示层次关系 在缩进时不允许使用tab键,只允许使用空格 缩进的空格不重要,只要相同层级的元素左侧对齐即可(相同缩进为同一级) serv ...

  6. Azure Terraform(二)语法详解

    一,引言 上篇文章开始,我们简单介绍了以下通过基础设施管理工具----- Terraform,通过它来统一管理复杂的云基础设施资源.作为入门演示,使用Terraform 部署Azure 资源组的方式直 ...

  7. C# 9 新特性 —— 增强的 foreach

    C# 9 新特性 -- 增强的 foreach Intro 在 C# 9 中增强了 foreach 的使用,使得一切对象都有 foreach 的可能 我们来看一段代码,这里我们试图遍历一个 int 类 ...

  8. Redis基础篇(四)持久化:内存快照(RDB)

    AOF好处是每次执行只需要记录操作命令,记录量不大.但在故障恢复时,需要逐一执行AOF的操作命令,如果日志很大,恢复就很慢. 今天学习另一种持久化方式:内存快照.内存快照,是Redis某一时刻的状态, ...

  9. idea2020 没有 Autoscroll from Source

    2018版本: 2020版本: 最后在官网的网站中找到了解决方案,原来是改名了: 网址:https://intellij-support.jetbrains.com/hc/en-us/communit ...

  10. WebService 适用场合

    适用场合 1.跨防火墙通信 如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题.因为客户端和服务器之间通常会有防火墙或者代理服 务器.在这种情况下,使用D ...