网络流量预测入门(二)之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. VSCode---REST Client接口测试辅助工具

    我们一般都会用 PostMan 来完成接口测试的工作,因为用起来十分简单快捷,但是一直以来我也在寻找更好的方案,一个不用切换窗口多开一个 app 的方案 -- 终于在使用 VSCode 一段时版本间, ...

  2. Linux下登录Oracle命令行时删除键^H解决方法

    Linux下登录Oracle命令行时删除键^H解决方法 在linux服务器下登录oracle的控制台,如果输入错误,想用删除键删除时却不能删除,输出的是^H的字符. 方法 用如下的命令可以使删除键生效 ...

  3. 将Maven镜像更换为国内阿里云仓库

    1.国内访问maven默认远程中央镜像特别慢 2.用阿里的镜像替代远程中央镜像 3.大部分jar包都可以在阿里镜像中找到,部分jar包在阿里镜像中没有,需要单独配置镜像 换为国内镜像,让你感受飞一般的 ...

  4. Promise是如何实现异步编程的?

    Promise标准 不能免俗地贴个Promise标准链接Promises/A+.ES6的Promise有很多方法,包括Promise.all()/Promise.resolve()/Promise.r ...

  5. JAVA基础之接口

    接口 学习完框架之后,整合SSM过程中对于接口的认识加深了许多.根据<java核心技术>这本书进一步研究了一下. 1.概念 java核心技术是这样说的:"在Java程序设计中,接 ...

  6. 使用Arduino点亮ESP-01S,ESP8266-01S上的板载LED

    因为在开发ESP-01s远程控制中觉得接线麻烦,又因为ESP-01s板子上带有LED灯,那就先点亮板载LED,  如图所示: 打开Arduino 把代码copy进去,再编译烧录,就可以看见LED灯每隔 ...

  7. C/C++ 弱符号

    为什么会出现弱符号 在两个目标文件(a.o与b.o)链接的过程中,如果其中一个目标文件(a.o)通过extern的方式引用了另外一个目标文件(b.o)中的符号flag,但很不幸,在连接的过程中b.o没 ...

  8. TurtleBot3 Waffle (tx2版华夫)(8)键盘控制

    1)[Remote PC] 启动roscore $ roscore 2)[Turbot3] 启动turbot3 $ roslaunch turbot3_bringup minimal.launch 3 ...

  9. 如何在面试中介绍自己的项目经验(面向java改进版)

    本人于3年前写的博文,如何在面试中介绍自己的项目经验,经过大家的捧场,陆续得到了将近7万个点击量,也得到了众多网站公众号的转载,不过自己感觉,这篇文章更多的是偏重于方法,没有具体给到Java方面相关的 ...

  10. NOIP初赛篇——08计算机安全知识

    引言 ​ 计算机安全中最重要的是存储数据的安全,其面临的主要威胁包括:计算机病毒.非法访问.计算机电磁辐射.硬件损坏等. ​ 计算机病毒是附在计算机软件中的隐蔽小程序,它和计算机其他工作程序一样,但会 ...