深度学习是指从有限样例中通过算法总结出一般性的规律,并可以应用到新的未知数据上。神经网络与深度学习并不等价,深度学习可以采用神经网络模型,也可以采用其他模型,但由于神经网络可以比较容易的解决贡献度分配问题,因此神经网络模型成为深度学习中主要采用的模型。
深度学习的概念源于人工神经网络的研究,神经网络是由大量相互连接的神经元节点构成的进行信息处理的数学模型。可将神经元按功能分为输入层、隐藏层和输出层三个层次。其中输入层接受数据输入,将输入数据传递给第一层隐藏层,由隐藏层对输入数据进行相关数学计算,最后经由输出层产生输出。
传统神经网络的隐藏层数目一般不超过两层,但深度学习网络一般含多层隐藏层 。典型的深度学习模型包括卷积神经网络、深度信念网络、堆叠自编码网络、循环神经网络等。
全连接神经网络(Fully Connected Neural Network),CNN、RNN、LSTM等网络都是基于全连接神经网络出发。
圆圈中的计算公式:
反向传播
神经网络的输出Y 与真实值Y 之间的损失Loss
上述的公式经过化简,我们可以看到A、B、C、D、E、F都是常系数,未知数就是w 和b ,也就是为了让Loss 最小,我们要求解出最佳的w 和b 。
为了求解 Loss,我们采用梯度下降法
学习率α,一般在(0,1)之间,一般来说,学习率越大,神经网络学习速度越快。如果学习率太小,网络很可能会陷入局部最优;但是如果太大,超过了极值,损失就会停止下降,在某一位置反复震荡。
卷积神经网络(Convolutional Neural Networks, CNN)是深度学习的代表模型。常用于目标检测、图像识别、模式分类和数据预测等。主要由输入层、隐藏层(其中包含卷积层、激活函数、池化层、全连接层)和输出层组成。
一个经典的CNN网络结构一般包含输入层(Input layer)、卷积层(convolutional layer)、池化层(pooling layer)和输出层(全连接层+softmax layer)。
以处理图像数据为例。在处理图像时,输入层一般代表一张图像的三维像素矩阵,大小通常为w*h*3或者w*h*1的矩阵,其中这三个维度分别图像的宽度、长度、深度。深度也称为通道数,在彩色图像中有R、G、B三种色彩通道,而黑白图像只有一种色彩通道。
卷积操作:
卷积操作通过使用过滤器filter(也称作卷积核),将当前层神经网络上的子节点矩阵转化为下一层神经网络上的一个节点矩阵,得到的矩阵称之为特征图(feature map)。
首先,先定义一个3*3 的filter,其实是一个矩阵。filter的数值这里是手工设置的。在实际中,这些值是网络的参数,通常是随机初始化后通过网络学习得到的
卷积操作就是filter矩阵跟filter覆盖的图片局部区域矩阵(如下图image中的黄色区域)对应的每个元素相乘后累加求和。
计算过程如下:
在完成上面的卷积操作后,filter会继续移动,然后再进行卷积操作。一次移动的距离称作步长(Stride)。这里设定步长为1,则向右移动1个单元格,在当前区域继续进行卷积操作,得到卷积值。注意,卷积步长只在输入矩阵的长和宽这两个维度实施。
当filter移动到输入矩阵的最右侧时,下一次将向下移动一个步长,同时从最左侧重新开始。
filter为什么能够有效提取特征信息:
前面计算的卷积值是输入矩阵的线性函数。在实际使用中,引入激活函数,其目的是增加整个网络的非线性表达能力,否则,若干线性操作层的堆叠仍然是线性映射,无法形成复杂函数,也就无法捕获实际应用中非线性特征的表达形式。
池化层的作用是缩小特征图,保留有用信息,得到一个更小的子图来表征原图。池化操作本质上是对图片进行降采样,可以认为是将一张分辨率高的图片转化为分辨率较低的子图,保留的子图不会对图片内容理解产生太大影响。
池化的方式一般有两种:Max Pooling和Average Pooling
Max Pooling,首先设定Pooling的大小与步长,然后覆盖到对应格子上面,找出最大值作为输出结果,例如上图Pooling选择2×2,步长选择为2,因此输出就是2×2的维度,每个输出格子都是对应维度上输入的最大值。
如果为Average Pooling,那么就是选择其间的平均值作为输出的值。
在经过多层的卷积层和池化层操作后,一般会有1-2个全连接层,给出最后的分类结果。全连接层在整个卷积神经网络中起到“分类器”的作用,它将学到的特征表示映射到类标签空间。
卷积核在滑动过程中做的卷积运算就是卷积核w 与其所覆盖的区域的数进行点积,最后将结果映射到卷积层。具体的运算公式如下,过程为特征提取:
CNN减少计算的方式:局部链接和权值共享方式
卷积神经网络与全连接神经网络的区别
1)总有至少1个的卷积层,用以提取特征。
2)卷积层级之间的神经元是局部连接和权值共享,这样的设计大大减少了(w , b)的数量,加快了训练。
深度信念网络(Deep Belief Network, DBN)是一个概率生成模型,由多个限制波尔茨曼机(Restricted Boltzmann Machines, RBM)层组成。RBM 具有一个显层和一个隐层,其中显层由显性神经元(即显元)组成,用于接收输入数据;隐层由隐性神经元(即隐元)组成,用于特征提取。
DBN 的训练过程主要可分为以下两步,一是无监督的预训练,二是反向微调。预训练是指无监督地对每个 RBM 网络进行逐层训练。其中最底层的 RBM 将以原始数据输入进行训练,之后再将底层 RBM 提取的特征输入上一层的 RBM 继续进行训练。接下来重复这个过程直至训练合适的 RBM 层。
卷积神经网络是深度学习的代表模型之一,其优点是无需手动选取特征,可以共享卷积核,方便处理高维数据,缺点是需要调参且物理含义不明确。
深度信念网络解决了深层次神经网络训练时间较长的问题,有效避免了深度学习容易陷入局部最优的陷阱,易于拓展,但只能学习带标签的数据。堆叠稀疏自编码器用自编码器替换了传统 DBN 中的 RBM 层,大大方便了无标签数据的学习。
循环神经网络是一类以序列数据为输入的递归神经网络,通过各个隐藏层之间的联系,使得当前的输出与前一时刻的输出有关,实现对处理过的信息进行记忆,但当序列过长时 RNN 的表现不佳。长短期记忆网络是一种改进的 RNN 模型,在 RNN 的基础上增加了三个控制门,通过增加的控制单元解决了 RNN 中长序列依赖问题,常用于长时间序列的预测,非常适合应用于城市轨道交通短期客流预测领域。
循环神经网络(Recurrent Neural Network,RNN)是一类以序列数据为输入,在序列的演进方向进行递归,且所有节点按链式连接的递归神经网络。。
传统神经网络模型中,同一个隐藏层中的神经元节点间并无连接,而 RNN 增加了各个隐藏
层内部节点之间的联系,通过隐藏层之间的关联作用,使得当前的输出与前一时刻的输出有关,实现对处理过的信息进行记忆。
长短期记忆神经网络(Long Short-Term Memory, LSTM)是 RNN 的一种变体,由于 LSTM 网络通过门控制将短期记忆与长期记忆结合起来,在一定程度上解决了 RNN 由于梯度消失只能有短期记忆的问题。 在实际应用中,当预测信息和相关信息间的间隔超过一定范围时,传统 RNN很难把它们关联起来,同时 RNN 也存在着梯度消失和梯度爆炸的问题。为了处理和预测时间序列中间隔和延迟相对较长的事件,Hochreiter 和 Schmidhuber 提出了长短期记忆网络(Long Short-Term Memory,LSTM)。
区别于 RNN 的地方主要在于它在算法中加入了一个判断信息是否有用的结构,称为单元,以单元状态来保存长期的记忆。
LSTM 擅长学习和分类顺序数据。常见的应用领域包括情感分析、语音识别、视频分析和时间序列预测等。
长短时记忆模型(LSTM)的结构与 RNN 相同,由输入层、隐含层、输出层构成。与 RNN 不同的是,LSTM 中存在有记忆模块,因此 LSTM 能够对于客流量随时间的变化能够进行捕捉,通过进行深层次的训练以便用于提取特征。
人工智能就是让机器的行为看起来就像是人所表现出来的智能行为一样。
机器学习让计算机从数据中进行自动学习,得到某种知识(或规律)。
TensorFlow 框架是谷歌公司开发的最受欢迎的端到端深度学习平台,是一个用Python、C++和CUDA语言编写的免费开源软件库,广泛用于各种深度学习网络。
keras是一个高级神经网络API,用python编写,能够在TensorFlow、CNTK和Theano上运行。
tensorflow是比较地图的深度学习模型开发语言,keras是基于tensorflow 的高级API,通常调用一些封装好的函数就可以实现某些功能,而tensorflow比较底层,可以灵活的定义模型结构。
ensorFlow和theano以及Keras都是深度学习框架,TensorFlow和theano比较灵活,也比较难学
Keras是一个由Python编写的开源人工神经网络库,可以作为Tensorflow、Microsoft-CNTK和Theano的高阶应用程序接口,进行深度学习模型的设计、调试、评估、应用和可视化
参考文献:
【1】C++11标准库第二版:https://blog.csdn.net/a123a55/article/details/109403182
【2】基于深度学习的城市轨道交通客流量预测研究 -北京交通大学 薛秋驰
【3】基于深度学习模型的城市轨道交通短时客流量预测方法研究 -北京交通大学 王佳琳
【4】深度学习开端|全连接神经网络:https://zhuanlan.zhihu.com/p/104576756
【5】一文掌握CNN卷积神经网络:https://zhuanlan.zhihu.com/p/104776627
【6】卷积神经网络CNN学习:https://zhuanlan.zhihu.com/p/31919653
【7】深度学习之卷积神经网络CNN:https://zhuanlan.zhihu.com/p/137756756