一、深度学习基础

1.1 深度学习(DL)概念

深度学习是指从有限样例中通过算法总结出一般性的规律,并可以应用到新的未知数据上。神经网络与深度学习并不等价,深度学习可以采用神经网络模型,也可以采用其他模型,但由于神经网络可以比较容易的解决贡献度分配问题,因此神经网络模型成为深度学习中主要采用的模型。

  1. 深度学习是机器学习的一个子问题,主要目的是从数据中自动学习到有效的特征表示。所谓深度是指原始数据进行非线性特征转换的次数。
  2. 深度学习是将原始的数据特征通过多步特征转换得到一种特征表示,并进一步输入到预测函数得到最终结果。
  3. 深度学习需要解决的关键问题是贡献度分配问题(CAP),即一个系统中不同的组件或其参数对最终系统输出结果的贡献或影响。
  4. 深度学习采用的模型主要是神经网络模型,其主要原因是神经网络模型可以使用误差反向传播算法,从而比较好的解决贡献度分配问题。

1.2 深度学习模型

深度学习的概念源于人工神经网络的研究,神经网络是由大量相互连接的神经元节点构成的进行信息处理的数学模型。可将神经元按功能分为输入层、隐藏层和输出层三个层次。其中输入层接受数据输入,将输入数据传递给第一层隐藏层,由隐藏层对输入数据进行相关数学计算,最后经由输出层产生输出。

传统神经网络的隐藏层数目一般不超过两层,但深度学习网络一般含多层隐藏层 。典型的深度学习模型包括卷积神经网络、深度信念网络、堆叠自编码网络、循环神经网络等。

1.2.1 全连接神经网络

全连接神经网络(Fully Connected Neural Network),CNN、RNN、LSTM等网络都是基于全连接神经网络出发。

圆圈中的计算公式:

反向传播

神经网络的输出Y 与真实值Y 之间的损失Loss

上述的公式经过化简,我们可以看到A、B、C、D、E、F都是常系数,未知数就是w 和b ,也就是为了让Loss 最小,我们要求解出最佳的w 和b 。

为了求解 Loss,我们采用梯度下降法

学习率α,一般在(0,1)之间,一般来说,学习率越大,神经网络学习速度越快。如果学习率太小,网络很可能会陷入局部最优;但是如果太大,超过了极值,损失就会停止下降,在某一位置反复震荡。

1.2.2 卷积神经网络

卷积神经网络(Convolutional Neural Networks, CNN)是深度学习的代表模型。常用于目标检测、图像识别、模式分类和数据预测等。主要由输入层、隐藏层(其中包含卷积层、激活函数、池化层、全连接层)和输出层组成。

一个经典的CNN网络结构一般包含输入层(Input layer)、卷积层(convolutional layer)、池化层(pooling layer)和输出层(全连接层+softmax layer)。

  • 输入层: 网络的输入,以图像为例,一般代表一张图片的像素矩阵。

以处理图像数据为例。在处理图像时,输入层一般代表一张图像的三维像素矩阵,大小通常为w*h*3或者w*h*1的矩阵,其中这三个维度分别图像的宽度、长度、深度。深度也称为通道数,在彩色图像中有R、G、B三种色彩通道,而黑白图像只有一种色彩通道。

  • 卷积层: CNN中最为重要的部分。通过卷积操作获取图像的局部区域信息。

卷积操作:

卷积操作通过使用过滤器filter(也称作卷积核),将当前层神经网络上的子节点矩阵转化为下一层神经网络上的一个节点矩阵,得到的矩阵称之为特征图(feature map)。

首先,先定义一个3*3 的filter,其实是一个矩阵。filter的数值这里是手工设置的。在实际中,这些值是网络的参数,通常是随机初始化后通过网络学习得到的

卷积操作就是filter矩阵跟filter覆盖的图片局部区域矩阵(如下图image中的黄色区域)对应的每个元素相乘后累加求和。

计算过程如下:

在完成上面的卷积操作后,filter会继续移动,然后再进行卷积操作。一次移动的距离称作步长(Stride)。这里设定步长为1,则向右移动1个单元格,在当前区域继续进行卷积操作,得到卷积值。注意,卷积步长只在输入矩阵的长和宽这两个维度实施。

当filter移动到输入矩阵的最右侧时,下一次将向下移动一个步长,同时从最左侧重新开始。

filter为什么能够有效提取特征信息:

  • 如果有图片的局部区域跟filter矩阵比较相似,在进行卷积后的输出值会比较大。卷积值越大,就越表明检测到filter对应的物体特征
  • filter的大小只覆盖图片的局部区域,这种局部连接可以让特征只关注其应该关注的部分。这种设计符合人类对物体认知原理的,试想一下,我们在看到一只猫后,其实是记住这只猫各个区域最显著的特征,这样当我们看到一只狗时,就能够根据局部特征区分猫与狗。
  • 同一个filter在进行卷积计算时参数是不变的,也被称作权值共享,这样就可以检测不同区域上相同的物体特征。

前面计算的卷积值是输入矩阵的线性函数。在实际使用中,引入激活函数,其目的是增加整个网络的非线性表达能力,否则,若干线性操作层的堆叠仍然是线性映射,无法形成复杂函数,也就无法捕获实际应用中非线性特征的表达形式。

  • 池化层: 对数据进行降采样(Down Sampling),缩小数据规模,收集关键数据,同时提高计算速度。

池化层的作用是缩小特征图,保留有用信息,得到一个更小的子图来表征原图。池化操作本质上是对图片进行降采样,可以认为是将一张分辨率高的图片转化为分辨率较低的子图,保留的子图不会对图片内容理解产生太大影响。

池化的方式一般有两种:Max Pooling和Average Pooling

Max Pooling,首先设定Pooling的大小与步长,然后覆盖到对应格子上面,找出最大值作为输出结果,例如上图Pooling选择2×2,步长选择为2,因此输出就是2×2的维度,每个输出格子都是对应维度上输入的最大值。

如果为Average Pooling,那么就是选择其间的平均值作为输出的值。

  • 全连接层: 将学到的特征表示映射到类标签空间,起到分类器的作用。

在经过多层的卷积层和池化层操作后,一般会有1-2个全连接层,给出最后的分类结果。全连接层在整个卷积神经网络中起到“分类器”的作用,它将学到的特征表示映射到类标签空间。

卷积核在滑动过程中做的卷积运算就是卷积核w 与其所覆盖的区域的数进行点积,最后将结果映射到卷积层。具体的运算公式如下,过程为特征提取:

CNN减少计算的方式:局部链接和权值共享方式

卷积神经网络与全连接神经网络的区别

1)总有至少1个的卷积层,用以提取特征。

2)卷积层级之间的神经元是局部连接和权值共享,这样的设计大大减少了(w , b)的数量,加快了训练。

(2)深度信念网络

深度信念网络(Deep Belief Network, DBN)是一个概率生成模型,由多个限制波尔茨曼机(Restricted Boltzmann Machines, RBM)层组成。RBM 具有一个显层和一个隐层,其中显层由显性神经元(即显元)组成,用于接收输入数据;隐层由隐性神经元(即隐元)组成,用于特征提取。

DBN 的训练过程主要可分为以下两步,一是无监督的预训练,二是反向微调。预训练是指无监督地对每个 RBM 网络进行逐层训练。其中最底层的 RBM 将以原始数据输入进行训练,之后再将底层 RBM 提取的特征输入上一层的 RBM 继续进行训练。接下来重复这个过程直至训练合适的 RBM 层。

卷积神经网络是深度学习的代表模型之一,其优点是无需手动选取特征,可以共享卷积核,方便处理高维数据,缺点是需要调参且物理含义不明确。

深度信念网络解决了深层次神经网络训练时间较长的问题,有效避免了深度学习容易陷入局部最优的陷阱,易于拓展,但只能学习带标签的数据。堆叠稀疏自编码器用自编码器替换了传统 DBN 中的 RBM 层,大大方便了无标签数据的学习。 
循环神经网络是一类以序列数据为输入的递归神经网络,通过各个隐藏层之间的联系,使得当前的输出与前一时刻的输出有关,实现对处理过的信息进行记忆,但当序列过长时 RNN 的表现不佳。长短期记忆网络是一种改进的 RNN 模型,在 RNN 的基础上增加了三个控制门,通过增加的控制单元解决了 RNN 中长序列依赖问题,常用于长时间序列的预测,非常适合应用于城市轨道交通短期客流预测领域。

(3)循环神经网络

循环神经网络(Recurrent Neural Network,RNN)是一类以序列数据为输入,在序列的演进方向进行递归,且所有节点按链式连接的递归神经网络。。

传统神经网络模型中,同一个隐藏层中的神经元节点间并无连接,而 RNN 增加了各个隐藏
层内部节点之间的联系,通过隐藏层之间的关联作用,使得当前的输出与前一时刻的输出有关,实现对处理过的信息进行记忆。

(4)长短期记忆神经网络

长短期记忆神经网络(Long Short-Term Memory, LSTM)是 RNN 的一种变体,由于 LSTM 网络通过门控制将短期记忆与长期记忆结合起来,在一定程度上解决了 RNN 由于梯度消失只能有短期记忆的问题。 在实际应用中,当预测信息和相关信息间的间隔超过一定范围时,传统 RNN很难把它们关联起来,同时 RNN 也存在着梯度消失和梯度爆炸的问题。为了处理和预测时间序列中间隔和延迟相对较长的事件,Hochreiter 和 Schmidhuber 提出了长短期记忆网络(Long Short-Term Memory,LSTM)。

区别于 RNN 的地方主要在于它在算法中加入了一个判断信息是否有用的结构,称为单元,以单元状态来保存长期的记忆。

LSTM 擅长学习和分类顺序数据。常见的应用领域包括情感分析、语音识别、视频分析和时间序列预测等。

长短时记忆模型(LSTM)的结构与 RNN 相同,由输入层、隐含层、输出层构成。与 RNN 不同的是,LSTM 中存在有记忆模块,因此 LSTM 能够对于客流量随时间的变化能够进行捕捉,通过进行深层次的训练以便用于提取特征。

2.2 人工智能(AI)

人工智能就是让机器的行为看起来就像是人所表现出来的智能行为一样。

  • 感知能力:模拟人的感知能力,可对外部刺激信息进行感知和加工,主要研究领域包括语言信息处理和计算机视觉等。
  • 学习能力:模拟人的学习能力,主要研究如何从样例或从环境的交互中进行学习,主要研究领域包括监督学习、无监督学习和强化学习。
  • 认知能力:模拟人的认知能力,主要研究领域包括知识表示、自然语言理解、推理、规划、决策等。

3.3. 机器学习(ML)

机器学习让计算机从数据中进行自动学习,得到某种知识(或规律)。

三、TensorFlow与Keras 简介

3.1 TensorFlow 与Keras

TensorFlow 框架是谷歌公司开发的最受欢迎的端到端深度学习平台,是一个用Python、C++和CUDA语言编写的免费开源软件库,广泛用于各种深度学习网络。

keras是一个高级神经网络API,用python编写,能够在TensorFlow、CNTK和Theano上运行。

3.2 tensorflow与keras的区别

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

深度学习实战1(基本概念、全连接神经网络、CNN)相关推荐

  1. 【深度学习】第二章:全连接神经网络

    文章目录 1. 什么是全连接神经网络? 2. 三要素 2.1 模型 2.2 准则 2.3 算法 3. 反向传播算法 3.1 为什么要使用反向传播算法的随机梯度下降法求最优化? 3.2 什么是反向传播算 ...

  2. 【金融】【pytorch】使用深度学习预测期货收盘价涨跌——全连接神经网络模型构建与训练

    [金融][pytorch]使用深度学习预测期货收盘价涨跌--全连接神经网络模型构建与训练 模型构建与训练 模型构建与训练 def get_accuracy(SR,GT,threshold=0.5):S ...

  3. [深度学习-实战篇]情感分析之卷积神经网络-TextCNN,包含代码

    0. 前言 在"卷积神经网络"中我们探究了如何使用二维卷积神经网络来处理二维图像数据.在之前的语言模型和文本分类任务中,我们将文本数据看作是只有一个维度的时间序列,并很自然地使用循 ...

  4. 【Pytorch深度学习实战】(4)前馈神经网络(FNN)

  5. 深度学习2---任意结点数的三层全连接神经网络

    上一篇文章:深度学习1-最简单的全连接神经网络 我们完成了一个三层(输入+隐含+输出)且每层都具有两个节点的全连接神经网络的原理分析和代码编写.本篇文章将进一步探讨如何把每层固定的两个节点变成任意个节 ...

  6. 深度学习实战——模型推理优化(模型压缩与加速)

    忆如完整项目/代码详见github:https://github.com/yiru1225(转载标明出处 勿白嫖 star for projects thanks) 目录 系列文章目录 一.实验思路综 ...

  7. Tensorflow【实战Google深度学习框架】全连接神经网络以及可视化

    文章目录 1 可视化 神经网络的二元分类效果 2 全连接神经网络 3 TensorFlow搭建一个全连接神经网络 3.1 读取MNIST数据 3.2 建立占位符 3.3 建立模型 3.4 正确率 3. ...

  8. Pytorch深度学习入门与实战一--全连接神经网络

    全连接神经网络在分类和回归问题中都非常有效,本节对全连接神经网及神经元结构进行介绍,并使用Pytorch针对分类和回归问题分别介绍全连接神经网络的搭建,训练及可视化相关方面的程序实现. 1.全连接神经 ...

  9. 深度学习原理-----全连接神经网络

    系列文章目录 深度学习原理-----线性回归+梯度下降法 深度学习原理-----逻辑回归算法 深度学习原理-----全连接神经网络 深度学习原理-----卷积神经网络 深度学习原理-----循环神经网 ...

最新文章

  1. python append 浮点数 精度_Python打牢基础,从12个语法开始!
  2. 七大排序算法的个人总结(二)
  3. DBMS_SPACE包的使用
  4. mvc的Controller返回值类型ActionResult详解
  5. python中property魔法方法原理_Python类中的魔法方法之 __slots__原理解析
  6. 【AD】如何将喜欢的图案导出成为丝印层和PCB形状
  7. 项目管理学习总结(5)——产品开发过程中各角色职责说明和技能要求
  8. Tensorflow——可视化训练过程
  9. 【王道计组笔记】储存系统(2):主存简单模型及寻址的概念
  10. Android 中的线程有哪些,原理与各自特点
  11. 在Spring Boot中使用Spring Security实现权限控制
  12. idea 格式化代码 快捷键
  13. MC下载Forge/Optifine不想有广告怎么办
  14. 产品经理—怎么用KANO模型给众多需求进行优先级排序?
  15. WinXP虚拟机安装softICE
  16. XP下微软雅黑粗体不起作用(不能显示)的解决方法
  17. “校长”潘淳:侠之大者,一蓑烟雨任平生
  18. 组装计算机必须要有显卡吗,组装电脑应该侧重CPU还是显卡
  19. JAVA蘑菇西餐,蘑菇的二十二种西餐做法,简单易上手,让你品尝不一样的风味...
  20. 这俩 AI 项目贼有意思

热门文章

  1. 纯随机采样(train_test_split)和分层采样(StratifiedShuffleSplit)| sklearn库实现
  2. 雷泰Endurance高温红外测温仪
  3. 维特比算法详解(隐马尔科夫模型)
  4. 免费福利!贺岁大片免费送免费看!另外还有红包封面礼包等你,手慢就没有了!...
  5. web测试常用的几个功能对应的详细测试点
  6. 创建catkin_ws工作空间出现catkin_make错误解决方法
  7. 《神经⽹络与深度学习》-自学笔记01
  8. 模拟信号求解相位差(1)
  9. 【语法一】基础语法入门
  10. <快捷键>Pycharm快速创建推导公式