一、深度学习的介绍

目标

  1. 知道什么是深度学习
  2. 知道深度学习和机器学习的区别
  3. 能够说出深度学习的主要应用场景
  4. 知道深度学习的常见框架

1. 深度学习的概念

深度学习(英语:deep learning)是机器学习的分支,是一种以人工神经网络为架构,对数据进行特征学习的算法。

2. 机器学习和深度学习的区别

2.1 区别1 :特征提取

特征提取的角度出发:

  1. 机器学习需要有人工的特征提取的过程
  2. 深度学习没有复杂的人工特征提取的过程,特征提取的过程可以通过深度神经网络自动完成

2.2 区别2:数据量

数据量的角度出发:

  1. 深度学习需要大量的训练数据集,会有更高的效果
  2. 深度学习训练深度神经网络需要大量的算力,因为其中有更多的参数

3. 深度学习的应用场景

  1. 图像识别

    1. 物体识别
    2. 场景识别
    3. 人脸检测跟踪
    4. 人脸身份认证
  2. 自然语言处理技术

    1. 机器翻译
    2. 文本识别
    3. 聊天对话
  3. 语音技术

    1. 语音识别

    4. 常见的深度学习框架

    目前企业中常见的深度学习框架有很多,TensorFlow, Caffe2, Keras, Theano, PyTorch, Chainer, DyNet, MXNet, and CNTK等等

    其中tensorflow和Kears是google出品的,使用者很多,但是其语法晦涩而且和python的语法不尽相同,对于入门玩家而言上手难度较高。

    所以在之后的课程中我们会使用facebook出的PyTorch,PyTorch的使用和python的语法相同,整个操作类似Numpy的操作,并且 PyTorch使用的是动态计算,会让代码的调试变的更加简单

    二、神经网络的介绍

目标

  1. 知道神经网络的概念
  2. 知道什么是神经元
  3. 知道什么是单层神经网络
  4. 知道什么是感知机
  5. 知道什么是多层神经网络
  6. 知道激活函数是什么,有什么作用
  7. 理解神经网络的思想

1. 人工神经网络的概念

人工神经网络(英语:Artificial Neural Network,ANN),简称神经网络(Neural Network,NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型,用于对函数进行估计或近似。

和其他机器学习方法一样,神经网络已经被用于解决各种各样的问题,例如机器视觉和语音识别。这些问题都是很难被传统基于规则的编程所解决的。

2. 神经元的概念

在生物神经网络中,每个神经元与其他神经元相连,当它“兴奋”时,就会向相连的神经元发送化学物质,从而改变这些神经元内的电位;如果某神经元的电位超过了一个“阈值”,那么它就会被激活,即“兴奋”起来,向其他神经元发送化学物质。

1943 年,McCulloch 和 Pitts 将上述情形抽象为上图所示的简单模型,这就是一直沿用至今的 M-P 神经元模型。把许多这样的神经元按一定的层次结构连接起来,就得到了神经网络。

一个简单的神经元如下图所示,

其中:

  1. a1,a2…an​a_1,a_2\dots a_n​a1​,a2​…an​​ 为各个输入的分量
  2. w1,w2⋯wnw_1,w_2 \cdots w_nw1​,w2​⋯wn​ 为各个输入分量对应的权重参数
  3. bbb 为偏置
  4. fff 为激活函数,常见的激活函数有tanh,sigmoid,relu
  5. ttt 为神经元的输出

使用数学公式表示就是:
t=f(WTA+b)t = f(W^TA+b) t=f(WTA+b)
可见,一个神经元的功能是求得输入向量与权向量的内积后,经一个非线性传递函数得到一个标量结果

3. 单层神经网络

是最基本的神经元网络形式,由有限个神经元构成,所有神经元的输入向量都是同一个向量。由于每一个神经元都会产生一个标量结果,所以单层神经元的输出是一个向量,向量的维数等于神经元的数目。

示意图如下:

4. 感知机

感知机由两层神经网络组成,输入层接收外界输入信号后传递给输出层(输出+1正例,-1反例),输出层是 M-P 神经元

其中从w0,w1⋯wn​w_0,w_1\cdots w_n​w0​,w1​⋯wn​​都表示权重

感知机的作用:

把一个n维向量空间用一个超平面分割成两部分,给定一个输入向量,超平面可以判断出这个向量位于超平面的哪一边,得到输入时正类或者是反类,对应到2维空间就是一条直线把一个平面分为两个部分

5. 多层神经网络

多层神经网络就是由单层神经网络进行叠加之后得到的,所以就形成了的概念,常见的多层神经网络有如下结构:

  • 输入层(Input layer),众多神经元(Neuron)接受大量输入消息。输入的消息称为输入向量。
  • 输出层(Output layer),消息在神经元链接中传输、分析、权衡,形成输出结果。输出的消息称为输出向量。
  • 隐藏层(Hidden layer),简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。隐层可以有一层或多层。隐层的节点(神经元)数目不定,但数目越多神经网络的非线性越显著,从而神经网络的强健性(robustness)更显著。

示意图如下:

概念:全连接层

全连接层:当前一层和前一层每个神经元相互链接,我们称当前这一层为全连接层。

思考:假设第N-1层有m个神经元,第N层有n个神经元,当第N层是全连接层的时候,则N-1和N层之间有1,这些参数可以如何表示?

从上图可以看出,所谓的全连接层就是在前一层的输出的基础上进行一次Y=Wx+b​Y=Wx+b​Y=Wx+b​的变化(不考虑激活函数的情况下就是一次线性变化,所谓线性变化就是平移(+b)和缩放的组合(*w))

6. 激活函数

在前面的神经元的介绍过程中我们提到了激活函数,那么他到底是干什么的呢?

假设我们有这样一组数据,三角形和四边形,需要把他们分为两类

通过不带激活函数的感知机模型我们可以划出一条线, 把平面分割开

假设我们确定了参数w和b之后,那么带入需要预测的数据,如果y>0,我们认为这个点在直线的右边,也就是正类(三角形),否则是在左边(四边形)

但是可以看出,三角形和四边形是没有办法通过直线分开的,那么这个时候该怎么办?

可以考虑使用多层神经网络来进行尝试,比如在前面的感知机模型中再增加一层

对上图中的等式进行合并,我们可以得到:
y=(w1−11w2−1+⋯)x1+(w1−21w2−1+⋯)x2+(w2−1+⋯)b1−1y = (w_{1-11}w_{2-1}+\cdots)x_1+(w_{1-21}w_{2-1}+\cdots)x_2 + (w_{2-1}+\cdots)b_{1-1} y=(w1−11​w2−1​+⋯)x1​+(w1−21​w2−1​+⋯)x2​+(w2−1​+⋯)b1−1​
上式括号中的都为w参数,和公式y=w1x1+w2x2+by = w_1x_1 + w_2x_2 +by=w1​x1​+w2​x2​+b完全相同,依然只能够绘制出直线

所以可以发现,即使是多层神经网络,相比于前面的感知机,没有任何的改进。

但是如果此时,我们在前面感知机的基础上加上非线性的激活函数之后,输出的结果就不在是一条直线

如上图,右边是sigmoid函数,对感知机的结果,通过sigmoid函数进行处理

如果给定合适的参数w和b,就可以得到合适的曲线,能够完成对最开始问题的非线性分割

所以激活函数很重要的一个作用就是增加模型的非线性分割能力

常见的激活函数有:

看图可知:

  • sigmoid 只会输出正数,以及靠近0的输出变化率最大
  • tanh和sigmoid不同的是,tanh输出可以是负数
  • Relu是输入只能大于0,如果你输入含有负数,Relu就不适合,如果你的输入是图片格式,Relu就挺常用的,因为图片的像素值作为输入时取值为[0,255]。

激活函数的作用除了前面说的增加模型的非线性分割能力外,还有

  • 提高模型鲁棒性
  • 缓解梯度消失问题
  • 加速模型收敛等

这些好处,大家后续会慢慢体会到,这里先知道就行

6. 神经网络示例

一个男孩想要找一个女朋友,于是实现了一个女友判定机,随着年龄的增长,他的判定机也一直在变化

14岁的时候:

无数次碰壁之后,男孩意识到追到女孩的可能性和颜值一样重要,于是修改了判定机:

在15岁的时候终于找到呢女朋友,但是一顿时间后他发现有各种难以忍受的习惯,最终决定分手。一段空窗期中,他发现找女朋友很复杂,需要更多的条件才能够帮助他找到女朋友,于是在25岁的时候,他再次修改了判定机:

在更新了女友判定机之后,问题又来了,很多指标不能够很好的量化,如何颜值,什么样的叫做颜值高,什么样的叫做性格好等等,为了解决这个问题,他又更新了判定机,最终得到超级女友判定机

上述的超级女友判定机其实就是神经网络,它能够接受基础的输入,通过隐藏层的线性的和非线性的变化最终的到输出

通过上面例子,希望大家能够理解深度学习的思想

输出的最原始、最基本的数据,通过模型来进行特征工程,进行更加高级特征的学习,然后通过传入的数据来确定合适的参数,让模型去更好的拟合数据。

这个过程可以理解为盲人摸象,多个人一起摸,把摸到的结果乘上合适的权重,进行合适的变化,让他和目标值趋近一致。整个过程只需要输入基础的数据,程序自动寻找合适的参数。

视频学习网站:视频学习网址

深度学习和神经网络的介绍相关推荐

  1. 15个小时彻底搞懂NLP自然语言处理(2021最新版附赠课件笔记资料)【LP自然语言处理涉及到深度学习和神经网络的介绍、 Pytorch、 RNN自然语言处理】 笔记

    15个小时彻底搞懂NLP自然语言处理(2021最新版附赠课件笔记资料)[LP自然语言处理涉及到深度学习和神经网络的介绍. Pytorch. RNN自然语言处理] 笔记 教程与代码地址 P1 机器学习与 ...

  2. 深度学习和神经网络的介绍(一)

    1.深度学习和神经网络 1.1 深度学习的介绍 目标: 知道什么是深度学习 知道深度学习和机器学习的区别 能够说出深度学习的主要应用场景 知道深度学习的常见框架 1.1.1 深度学习的概念 深度学习是 ...

  3. 【神经网络与深度学习】CIFAR10数据集介绍,并使用卷积神经网络训练图像分类模型——[附完整训练代码]

    [神经网络与深度学习]CIFAR-10数据集介绍,并使用卷积神经网络训练模型--[附完整代码] 一.CIFAR-10数据集介绍 1.1 CIFAR-10数据集的内容 1.2 CIFAR-10数据集的结 ...

  4. 华南理工深度学习与神经网络期末考试_深度学习基础:单层神经网络之线性回归...

    3.1 线性回归 线性回归输出是一个连续值,因此适用于回归问题.回归问题在实际中很常见,如预测房屋价格.气温.销售额等连续值的问题.与回归问题不同,分类问题中模型的最终输出是一个离散值.我们所说的图像 ...

  5. 深度学习(神经网络) —— BP神经网络原理推导及python实现

    深度学习(神经网络) -- BP神经网络原理推导及python实现 摘要 (一)BP神经网络简介 1.神经网络权值调整的一般形式为: 2.BP神经网络中关于学习信号的求取方法: (二)BP神经网络原理 ...

  6. python神经网络教程16_Python深度学习之神经网络视频

    Python深度学习之神经网络视频 课程简介 该阶段是深度学习的入门课程,主要介绍经典的深度学习框架TensorFlow的使用,IO操作,以及神经网络基础.卷积神经网络的相关知识,并用卷积神经网络原理 ...

  7. 程序如何在两个gpu卡上并行运行_深度学习分布式训练相关介绍 - Part 1 多GPU训练...

    本篇文章主要是对深度学习中运用多GPU进行训练的一些基本的知识点进行的一个梳理 文章中的内容都是经过认真地分析,并且尽量做到有所考证 抛砖引玉,希望可以给大家有更多的启发,并能有所收获 介绍 大多数时 ...

  8. 零基础入门深度学习(3) - 神经网络和反向传播算法

    无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就o ...

  9. 深度学习与神经网络概述

    本文将简单介绍:人工智能(Artificial Intelligence).机器学习(Machine Learning).深度学习(Deep Learning),并介绍神经网络的发展,以及三个在线演示 ...

最新文章

  1. pytorch中查看gpu信息
  2. iOS开发系列--让你的应用“动”起来
  3. 送你8个Python高效数据分析的技巧(附代码)
  4. 微信朋友圈里的十五种类型,笑死了!
  5. python小课骗局-Python小课怎么样啊?
  6. 「安全技术」针对常见混淆技术的反制措施
  7. XCTF WEB webshell
  8. 以股票RSI指标为例,学习Python发送邮件功能(含RSI指标确定卖点策略)
  9. 车辆行人识别训练与部署,EasyDL-Jetson Nano 端边云协作专场公开课
  10. 斗鱼Q3财报:移动端季度平均MAU再创新高至6190万,付费用户720万
  11. java和以太坊交互_java类库web3j开发以太坊智能合约快速入门
  12. 新手背代码被说“笨”?文科程序员教你如何记代码,妈妈再也不用担心我的头发!
  13. 西门子S7-200SMART四种密码解密软件
  14. 2017计算机基础教学大纲,《计算机应用基础》教学大纲
  15. Spark数据分析及处理(实战分析)
  16. 无线网为何显示无法上网络连接服务器,wlan显示已连接不可上网怎么办_wlan显示已连接但无法访问互联网怎么解决...
  17. python编程 从入门到实践 第五章 if语句
  18. PyCharm 新建 Python Package
  19. Intellij IDEA2017.3.5利用补丁破解
  20. GGSN - SCP 业务控制点

热门文章

  1. maven私服客户端配置
  2. zbb20180619 mysql windows环境下MySQL重启的命令行说明
  3. 记录解决windows XP启动加载个人设置慢的问题
  4. 如何构建关系型数据库
  5. 微软2013暑假实习生笔试题解析
  6. 使用 CXF 开发 SOAP 服务
  7. java回车换行符linux,回车换行符 java
  8. Unity 之 Physics 二
  9. oracle ORA-28000: the account is locked 28000. 00000
  10. guava之基本工具