人工智能创新实验教程 课件 第12-14章 深度学习基础、感知机算法、卷积神经网络_第1页
人工智能创新实验教程 课件 第12-14章 深度学习基础、感知机算法、卷积神经网络_第2页
人工智能创新实验教程 课件 第12-14章 深度学习基础、感知机算法、卷积神经网络_第3页
人工智能创新实验教程 课件 第12-14章 深度学习基础、感知机算法、卷积神经网络_第4页
人工智能创新实验教程 课件 第12-14章 深度学习基础、感知机算法、卷积神经网络_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

宁夏大学第十二章深度学习基础深度学习基础2目录

CONTENT01基础知识02神经网络基础03激活函数04神经网络05损失函数0607优化方法本章小结基础知识011.1框架介绍

深度学习框架是一种界面、库或工具,它使我们在无需深入了解底层算法的细节的情况下,能够更容易、更快速地构建深度学习模型。深度学习框架利用预先构建和优化好的组件集合定义模型,为模型的实现提供了一种清晰而简洁的方法。

利用恰当的框架来快速构建模型,而无需编写数百行代码,一个良好的深度学习框架具备以下关键特征:优化的性能易于理解和编码良好的社区支持并行化的进程,以减少计算自动计算梯度1.1.1TensorFlowTensorFlow是由谷歌大脑团队的研究人员和工程师开发的,它是深度学习领域中最常用的软件库(尽管其他软件正在迅速崛起)。它完全是开源的,并且有出色的社区支持。TensorFlow为大多数复杂的深度学习模型预先编写好了代码,比如递归神经网络和卷积神经网络。

TensorFlow如此流行的最大原因之一是支持多种语言来创建深度学习模型,比如Python、C和R,并且有不错的文档和指南。TensorFlow有许多组件,其中最为突出的是:Tensorboard:帮助使用数据流图进行有效的数据可视化TensorFlow:用于快速部署新算法/试验

TensorFlow的灵活架构使我们能够在一个或多个CPU(以及GPU)上部署深度学习模型。下面是一些典型的TensorFlow用例:基于文本的应用:语言检测、文本摘要

时间序列分析

图像识别:图像字幕、人脸识别、目标检测

视频分析声音识别1.1.2KerasKeras用Python编写,可以在TensorFlow(以及CNTK和Theano)之上运行。TensorFlow的接口具备挑战性,因为它是一个低级库,新用户可能会很难理解某些实现。而Keras是一个高层的API,它为快速实验而开发。因此,如果希望获得快速结果,Keras会自动处理核心任务并生成输出。Keras支持卷积神经网络和递归神经网络,可以在CPU和GPU上无缝运行。

可以将Keras中的模型大致分为两类:

1.序列化

模型的层是按顺序定义的。这意味着当我们训练深度学习模型时,这些层次是按顺序实现的。下面是一个顺序模型的示例:1.1.2Keras2.Keras函数API

用于定义复杂模型,例如多输出模型或具有共享层的模型。请查看下面的代码来理解这一点:

Keras有多种架构,如下所述,用于解决各种各样的问题,其中包括:图像分类VGG16VGG19InceptionV3Mobilenet及更多

可以参考官方的Keras文档来详细了解框架是如何工作的。1.1.3PyTorch如果考虑到数据科学家和开发者们拥抱Facebook的PyTorch的速度,那TensorFlow可能很快就要落伍了。

PyTorch是Torch深度学习框架的一个接口,可用于建立深度神经网络和执行张量计算。Torch是一个基于Lua的框架,而PyTorch则运行在Python上。PyTorch是一个Python包,它提供张量计算。张量是多维数组,就像numpy的ndarray一样,它也可以在GPU上运行。PyTorch使用动态计算图,PyTorch的Autograd软件包从张量生成计算图,并自动计算梯度。与特定功能的预定义的图表不同,PyTorch提供了一个框架,用于在运行时构建计算图形,甚至在运行时也可以对这些图形进行更改。当不知道创建神经网络需要多少内存的情况下,这个功能便很有价值。

可以使用PyTorch处理各种来自深度学习的挑战,包括:影像(检测、分类等)文本(NLP)增强学习

安装步骤取决于操作系统、需要安装的PyTorch包、正在使用的工具/语言、CUDA等其他一些因素。1.1.4CaffeCAFE是另一个面向图像处理领域的、比较流行的深度学习框架,它是由贾阳青(YangqingJia)在加利福尼亚伯克利大学读博士期间开发的。同样,它也是开源的!

首先,Caffe对递归网络和语言建模的支持不如上述三个框架。但是Caffe最突出的地方是它的处理速度和从图像中学习的速度。

Caffe可以每天处理超过六千万张图像,只需单个NVIDIAK40GPU,其中1毫秒/图像用于推理,4毫秒/图像用于学习。它为C、Python、MATLAB等接口以及传统的命令行提供了坚实的支持。通过CaffeModelZoo框架可访问用于解决深度学习问题的预训练网络、模型和权重。这些模型可完成下述任务:简单的递归大规模视觉分类用于图像相似性的SiameSE网络语音和机器人应用

有关更多细节,您可以查看Caffe相关文档。1.2PyTorch基础语法——张量(Tensor)Tensor与Numpy中的ndarrays类似,但是在PyTorch中Tensors可以使用GPU进行计算。下面将简单的介绍如何创建Tensor变量。

上面代码创建了一个5行3列的Tensor变量。下面将根据现有的张量创建张量。这些方法将重用输入张量的属性,例如:dtype,除非设置新的值进行覆盖。张量同样支持多种数学操作,我们看一下加法运算:1.2.2Numpy转换与CUDA张量将一个TorchTensor转换为NumPy数组是一件轻松的事,反之亦然。TorchTensor与NumPy数组共享底层内存地址,修改一个会导致另一个的变化。

将一个TorchTensor转换为NumPy数组:

CUDA张量是GPU专用变量格式,使用.to方法可以将Tensor移动到任何设备中:神经网络基础02神经网络基础

随着人工智能的飞速发展,当今在人工智能领域探索的研究者们几乎无人不谈深度学习。很多人甚至将人工智能与深度学习画上了等号。虽然深度学习不是人工智能领域的唯一解决方案,二者之间也无法画上等号,但是说深度学习是现今甚至未来很长一段时间中人工智能的核心技术却一点也不为过。

在概念上,深度学习源于人工神经网络,但并不完全等于传统神经网络。不过在叫法上,很多深度学习算法中都会包含神经网络这个词,例如:卷积神经网络、循环神经网络。因此,深度学习可以说是在传统神经网络基础上的升级。神经网络基础我们用一幅图来直观的介绍深度学习,如图所示,图中每个圆圈都是一个神经元,每条线表示神经元之间的连接。可以看到,上面的神经元被分成了多层,层与层之间的神经元有连接,而层内之间的神经元没有连接。最左边的层叫做输入层,这层负责接收输入数据;最右边的层叫输出层,我们可以从这层获取神经网络输出数据。输入层和输出层之间的层叫做隐藏层,隐藏层大于两层的神经网络叫做深度神经网络。而深度学习,就是使用深层架构(比如深度神经网络)的机器学习方法。2.1神经元

人工神经元(ArtificialNeuron),简称神经元(Neuron),是构成神经网络的基本单元,其主要是模拟生物神经元的结构和特性,接收一组输入信号并产出输出。生物学家在20世纪初就发现了生物神经元的结构。一个生物神经元通常具有多个树突和一条轴突。树突用来接收信息,轴突用来发送信息。当神经元所获得的输入信号的积累超过某个阈值时,它就处于兴奋状态,产生电脉冲。轴突尾端有许多末梢可以给其他个神经元的树突产生连接(突触),并将电脉冲信号传递给其它神经元。1943年,理学家McCulloch和数学家Pitts根据生物神经元的结构,提出了一种非常简单的神经元模型,MP神经元。现代神经网络中的神经元和MP神经元的结构并无太多变化。不同的是,MP神经元中的激活函数f为0或1的阶跃函数,而现代神经元中的激活函数通常要求是连续可导的函数。2.1神经元

引言

激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能力,激活函数需要具备以下几点性质:1、连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数。2.、激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。3、激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太小,否则会影响训练的效率和稳定性。下面介绍在神经网络中常用的激活函数。激活函数033.1什么是激活函数

图中,红色的圆圈表示两个神经元连接的区域。神经元通过树突从其他神经元中接受信号。树突的信号强度称为突触权值,用于与传入信号相乘。树突传出的信号在细胞体中累积,如果最后的信号强度超过了某个阈值,神经元就会允许轴突中的信息继续传递。否则,信号就会被阻止而得不到进一步的传播。激活函数决定了信号是否能够被通过。这个例子仅仅是个只有阈值这一个参数的简单的阶跃函数。现在,当我们学习了一些新东西(或者忘掉一些东西)时,阈值以及一些神经元的突触权重会发生改变。这在神经元中创造了新的连接从而使得大脑能学习到新的东西。让我们在人工神经元的基础上来再次理解相同的概念。人工神经网络(ANNs)的工作机制与大脑的工作机制并不是十分的相似。不过在我们了解为什么把激活函数应用在人工神经网络中之前,了解一下激活函数与生物神经网络的关联依然是十分有用的。

一个典型神经元的物理结构由细胞体、向其他神经元发送信息的轴突以及从其他神经元接受信号或信息的树突组成。3.1什么是激活函数

图中所示的例子是一个输入为的神经元,输入对应的权重分布为,偏置为b,激活函数作用于输入的权重之和上面。是与权重相乘的信号向量,接着是累加(例如:总和+偏置b)。最后,激活函数f作用于这个累加的总和。请注意,权重和偏置b把输入信号转换为线性的。而另一方面,激活函数把信号转换为非线性的,而这种非线性使得我们能够学习到输入与输出之间任意复杂的变换关系。3.2为什么需要激活函数

激活函数是⽤来加⼊⾮线性因素的,因为线性模型的表达⼒不够。假设如果没有激活函数的出现,每⼀层节点的输⼊都是上层输出的线性函数,很容易验证,⽆论神经⽹络有多少层,输出都是输⼊的线性组合,与没有隐藏层效果相当,也就是说没有激活函数的每层都相当于矩阵相乘。就算叠加了若⼲层之后,还是矩阵相乘。那么⽹络的逼近能⼒就相当有限。正因为上⾯的原因,我们决定引⼊⾮线性函数作为激活函数,这样深层神经⽹络表达能⼒就更加强⼤(不再是输⼊的线性组合,而是⼏乎可逼近任意函数)。

例如⼆分类问题,如果不使⽤激活函数,例如使⽤简单的逻辑回归,只能作简单的线性划分,如下图所⽰:

如果使⽤激活函数,则可以实现⾮线性划分,如下图所示:

3.3常见激活函数

Sigmoid激活函数Sigmoid激活函数的三个主要缺点:

1、梯度消失:sigmoid函数在0和1附近是平坦的。也就是说,sigmoid的梯度在0和1附近为0。在通过sigmoid函数网络反向传播时,当神经元的输出近似于0和1时它的梯度接近于0。这些神经元被称为饱和神经元。因此,这些神经元的权值无法更新。不仅如此,与这些神经元相连接的神经元的权值也更新得非常缓慢。这个问题也被称为梯度消失。所以,想象如果有一个大型网络包含有许多处于饱和动态的sigmoid激活函数的神经元,那么网络将会无法进行反向传播。

2、不是零均值:sigmoid的输出不是零均值的。

3、计算量太大:指数函数与其它非线性激活函数相比计算量太大。3.3.2ReLU激活函数

3.3.3Tanh激活函数

3.3.4SoftMax激活函数

神经网络044.1前馈神经网络

给定一组神经元,我们可以以神经元为节点来构建一个网络。不同的神经网络模型有着不同网络连接的拓扑结构。一种比较直接的拓扑结构是前馈网络。前馈神经网络(FeedforwardNeuralNetwork,FNN)是最早发明的简单人工神经网络。

在前馈神经网络中,各神经元分别属于不同的层。每一层的神经元可以接收前一层神经元的信号,并产生信号输出到下一层。第0层称为输入层,最后一层称为输出层,其它中间层称为隐藏层。整个网络中无反馈,信号从输入层向输出层单向传播,可用一个有向无环图表示。

前馈神经网络也经常称为多层感知器(Multi-LayerPerceptron,MLP)。但多层感知器的叫法并不是十分合理,因为前馈神经网络其实是由多层的Logistic回归模型(连续的非线性函数)组成,而不是由多层的感知器(不连续的非线性函数)组成。4.1前馈神经网络

下图给出前馈神经网络的结构图:4.1前馈神经网络

4.2反馈神经网络

BP算法是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。反向传播要求有对每个输入值期望得到的已知输出,来计算损失函数的梯度。因此,它通常被认为是一种监督式学习方法,虽然它也用在一些无监督网络(如自动编码器)中。它是多层前馈网络的Delta规则的推广,可以用链式法则对每层迭代计算梯度。反向传播要求人工神经元(或“节点”)的激励函数可微。反向传播算法主要由两个环节(激励传播、权重更新)反复循环迭代,直到网络的对输入的响应达到预定的目标范围为止。BP算法的学习过程由正向传播过程和反向传播过程组成。在正向传播过程中,输入信息通过输入层经隐含层,逐层处理并传向输出层。如果在输出层得不到期望的输出值,则取输出与期望的误差的平方和作为目标函数,转入反向传播,逐层求出目标函数对各神经元权值的偏导数,构成目标函数对权值向量的梯量,作为修改权值的依据,网络的学习在权值修改过程中完成。误差达到所期望值时,网络学习结束。4.2反馈神经网络激励传播:

每次迭代中的传播环节包含两步:1.(前向传播阶段)将训练输入送入网络以获得激励响应;2.(反向传播阶段)将激励响应同训练输入对应的目标输出求差,从而获得隐层和输出层的响应误差。

权重更新:

对于每个突触上的权重,按照以下步骤进行更新:1.将输入激励和响应误差相乘,从而获得权重的梯度;2.将这个梯度乘上一个比例并取反后加到权重上。3.这个比例将会影响到训练过程的速度和效果,因此称为“学习率”或“步长”。梯度的方向指明了误差扩大的方向,因此在更新权重的时候需要对其取反,从而减小权重引起的误差。损失函数05损失函数

5.1L1函数和L2函数

5.2交叉熵函数

5.2交叉熵函数

目前深度学习中基本上都是用交叉熵损失函数,那么交叉熵损失函数好在哪里呢。首先我们看L2损失函数的曲线.

左图是一个非凸的函数,也就是说梯度下降不一定能够保证达到全局最优解。而交叉熵损失函数的曲线如下

这是一个凸函数,曲线整体呈单调性,loss越大,梯度越大。便于反向传播时的快速优化。所以通常使用交叉熵损失函数。5.3其它常见损失函数

5.3其它常见损失函数

优化方法06优化方法

在损失函数衡量出预测值与真实值之间的误差大小后,需要神经网络进行参数优化,进而得到最小损失函数输出,之一过程将由优化算法来实现。

本文将介绍最为经典的梯度下降法,包括:批量梯度下降(Batchgradientdescent,BGD),随机梯度下降(StochasticGradientDescent,SGD),小批量梯度下降(MiniBatchGradientDescent,MBGD)。

在学习梯度下降前,首先了解几个基本概念:1.批(batch):将训练集的全体分为若干批次,样本数量过大时,可考虑每次选一批数据训练。2.批尺寸(batchsize):每批样本的数量。3.迭代(iteration):对一批数据完成一次前向传播和一次反向传播。4.时期(epoch):对训练集完成一次前向传播和一次反向传播。6.2梯度下降法(GradientDescent,GD)

6.2梯度下降法(GradientDescent,GD)

6.2梯度下降法(GradientDescent,GD)随机梯度下降:

在每次更新时用1个样本,可以看到多了随机两个字,随机也就是说我们用样本中的一个例子来近似我所有的样本,来调整,因而随机梯度下降是会带来一定的问题,因为计算得到的并不是准确的一个梯度,对于最优化问题,凸问题,虽然不是每次迭代得到的损失函数都向着全局最优方向,但是大的整体的方向是向全局最优解]的,最终的结果往往是在全局最优解附近。但是相比于批量梯度,这样的方法更快,更快收敛,虽然不是全局最优,但很多时候是我们可以接受的,所以这个方法用的也比上面的多。下面给出其更新公式:6.2梯度下降法(GradientDescent,GD)小批量梯度下降:

在每次更新时用b个样本,其实批量的梯度下降就是一种折中的方法,其使用一些小样本来近似全部的,且批量的话还是非常可以反映样本的一个分布情况的。在深度学习中,这种方法用的是最多的,因为这个方法收敛不会很慢,收敛的局部最优也是更多的。本章小结07本章小结

本章介绍了深度学习相关基础知识。通过对本章的阅读,读者应该了解到深度学习相关框架和如何建立第一个框架程序。认识了什么是深度学习中的神经元,以及神经网络的三层基本结构。了解了深度学习中模型框架如何进行优化以及参数优化流程。对深度学习相关数学理论有了基本的认识。在后续几章,将使用PyTorch展开一系列的深度学习相关模型讲解及实验搭建,包括两大基础模型CNN、RNN及其部分变种框架,并在本书最后通过实现一个大型综合性实验来进一步加深对深度学习的认识。www.islide.ccThanks

宁夏大学感知机算法第十三章感知机算法50目录

CONTENT01引言02算法概述03实验数据04算法实战05本章小结01引言引言

在对机器学习的相关内容有一定了解后,我们将开始学习机器学习最重要的一个分支——深度学习(DeepLearning)。本节将讲述深度学习中一个经典的基础算法,感知机算法。本文将从算法概述讲起,首先介绍感知机算法的实现原理,接着介绍感知机算法需要用到的实验数据集,最后,通过两个简单的实验使读者能够更加直观的理解感知机算法。02算法概述算法概述54感知机简介感知机是1957年由Rosenblatt提出的一个概念,是神经网络和支持向量机(SVM)的基础。它的提出受到生物学的启发,如右图所示,人的大脑可以看作是一个神经网络,这个网络中的最小单元是神经元,许多神经元连接起来形成一个错综复杂的网络,我们称之为神经网络。

右图展示了神经元的工作机制,首先神经元接收到一些信号,如眼睛看到的光信号和耳朵听到的声音信号,这些信号会通过树突组织并最终到达细胞核,细胞核对这些信号进行综合处理,当信号达到一定阈值后就会被激活产生一个输出,形成新的信号并传输至大脑,这就是人脑的一个神经元在进行感知时大致的工作原理。算法概述55算法实现原理

在理解神经元的工作机制后,我们用算法模拟这个过程,左图表示一个感知器。从图中可以看到,一个感知器由以下部分组成:(1)输入权值。一个感知器可以接收多个输入:

每个输入上有一个权值:

此外还有一个偏置项:

(2)激活函数。感知器的激活函数可以有很多选择,比如我们可以选择下面这个阶跃函数来作为激活函数:(3)输出。感知器的输出由如下公式计算:算法概述56算法实现原理在理解感知器的工作原理后,我们用一个简单的例子来帮助理解。我们设计一个感知器,让它来实现and运算。and是一个二元函数(带有两个参数和),右图是它的真值表:为了计算方便,我们用0表示false,用1表示true。我们令,

激活函数使用前面提到的阶跃函数,这时我们就完成了一个能实现and函数功能的感知器,输入真值表的第一行,即=0,=0,计算输出:算法概述57算法实现原理事实上,感知机不仅仅能实现简单的布尔运算。它可以拟合任何的线性函数,任何线性分类或线性回归问题都可以用感知机来解决。前面的布尔运算可以看作是二分类问题,即给定一个输入,输出0(属于分类0)或1(属于分类1)。如下图左所示,and运算是一个线性分类问题,即可以用一条直线把分类0(false,红叉表示)和分类1(true,绿点表示)分开。然而,感知机却不能实现异或运算,如下图右所示,异或运算不是线性的,无法用一条直线把分类0和分类1分开。算法概述58算法实现原理

前文直接给出了权重项和偏置项的值,接下来将解释为何选取这些值,这里需要用到感知机的训练算法:将权重项和偏置项初始化为0,然后,利用下列公式迭代的修改和,直到训练完成。是与输入对应的权重项,是偏置项。事实上,可以把看作是值永远为1的输入所对应的权重。是训练样本的实际值,一般称之为label。而是感知器的输出值。是一个称为学习速率的常数,其作用是控制每一步调整权的幅度。每次从训练数据中取出一个样本的输入向量,使用感知器计算其输出,再根据上面的规则来调整权重。每处理一个样本就调整一次权重。经过多轮迭代后(即全部的训练数据被反复处理多轮),就可以训练出感知器的权重,使之实现目标函数。03实验数据实验数据60感知机算法可以解决线性分类问题,为此本书采用鸢尾花(lris)数据集设计实验,该数据集是统计学习和机器学习领域的经典数据集。数据集内包含3类共150条记录,每类各50个数据,每条记录都有4项特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa,iris-versicolour,iris-virginica)中的哪一品种。下图展示了该数据集的头5条数据。该数据集可以从scikit-learn库中加载。sklearn是一个Python第三方提供的非常强力的机器学习库,它包含了从数据预处理到训练模型的各个方面。使用scikit-learn中可以极大的节省我们编写代码的时间以及减少代码量,使读者有更多精力去分析数据分布、调整模型和修改超参。04案例实战算法实战62实验一:通过感知机实现逻辑与(and)运算首先,我们定义一个感知器类(class)。我们先初始化感知器,设置输入参数的个数,以及激活函数。激活函数的类型为double->double,接着我们将权重向量和偏置项初始化为0接着输入向量,输出感知器的计算结果:

然后我们输入训练数据,即一组向量、与每个向量对应的label;以及训练轮数、学习率。算法实战63实验一:通过感知机实现逻辑与(and)运算之后通过一次迭代,将所有训练数据过一遍。最后按照感知器的规则更新权重。

在完成感知器类后,我们利用它去实现and函数。首先我们定义一个激活函数,即上文所提到的阶跃函数。接着我们基于and真值表构建训练数据:

然后使用and真值表训练感知器:

最后将上述程序保存为.py文件,通过命令行执行这个程序,其运行结果为:算法实战64实验二:通过感知机算法解决鸢尾花数据集分类问题

上文中提到,感知机不仅仅能实现简单的布尔运算,还能解决任何一个线性分类问题。接下来我们将设计实验采用感知机算法解决线性分类问题。首先,我们需要从sklearn库中加载鸢尾花数据集并对其进行预处理,仅采用花萼长度、花萼宽度作为指标进行分类任务。算法实战65实验二:通过感知机算法解决鸢尾花数据集分类问题

之后,我们设置感知器的权重向量和偏置项,并将学习率初始化为0.1,之后采用随机梯度下降的方法对算法进行优化。

最后,我们通过将分类结果通过plt函数绘制在一张图上,代码展示如下:算法实战66实验二:通过感知机算法解决鸢尾花数据集分类问题本实现的可视化实验结果如上图所示,根据上图可知,感知机算法可以用来解决线性分类问题,且可以取得较为理想的结果。05本章小结本章小结68

本章作为由机器学习向深度学习的过渡章节,首先简单介绍了深度学习的背景知识并分析了深度学习的优缺点,使读者对深度学习有一个基本的了解。接着本章通过选取深度学习中较为基础的感知机算法作为引入,首先介绍了感知机的来源与背景,接着对感知机算法进行概述,以一个“and”运算器作为示例,分析了感知机算法的原理并介绍了其训练算法。最后,通过两个实验使读者能够通过代码实现更加直观的理解感知机算法及其应用场景。

www.islide.cc感谢观看!

宁夏大学

第十四章卷积神经网络71目录

CONTENT01引言02模型概述03实验数据04模型构建05本章小结引言01引言在简单学习深度学习的背景和上一章较为基础的感知机算法后,本章节将学习深度学习经典的卷积神经网络。卷积神经网络是一种具有局部连接、权重共享等特性的深层前馈神经网络。最早主要是用来处理图像信息。卷积神经网络在短时间内,变成了一种颠覆性的技术,打破了从文本、视频到语音等多个领域所有最先进的算法,远远超出了其最初在图像处理的应用范围。模型概述021卷积神经网络的产生75卷积神经网络是受生物学上感受野机制的启发而提出的。举个简单而直观例子来了解感受野,人眼看到物体的情况,如下图所示:图中眼睛里其中的一个神经元,它会盯着图像,但它并不会盯着图像的每一个像素,它只会盯着图像的一部分。盯的一部分,称为感受野,也就是感受一部分视野。另外一个神经元它又会盯着另外的一部分,但是它们有重叠。这就相当于一些神经元看线,另外一些神经元会看线的方向,这些线和方向会组合成一些更大的感受野,然后组成一些基础图像,基础图像再组合成我们的所看到的图像。2卷积神经网络基本机构76目前的卷积神经网络一般是由卷积层、汇聚(池化)层和全连接层交叉堆叠而成的前馈神经网络。卷积神经网络主要有两个结构上的特性:局部连接、权重共享。这些特性使得卷积神经网络具有一定程度上的平移、缩放和旋转不变性。和前馈神经网络相比,卷积神经网络的参数更少。积神经网络主要使用在图像和视频分析的各种任务(比如图像分类、人脸识别、物体识别、图像分割等)上,其准确率一般也远远超出了其他的神经网络模型。下图给出一种经典的卷积网络结构用于图像分类的一种卷积神经网络2.1卷积层77为什么要使用卷积方法:

用全连接神经网络处理大尺寸图像具有三个明显的缺点:(1)首先将图像展开为向量会丢失空间信息;(2)其次参数过多效率低下,训练困难;(3)同时大量的参数也很快会导致网络过拟合。而使用卷积神经网络可以很好地解决上面的三个问题。卷积层的作用:1.

滤波器的作用。卷积层的参数是有一些可学习的滤波器集合构成的。每个滤波器在空间上都比较小,但是深度和输入数据一致。直观地来说,网络会让滤波器学习到当它看到某些类型的视觉特征时就激活。2.

可以被看做是神经元的一个输出。神经元只观察输入数据中的一小部分,并且和空间上左右两边的所有神经元共享参数(因为这些数字都是使用同一个滤波器得到的结果)。3.

降低参数的数量。这个由于卷积具有“权值共享”这样的特性,可以降低参数数量,达到降低计算开销,防止由于参数过多而造成过拟合。2.1卷积层78卷积层最主要的两个特征就是局部连接和权值共享。

所谓局部连接,就是卷积层的节点仅仅和其前一层的部分节点相连接,只用来学习局部特征。局部感知结构的构思理念来源于动物视觉的皮层结构,其指的是动物视觉的神经元在感知外界物体的过程中起作用的只有一部分神经元。

在计算机视觉中,图像中的某一块区域中,像素之间的相关性与像素之间的距离同样相关,距离较近的像素间相关性强,距离较远则相关性就比较弱,由此可见局部相关性理论也适用于计算机视觉的图像处理领域。因此,局部感知采用部分神经元接受图像信息,再通过综合全部的图像信息达到增强图像信息的目的。这种局部连接的方式大幅减少了参数数量,加快了学习速率,同时也在一定程度上减少了过拟合的可能。2卷积层特点79卷积层的另一大特征是权值共享,比如一个3*3的卷积核,共9个参数,它会和输入图片的不同区域作卷积,来检测相同的特征。而只有不同的卷积核才会对应不同的权值参数,来检测不同的特征。如下图所示,通过权值共享的方法,这里一共只有3组不同的权值,如果只用了局部连接的方法,共需要3*4=12个权值参数,而加上了权值共享的方法后,现在仅仅需要3个权值,更进一步地减少参数数量。2.1卷积层80如图可以看到如下几个参数:两个神经元,即depth=2,意味着有两个滤波器。数据窗口每次移动两个步长取3*3的局部数据,取stride=2、zero-padding=1。然后分别以两个滤波器filter为轴滑动数组进行卷积计算,得到两组不同的结果。

左边是输入(7*7*3中,7*7代表图像的像素/长宽,3代表R、G、B三个颜色通道)中间部分是两个不同的滤波器Filterw0、Filterw1最右边则是两个不同的输出、随着左边数据窗口的平移滑动,滤波器Filterw0/

Filterw1对不同的局部数据进行卷积计算。为更好理解卷积层,下图给出卷积层运作动态图:2.2池化层81通常在连续的卷积层之间会周期性地插入一个池化层。它的作用是逐渐降低数据体的空间尺寸,这样的话就能减少网络中参数的数量,使得计算资源耗费变少,也能有效控制过拟合。

池化的做法是对图像的某一个区域用一个值代替,如最大值或平均值。如果采用最大值,叫做max池化;如果采用均值,叫做mean池化。

除了降低图像尺寸之外,下采样带来的另外一个好处是平移、旋转不变性,因为输出值由图像的一片区域计算得到,对于平移和旋转并不敏感。对平移和旋转不敏感mean池化和max池化都可以完成下采样操作,前者是线性函数,而后者是非线性函数,一般情况下max池化有更好的效果。

下图给

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论