版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宁夏大学第十二章深度学习基础深度学习基础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):对训练集完成一次前
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年C2驾照科目一理论模拟考试卷(含详细答案解析)
- 2026年食堂餐具清洗消毒管控考题及答案解析
- 焊接引起火灾应急预案
- 地下管网焊接动火作业安全措施及应急预案
- 2026年国电电力运维岗位招聘专业考试题带解析
- 企业客户服务标准与流程手册 (标准版)
- 《汽车美容行业合规经营管理手册》
- 加工棚防火设施布设施工方案
- 2025-2026年人教版九年级生物下册第6章生物技术测试卷
- 新疆G20示范高中联盟文海大联考2026-2027学年高三上学期9月高考模拟考试语文试题(含答案)
- 机修钳工(高级)证考试题及答案
- 2025年注册结构工程师考试一级专业考试真题及答案解析
- 2026年中级注册安全工程师《化工安全实务》真题与解析
- 24J113-1 内隔墙-轻质条板(一)
- 统编版小学一年级上册《道德与法治》2024秋版全套课件合集
- 阿司匹林的介绍
- 体育场馆消防安全知识教育培训
- 讲课合作协议合同范本
- 电信装维安全培训记录课件
- 压力管道设计培训课件
- 清洗衣物课件
评论
0/150
提交评论