时间序列: 大杀器: 循环神经网络

Posted 擎创夏洛克AIOps

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了时间序列: 大杀器: 循环神经网络相关的知识,希望对你有一定的参考价值。

夏洛克ITOA产品从来以大数据和人工智能为安身立命之根本,本周大数据团队的算法工程师终于祭出了大杀器:循环神经网络。大家跟着小编一起来学习一下吧~

前言

上几节讲了一些时间序列的基本概念, 大家总感觉不那么的'智能', 与现在的人工智能的总那么的... 不太搭边. 先不管以上'感觉'对不对, 今天插队与大家分享一个处理时间序列的'大杀器' — 循环神经网络(Recurrent neural network, RNN), RNN就是为处理序列数据而生的( 时间序列数据是当是序列数据!!!).

首先,对于时间序列,让大家感受一下我随便训练的结果(真的很随便,大约只有100个循环,

+_+!):

怎么样? 预测效果惊人的好!

RNN在当今的人工智能领域,或者说机器学习领域炙手可热,大放异彩, 特别是在自然语言处理(natural language processing, NLP)方面(比如机器翻译,语音识别,对话机器人等等)可谓独孤求败. 而且已有许多应用被大家开发出来,比如让机器写文章,写古诗,谱曲填词,写代码... 不胜枚举, 这些无论怎么看都比时间序列(特指业务上的时间序列数据,一般有timestamp, value 等类似格式)复杂得多, 所以用RNN处理时间序列,大家是不是已经很有信心啦?

举个例子, **'曾经有一份真挚的感情,摆在我面前,我没有去___.'**

这句话如果应用传统的语言模型,可选项有:'北京','学校','珍惜','上班',… 有好多选项.传统的语言模型基于统计模型,可以利用横线前面的信息非常有限, 目前最长用的传统语言模型可能利用的前面信息是: '去….', '没有去…','我没有去…',再长就受不了.

显然,就算是可利用的信息是'我没有去…', 你认为选择出''珍惜''的概率会比'北京'大吗? 不过,RNN就会选择''珍惜'',而且概率会比'北京','上班'等等大很多. 这是因为,RNN不但会利用'我没有去…'这样的信息,而且还会利用'摆在我面前',以及'曾经有一份真挚的感情'等信息. 当这些信息利用上以后,就会发现'上班','学校'等等词汇放在横线上意思就对不上了.

不仅如此,RNN 还会告诉你,接下来会说什么:' 等到失去了,才追悔莫及','这让我很后悔','从而伤害了一位可爱的女孩',… 至于哪个,就看你的数据及训练情况了,如果都还行,至尊宝的'谎言'RNN完全可以脸不红心不跳的说出来.

**Tip:** 本文面向不同需求读者(或为您的最佳阅读体验着想):

只想了解一下,或拓宽一下思路的读者, 只需读 非 * 部分即可;

如果想稍微深入一些,或知道一些细节则需阅读所有小节包括 带 * 部分.


循环神经网络

那什么是神经网络? 别急,先看下RNN擅长做什么? 前面已经说过就是序列数据(sequential data). 序列数据的特点是什么? 就是序列数据前后之间是有很强的关联性的,专业一点的说法是不独立的(nonindependent). 前面出现的数据(比如词汇)对后面的数据有重大影响的, 甚至后面的数据对前的数据也是有重要影响的(双向循环神经网络,稍后介绍).

RNN就是为处理此等问题而生的,即RNN在处理当前信息时,会考虑前面出现的信息,理论上RNN可以包含当前信息前面的所有已知信息的.那循环是什么意思呢? 就是说之前处理过的信息还会一直被利用去帮助后面到来的信息,.

举个例子: 把一串信息比作一群学生去体检, 而RNN可以看成的一家医院, 第一个人进去后, 体检完成后,体检单包含了此人体检相关的所有信息, 作为输出信息上存储在系统中,并打印一份给这位学生,,而此学生出来后却把体检单交给了下一位同学(别问我为什么要给下一位同学,'医院'就是这么规定的,没办法,学生只能按学校的规则来,否则,想不想毕业?).

这个''下一位''同学进去后,把体检单交给医生,医生根据这个同学的体检情况及上交的这份体检单给这个同学重新写一份体检单,储存,并打印一份交给这位同学,此同学拿着这份包含他和之前同学信息的体检单出来后交给下一位同学.如此循环下去.

直到最后一位同学拿着包含他之前所有同学信息的体检单进去并检查完成后,他的体检单(理论上包含所有同学的信息)被储存,并打印一份交给他,这样一队人的'花式'体检就结束了, RNN就是这样的处理数据的.

循环结构

时间序列(五): 大杀器: 循环神经网络
时间序列(五): 大杀器: 循环神经网络

RNN结构

时间序列(五): 大杀器: 循环神经网络

双向循环神经

时间序列(五): 大杀器: 循环神经网络
时间序列(五): 大杀器: 循环神经网络
时间序列(五): 大杀器: 循环神经网络

深度循环神经网络

时间序列(五): 大杀器: 循环神经网络
时间序列(五): 大杀器: 循环神经网络
时间序列(五): 大杀器: 循环神经网络
时间序列(五): 大杀器: 循环神经网络
时间序列(五): 大杀器: 循环神经网络
时间序列(五): 大杀器: 循环神经网络
时间序列(五): 大杀器: 循环神经网络
时间序列(五): 大杀器: 循环神经网络

参考文献

Deep learning, 2015,Ian Goodfellow et al.

Neural network and deep learning, 2016 Micheal Nielsen.

Tensorflow for intelligence 2016, Sam Abrahams et al.

Understanding LSTM Networks —colah's blog

A critical Review of Recurrent Neural Network for sequence learning, 2015, Zachary C. Lipton

Hands on Machine learning with scikit-learn and Tensorflow: Concept, Tools, and, Techniques for Building Intelligent Systems.

The Unreasonable Effectiveness of Recurrent Neural Network, 2015, Andrej Karpathy blog.

零基础入门深度学习(5)- 循环神经网络,2017, hanbingtao.

Matrix calculus,2017, Wikipedia.

Matrix Differential Calculus with Applications in Statistics and Econometrics,2007, Jan R. Magnus, et al.


 

ITOA|技术博文|职场漫画


了解AIOps & ITOA

看有趣的职场漫画

以上是关于时间序列: 大杀器: 循环神经网络的主要内容,如果未能解决你的问题,请参考以下文章

NLP 大杀器 BERT 源码分析

Dropout大杀器已过时?视网络模型而定!

创新推出 | Serverless 调试大杀器:端云联调

创新推出 | Serverless 调试大杀器:端云联调

爬虫大杀器——phantomJS+selenium

golang大杀器GMP模型