在本篇博客中将简单介绍常见的几种循环神经网络和一维卷积神经网络,并使用一些简答的数据进行拟合分析。本文相对适合刚入门的同学,同时也作为自己过去一段时间学习的总结和记录,现在神经网络框架已经非常完善的支持了很多常见和有效的深度学习算子,我们只需要掌握函数的用法就可以快速应用到自己项目中,当然希望热爱AI的同学能持续学习每一行API背后的数学逻辑和工程优化方法
认识背景
在多数工程科学和基础科学研究中都会产生大量分布的时间序列数据。在几十年前的传统的分析过程中工程师和学术界喜欢基于数值分析的过程来对模型进行建模,得到一个和对象尽可能拟合的结果。但是深度学习技术的出现使得时间序列数据的分析得到了更加简便的表达。作为新时代的研究人员有必要学习和理解几种常用的时间序列数据分析方法。
首先我们需要认识什么是时间序列数据:
最常见的例子就是语言文本,在你读到现在这句话的时候,你的认识过程中已经默认产生了对这句话的词组及其前后文的联系。如果我把上一句话改为:“读到语言文本例子最常见的,在这句话在的时候…”很明显,即使是完全相同的词汇组成的句子,随机打乱之后基本丧失了原来的含义,再或者我可以改为:“最常见的xx就是xxxx,在x读到xx这句话的xx”,那么在保持词汇顺序的前提下丢失部分词汇也无法得到原来的语义信息。
根据上面的两个例子,我们不难得知,在时间序列数据中最关注的就是这两个信息:1、每个点的数据内容;2、数据内容之间的前后文关系。这两个条件缺一不可。那么我们如何来拟合这两组数据,或者换句话说让计算机能够像人一样理解数据和数据前后关系,实现学习数据并应用在未来预测上。
在下面的曲线中,x轴作为时间数据,y轴作为时间点的目标数据,我们完全可以使用一个函数 F ( x ) \ F(x) F(x)来拟合随机分布,传统方法中有很多算法在做这件事情,在很多特殊场景下这种基于建模的传统拟合方法依然能得到非常好的结果。
但是,并非所有的场景都局限于某一个条件之下。应该说绝大部分时间数据都包含了很多的噪声数据和复杂的非线性特征,对于神经网络来说,神经网络天然就具有良好的噪声去除能力,同时基于网络连接的系统对输入的局部数字浮动也存在较好的适应能力。
那么背景介绍的差不多了,我们直接看一下神经网络针对时间数据有些什么方法:
一维卷积神经网络
有过图像开发经验的同学应该很熟悉卷积神经网络,在常见的目标检测算法中我们使用二维卷积网络提取特征。那么,我们现在抽象一点,将一张二维的平面图像数据按照行的方向,延展为一个一维行数据。现在我们针对这个一维的图像数据就可以通过一维的卷