深度学习和神经网络的介绍
深度学习的介绍目标知道什么是深度学习知道深度学习和机器学习的区别能够说出深度学习的主要应用场景知道深度学习的常用框架深度学习的概念深度学习:是机器学习的分支,是一种以人工神经网络为架构,对数据进行特征学习的算法。机器学习和深度学习的区别区别1:特征提取从特征提取的角度出发:机器学习需要有人工的特征提取的过程深度学习没有复杂的人工特征提取的过程,特征提取的过程可以通过深度神经网络自动完成区别2:数据
深度学习的介绍
目标
- 知道什么是深度学习
- 知道深度学习和机器学习的区别
- 能够说出深度学习的主要应用场景
- 知道深度学习的常用框架
深度学习的概念
深度学习:是机器学习的分支,是一种以人工神经网络为架构,对数据进行特征学习的算法。
机器学习和深度学习的区别
-
区别1:特征提取
从特征提取的角度出发:
- 机器学习需要有人工的特征提取的过程
- 深度学习没有复杂的人工特征提取的过程,特征提取的过程可以通过深度神经网络自动完成
-
区别2:数据量
从数据量的角度出发:
- 深度学习需要大量的训练数据,会有更高的效果
- 深度学习训练深度神经网络需要大量的算力,因为其中有更多的参数
深度学习的应用场景
- 图像识别
- 物体识别
- 场景识别
- 人脸检测跟踪
- 人脸身份认证
- 自然语言处理技术
- 机器翻译
- 文本识别
- 聊天对话
- 语音技术
- 语音识别
常见的深度学习框架
TensorFlow、Caffe2、Keras、Theano、PyTorch、Chainer、DyNet、MXNet、CNTK等。
其中tensorflow和keras是google出品的,使用者很多,但其语法晦涩,而且语法和python语法不尽相同,对于入门玩家而言上手难度较高。
facebook的pytorch的使用和python的语法相同,整个操作类似于Numpy的操作,而且pytorch使用的是动态计算,会让代码的调试变得更加简单。
神经网络的介绍
目标
- 知道神经网络的概念
- 知道什么是神经元
- 知道什么是单层神经网络
- 知道什么是感知机
- 知道什么是多层神经网络
- 知道激活函数是什么,有什么作用
- 理解神经网络的思想
人工神经网络的概念
人工神经网络(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]
激活函数的作用:
- 增加模型的非线性分割能力
- 提高模型鲁棒性(稳健性)
- 缓解梯度消失问题
- 加速模型收敛
更多推荐
所有评论(0)