深度学习的介绍

目标

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

深度学习的概念

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

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

  1. 区别1:特征提取

    特征提取的角度出发:

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

    数据量的角度出发:

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

深度学习的应用场景

  1. 图像识别
    • 物体识别
    • 场景识别
    • 人脸检测跟踪
    • 人脸身份认证
  2. 自然语言处理技术
    • 机器翻译
    • 文本识别
    • 聊天对话
  3. 语音技术
    • 语音识别

常见的深度学习框架

​ TensorFlow、Caffe2、Keras、Theano、PyTorch、Chainer、DyNet、MXNet、CNTK等。

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

​ facebook的pytorch的使用和python的语法相同,整个操作类似于Numpy的操作,而且pytorch使用的是动态计算,会让代码的调试变得更加简单。

神经网络的介绍

目标

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

人工神经网络的概念

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

​ 人工神经网络与生物神经元类似,由多个节点(人工神经元)互相连接而成,可以用来对数据之间的复杂关系进行建模。不同节点之间的连接被赋予了不同的权重,每个权重代表了一个节点对另一个节点的影响大小。每个节点代表一种特定函数,来自其他节点的信息经过其相应的权重计算,输入到一个激活函数中并得到一个新的活性值(兴奋或抑制)。

神经元的概念

可见,一个神经元的功能是求得输入向量与权向量内积后,经过一个非线性决策(即激活)函数得到一个标量的结果。

单层神经网络

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

感知机

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

​ 权重(突触)、偏置(阙值)、激活函数(细胞体),输出为+1或-1

感知器的作用:

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

多层神经网络

​ 多层神经网络由单层神经网络进行叠加之后得到的,常见的多层神经网络有如下结构:

  • 输入层:众多神经元接受大量非线性输入向量。

  • 输出层:消息在神经元连接中传输、分析、权衡,形成输出结果,即输出向量。

  • 隐藏层:隐藏层可以有多层,隐藏层的节点(神经元)数目不定,但数目越多,神经网络的非线性越显著,从而神经网络的强健性更显著。

    概念:全连接层

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

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

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

    激活函数

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

    通过感知机模型,我们可以划出一条线,把平面分隔开

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

    ​ 但是可以看出,三角形和四边形是没有办法通过直线分开的,那么该怎么办呢?可以考虑使用多层神经网络进行尝试,比如在前面的感知机模型中再增加一层:

    对上图中的等式进行合并,可以得到:

    和公式y = w1x1 + w2x2 +b完全相同,依然只能绘制出直线,所以可以发现,即使是多层神经网络,相比于之前的感知器,没有如何改进。但如果我们再前面感知机的基础上加上非线性激活函数之后,输出的结果就不再是一条直线。

    ​ 如上图,右边是sigmoid函数,对感知机的结果,通过sigmoid函数机械能处理。

    ​ 如果给定合适的参数w和b,就可以得到合适的曲线,能够完成对最开始问题的非线性分割,所以激活函数很重要的一个作用就是增加模型的非线性分割能力。

    ​

    看图可知:

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

    激活函数的作用:

    • 增加模型的非线性分割能力
    • 提高模型鲁棒性(稳健性)
    • 缓解梯度消失问题
    • 加速模型收敛
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐