《深度学习》课件4.pptx

上传人(卖家):momomo 文档编号:7671716 上传时间:2024-06-27 格式:PPTX 页数:48 大小:1.02MB
下载 相关 举报
《深度学习》课件4.pptx_第1页
第1页 / 共48页
《深度学习》课件4.pptx_第2页
第2页 / 共48页
《深度学习》课件4.pptx_第3页
第3页 / 共48页
《深度学习》课件4.pptx_第4页
第4页 / 共48页
《深度学习》课件4.pptx_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、本章将以卷积神经网络为依托,介绍相关的深度技术,并将之本章将以卷积神经网络为依托,介绍相关的深度技术,并将之应用于图像类的数据处理之中。首先介绍简单的应用于图像类的数据处理之中。首先介绍简单的2 2维卷积神经网维卷积神经网络,并在络,并在keraskeras上予以实现。然后介绍它的分类原理。最后根据上予以实现。然后介绍它的分类原理。最后根据我们在实践中发现的问题,介绍神经网络的优化方法。在实践我们在实践中发现的问题,介绍神经网络的优化方法。在实践设计深度学习模型的过程中,了解每一个设计细节的根本目的。设计深度学习模型的过程中,了解每一个设计细节的根本目的。章节概述章节概述4.14.1二维卷积神

2、经网络基本原理二维卷积神经网络基本原理明确神经网络对图像识别明确神经网络对图像识别1 1)简单神经网络是寻找相邻数值之间的关系。,图像中不仅仅具有数简单神经网络是寻找相邻数值之间的关系。,图像中不仅仅具有数值信息(像素值),它还包括位置关系。如果仅仅是通过像素值作为值信息(像素值),它还包括位置关系。如果仅仅是通过像素值作为输入让一个全连接神经网络去识别的话,输出的结果肯定是不同的。输入让一个全连接神经网络去识别的话,输出的结果肯定是不同的。2 2)参数爆炸参数爆炸。在全连接结构中,每一个节点的输入都是上一层所有节在全连接结构中,每一个节点的输入都是上一层所有节点的输出值到该节点的综合结果。卷

3、积神经网络相比于全连接神经网点的输出值到该节点的综合结果。卷积神经网络相比于全连接神经网络,它不仅能够减少对计算资源的需求,还能学习图像中事物所包含络,它不仅能够减少对计算资源的需求,还能学习图像中事物所包含的空间关系和特征。的空间关系和特征。1)现现以识别一张人脸来阐述利用神经网络识别图像的思路如图以识别一张人脸来阐述利用神经网络识别图像的思路如图4.1。4.1.1 4.1.1 卷积神经网络卷积神经网络CNNCNN的原理的原理人脑识别图像的过程一般是先识别轮廓,再识别不同的部件,最后人脑识别图像的过程一般是先识别轮廓,再识别不同的部件,最后识别不同部件的位置关系。这个过程即是卷积神经网络的工

4、作过程。识别不同部件的位置关系。这个过程即是卷积神经网络的工作过程。卷积神经网络首先提取图像的细节特征,再识别由线条轮廓组成的卷积神经网络首先提取图像的细节特征,再识别由线条轮廓组成的图案,最后识别图案并输出图像的种类。图案,最后识别图案并输出图像的种类。图图4.1 4.1 人脸的识别模式人脸的识别模式2 2)滤波器)滤波器理解二维卷积的工作原理如图理解二维卷积的工作原理如图4.34.3。局部感受野所学习到的权。局部感受野所学习到的权重矩阵我们称之为卷积核。卷积重矩阵我们称之为卷积核。卷积核中每一个单独的参数都描述了核中每一个单独的参数都描述了一个输入单元与输出单元间的交一个输入单元与输出单元

5、间的交互。卷积网络具有稀疏交互也叫互。卷积网络具有稀疏交互也叫做稀疏连接或者稀疏权重的特征。做稀疏连接或者稀疏权重的特征。经过卷积操作以后获得的图像经过卷积操作以后获得的图像变小了,为了解决卷积操作后变小了,为了解决卷积操作后维数变化这一问题,提出了补维数变化这一问题,提出了补零策略,如图零策略,如图4.24.2。图图4.2 4.2 利用补零策略保持维数不变利用补零策略保持维数不变图图4.3 24.3 2维卷积示意图维卷积示意图4.1.2 4.1.2 参数共享参数共享1 1)参数共享)参数共享 每个隐藏神经元具有每个隐藏神经元具有个偏置和连接到它的局部感受野的权重。对个偏置和连接到它的局部感受

6、野的权重。对于神经网络的同一层,我们使用相同的权重与偏置。于神经网络的同一层,我们使用相同的权重与偏置。2 2)神经网络的平移不变性)神经网络的平移不变性 滤波器在一张图像上有规律地移动,只要图像上存在相应特征,无论滤波器在一张图像上有规律地移动,只要图像上存在相应特征,无论该特征出现在图像上的任何位置,滤波器都可以将其提取出来。该特征出现在图像上的任何位置,滤波器都可以将其提取出来。不论画不论画面中的星星在什么地方,只要与星星对应的滤波器移动到了那个位置就面中的星星在什么地方,只要与星星对应的滤波器移动到了那个位置就会被激活,反之则不被激活。会被激活,反之则不被激活。3)卷积与全连接对比)卷

7、积与全连接对比由图由图4.44.4可以得出:卷积在存储需可以得出:卷积在存储需求和统计效率方面极大地优于稠求和统计效率方面极大地优于稠密矩阵的乘法运算。密矩阵的乘法运算。图图4.44.44.1.3 4.1.3 池化池化1 1)池化层:)池化层:目的是简化从卷积层输出的信息,减少模型的过拟合现象目的是简化从卷积层输出的信息,减少模型的过拟合现象以及保持旋转、平移、伸缩不变性等。以及保持旋转、平移、伸缩不变性等。2 2)一个典型的卷积网络如图)一个典型的卷积网络如图4.54.5 图图4.54.5一次完整卷积层操作一次完整卷积层操作3 3)最大池化与平均池化最大池化与平均池化在提取特征误差来源的区别

8、在提取特征误差来源的区别 邻域大小受限造成的估计值方差增大;邻域大小受限造成的估计值方差增大;卷积层参数误差造成估计均值的偏移。卷积层参数误差造成估计均值的偏移。4.1.4 4.1.4 分类原理分类原理1 1)个完整的卷积神经网络个完整的卷积神经网络如图如图4.64.62 2)二分类)二分类SoftMaxSoftMax函数函数SoftMaxSoftMax是一种在参与其中的单元之间形成竞争的方式:是一种在参与其中的单元之间形成竞争的方式:SoftmaxSoftmax 输出输出总和等于总和等于1 1,所以一个单元的值增加必然对应着其他单元值的减少。这,所以一个单元的值增加必然对应着其他单元值的减少

9、。这与被认为存在于皮质中相邻神经元间的侧抑制类似。最终是希望其中一与被认为存在于皮质中相邻神经元间的侧抑制类似。最终是希望其中一个正确的输出接近个正确的输出接近1 1,其他的接近,其他的接近0 0。图图4.6 4.6 卷积神经网络卷积神经网络 4.2简单卷积神经网络实例简单卷积神经网络实例1 1)训练数据集)训练数据集MNISTMNIST过程与构建过程与构建TensorboardTensorboard图像图像的数据流程图如图的数据流程图如图4.74.72 2)TensorFlowTensorFlow代码与代码与KerasKeras代码的区别代码的区别 TensorFlow TensorFlow

10、代码的结构性不强,较为冗余复杂,但灵活性强,可以自行代码的结构性不强,较为冗余复杂,但灵活性强,可以自行编写不同的层。编写不同的层。KerasKeras代码简单清晰,条理性好,但由于强大的封装而导代码简单清晰,条理性好,但由于强大的封装而导致灵活性有所下降。因此对于深度学习方面的新手而言,利用致灵活性有所下降。因此对于深度学习方面的新手而言,利用KerasKeras能够能够快速进入项目,是一个不错的选择。快速进入项目,是一个不错的选择。3 3)基于基于TensorFlowTensorFlow的的KerasKeras来实现对手写体数字的识别来实现对手写体数字的识别的步骤:的步骤:1 1 导入所需

11、包;导入所需包;2 2 内嵌显示图像;内嵌显示图像;3 3 参数定义;参数定义;4 4 定义数据集与验证集位置;定义数据集与验证集位置;5 5 图像归一化;图像归一化;6 6 图像生成(训练集);图像生成(训练集);7 7 图像生成(验证集);图像生成(验证集);8 8 构建模型;构建模型;9 9 堆叠二维卷积层,使用堆叠二维卷积层,使用6464个卷积核,跨度为个卷积核,跨度为1 11 1,使用补零方法,输,使用补零方法,输入维度为入维度为28282828单通道灰度图像,激活函数为单通道灰度图像,激活函数为ReLuReLu,卷积核规模为,卷积核规模为2 22 2;10 10 堆叠最大池化层,池

12、化层大小为堆叠最大池化层,池化层大小为2 22 2;11 11 堆叠第二次二维卷积层,使用堆叠第二次二维卷积层,使用128128个卷积核,跨度为个卷积核,跨度为1 1,使用补零,使用补零方法,输入维度为方法,输入维度为282828 28 单通道灰度图像,激活函数为单通道灰度图像,激活函数为ReLuReLu;12 12 全连接层,使用全连接层,使用softmaxsoftmax分类;分类;13 13 模型编译,制定交叉熵代价函数,优化器为模型编译,制定交叉熵代价函数,优化器为rmsproprmsprop,评估方法为,评估方法为识别准确度;识别准确度;14 14 模型训练,制定输入、输出,批量规模。

13、调用模型训练,制定输入、输出,批量规模。调用TensorboardTensorboard,并把,并把训练历史写入制定的目录训练历史写入制定的目录log_dirlog_dir;15 15 记录训练历史,打印历史关键字,绘制训练过程图像,指定图像名记录训练历史,打印历史关键字,绘制训练过程图像,指定图像名称,横纵坐标名称;称,横纵坐标名称;16 16 最后显示图像。最后显示图像。4 4)单独利用)单独利用TensorFlowTensorFlow实现卷积神经网络的步骤:实现卷积神经网络的步骤:1 1导入所需包;导入所需包;2 2始化权重函数;始化权重函数;3 3初始化偏置项;初始化偏置项;4 4 定

14、义卷积函数;定义卷积函数;5 5定义一个定义一个2 22 2的最大池化层;的最大池化层;6 6定义输入变量;定义输入变量;7 7定义输出变量;定义输出变量;8 8初始化权重初始化权重,第一层卷积,数字第一层卷积,数字3232代表输出的代表输出的3232个通道;个通道;9 9初始化偏置项;初始化偏置项;10 10 将输入的将输入的x x转换成一个转换成一个4 4维向量。第维向量。第2 2、3 3维对应图像的宽和高度,最维对应图像的宽和高度,最后一维代表图像的颜色通道数;后一维代表图像的颜色通道数;11 11 卷积并激活第一层;卷积并激活第一层;12 12 池化第一层;池化第一层;13 13 初始

15、权重;初始权重;14 14 初始化偏置项;初始化偏置项;15 15 将第一层卷积池化后的结果作为第二层卷积的输入;将第一层卷积池化后的结果作为第二层卷积的输入;16 16 池化第二层;池化第二层;17 17 设置全连接层的权重;设置全连接层的权重;18 18 设置全连接层的偏置;设置全连接层的偏置;19 19 将第二层卷积池化后的结果,转换成一个将第二层卷积池化后的结果,转换成一个7 77 76464的数组;的数组;20 20 通过全通过全连接之后并激活;连接之后并激活;2121防止过拟合;防止过拟合;22 22 日志输出,每迭代日志输出,每迭代100100次输出一次日志;次输出一次日志;23

16、 23 定义交叉熵为损失函数;定义交叉熵为损失函数;24 24最小化交叉熵;最小化交叉熵;25 25计算准确率;计算准确率;26 26下载下载ministminist的手写数字的数据集;的手写数字的数据集;4.3 过度拟合过度拟合4.3.1 4.3.1 容量、过拟合与欠拟合的基本概念容量、过拟合与欠拟合的基本概念1 1)增强机器学习算法效果的方法主要有增强机器学习算法效果的方法主要有:降低训练误差;降低训练误差;缩小训练误差和测试误差的差距。缩小训练误差和测试误差的差距。这两个因素对应机器学习的两个主要挑战:欠拟合(这两个因素对应机器学习的两个主要挑战:欠拟合(underfittingunde

17、rfitting)和过)和过拟合(拟合(overfittingoverfitting)。欠拟合是指模型不能在训练集上获得足够低的误)。欠拟合是指模型不能在训练集上获得足够低的误差。而过拟合是指训练误差和测试误差之间的差距过大。通过调整模型的差。而过拟合是指训练误差和测试误差之间的差距过大。通过调整模型的容量(容量(CapacityCapacity),可以控制模型是否偏向于过拟合或者欠拟合。容量低),可以控制模型是否偏向于过拟合或者欠拟合。容量低的模型可能很难拟合训练集。容量高的模型可能会过拟合,也就是过度学的模型可能很难拟合训练集。容量高的模型可能会过拟合,也就是过度学习了训练集的特征。习了训

18、练集的特征。2 2)比较线性、二次和六次函数拟合数据点集的效果如图)比较线性、二次和六次函数拟合数据点集的效果如图4.84.8。(a a)利用线性函数拟合数据将会导致欠拟合,)利用线性函数拟合数据将会导致欠拟合,无法捕捉数据中的非线性信息。无法捕捉数据中的非线性信息。(b b)使二次函数拟合数据,泛化得比较好,不会导致明显的欠拟合或过拟合。)使二次函数拟合数据,泛化得比较好,不会导致明显的欠拟合或过拟合。(c c)显示了)显示了6 6阶多项式拟合原始数据集的情况,有可能导致过拟合。阶多项式拟合原始数据集的情况,有可能导致过拟合。由此可得出结论:高阶多项式如果复杂到它的训练参数比训练样本还多,虽

19、然能由此可得出结论:高阶多项式如果复杂到它的训练参数比训练样本还多,虽然能够获得很多穿过训练样本点的描述函数,但难以在这些不同的函数解中选出一个够获得很多穿过训练样本点的描述函数,但难以在这些不同的函数解中选出一个具有良好泛化性的结果。具有良好泛化性的结果。图图4.84.84.3.3 L24.3.3 L2正则化正则化4.3.4 L14.3.4 L1正则化正则化1)L11)L1正则化如图正则化如图4.10:L24.10:L2正则化是权重衰减最常见的形式,我们还可以使正则化是权重衰减最常见的形式,我们还可以使用其他的方法来限制模型参数的规模用其他的方法来限制模型参数的规模,L1L1正则化,它具有使

20、特征表示更为正则化,它具有使特征表示更为稀疏的性质。稀疏的性质。2)2)分析分析L1L1正则化的提出原理以及正则化的提出原理以及L1L1正则化的稀疏性。正则化的稀疏性。图图4.10 L14.10 L1规范化原理规范化原理通过对比通过对比L1L1、L2L2正则化的稀疏性如图正则化的稀疏性如图4.114.11我们得到下面结论:我们得到下面结论:L1L1正则化,正则化,其约束项所对应的顶点最优解的坐标为(其约束项所对应的顶点最优解的坐标为(0 0,w w)。约束函数具有许多突)。约束函数具有许多突出的角,目标函数与这些角接触的概率会远大于约束函数的其它部位。出的角,目标函数与这些角接触的概率会远大于

21、约束函数的其它部位。在这些角上,许多的权值为在这些角上,许多的权值为0 0,因此,因此L1L1正则化相对于正则化相对于L2L2正则化更具有稀正则化更具有稀疏性。疏性。图图4.11 L14.11 L1、L2L2规范化稀疏性对比规范化稀疏性对比4.3.5 Dropout4.3.5 Dropout1)1)弃权(弃权(DropoutDropout)技术是一种计算方便,能够提升模型泛化能力的深度学)技术是一种计算方便,能够提升模型泛化能力的深度学习模型的改进方法如图习模型的改进方法如图4.124.12。图图4.12 Dropout4.12 Dropout原理,左图为原始网络,右图为经过原理,左图为原始网

22、络,右图为经过dropoutdropout处理后的处理后的众多网络中的一个示例众多网络中的一个示例 只需要将随机选出的那些单元的输出乘以只需要将随机选出的那些单元的输出乘以0 0就可以有效地删除这个单元,通就可以有效地删除这个单元,通常以将神经元乘以掩码的形式予以实现。常以将神经元乘以掩码的形式予以实现。在训练过程中使用在训练过程中使用DropoutDropout时,通常时,通常使用基于小批量数据的学习算法使用基于小批量数据的学习算法。DropoutDropout前向传播示前向传播示4.134.13意图。其中,深颜意图。其中,深颜色的为被采样的神经元。本质上讲就是从原始网络中随机挑选子网络。色

23、的为被采样的神经元。本质上讲就是从原始网络中随机挑选子网络。4.13 Dropout4.13 Dropout前向传播前向传播Dropout训练的目标是最小化代价函数的期望训练的目标是最小化代价函数的期望,即,即(,)L 在在DropoutDropout中所有的子模型是参数共享的中所有的子模型是参数共享的进一步从数学的角度来分析进一步从数学的角度来分析DropoutDropout虽然到目前为止还没有成熟的理论让我们确定深度神经网络是否允许以某种可行虽然到目前为止还没有成熟的理论让我们确定深度神经网络是否允许以某种可行的方式来简化式的方式来简化式如下,如下,但是在大量的工程实践中我们发现一般但是在

24、大量的工程实践中我们发现一般10102020个掩码就可个掩码就可以获得不错的表现。以获得不错的表现。()(|,)pp y x 另一个近似全部子网络的预测方法是利用所有子网络预测分布的几何平均来另一个近似全部子网络的预测方法是利用所有子网络预测分布的几何平均来代替算术平均代替算术平均。通过几何平均定义的非标准化概率分布。通过几何平均定义的非标准化概率分布。2(|)(|,)densemblepy xp y xDropoutDropout的另一个重要观点是,可以通过评估模型中的的另一个重要观点是,可以通过评估模型中的来近似来近似ensemblep这种方法被称为权重比例推断规则这种方法被称为权重比例推

25、断规则(Weight Scaling Inference Rule)Dropout的优点:的优点:1 1 计算方便计算方便2 2 不会特别限制适用的模型或训练过程不会特别限制适用的模型或训练过程4.3.6 4.3.6 提前终止提前终止 当模型具有很强的学习能力时极有可能会过度学习训练集样本。在这个时当模型具有很强的学习能力时极有可能会过度学习训练集样本。在这个时候如图候如图4.144.14所示,训练误差(图中下方的曲线)确实会随着时间的推移逐渐降低所示,训练误差(图中下方的曲线)确实会随着时间的推移逐渐降低但验证集(图中上方的曲线)的误差有可能会再次上升,并且这种现象几乎一定但验证集(图中上方

26、的曲线)的误差有可能会再次上升,并且这种现象几乎一定会出现。会出现。训练集 验证集图图4.14 4.14 过拟合造成的损失升高过拟合造成的损失升高提前终止算法的基本流程提前终止算法的基本流程如图如图4.15所示所示图图4.15 4.15 提前终止算法基本流程提前终止算法基本流程 提前终止算法理解为是一个非常高效的超参数选择算法提前终止算法理解为是一个非常高效的超参数选择算法,显著的代价是显著的代价是训练期间要定期评估验证集。训练期间要定期评估验证集。提前终止可单独使用或与其他的正则化策略结合使用提前终止可单独使用或与其他的正则化策略结合使用,需要评估模型需要评估模型在验证集上的表现在验证集上的

27、表现。为了更好地利用这些额外的评估数据,我们可以在完成提前为了更好地利用这些额外的评估数据,我们可以在完成提前终止的首次训练之后,进行额外的训练。终止的首次训练之后,进行额外的训练。可用于额外训练过程可用于额外训练过程的两个基本策略的两个基本策略。1 1 将模型作为一个全新的空白模型,重新初始化模型全部参数,然后将模型作为一个全新的空白模型,重新初始化模型全部参数,然后使用所有数据再次训练使用所有数据再次训练。2 2 先由部分数据训练模型,然后再使用全部的数据继续训练先由部分数据训练模型,然后再使用全部的数据继续训练。提前终止正则化模型的真正机制提前终止正则化模型的真正机制将模型的参数空间限制

28、在初始参数将模型的参数空间限制在初始参数0的一个邻域之内的一个邻域之内。提前终止算法的效果与提前终止算法的效果与L2L2正则化的效果相似正则化的效果相似如图如图4.164.16所示,所示,这两种算法最大的这两种算法最大的区别在于提前终止算法从初始化参数的位置开始梯度下降,然后随着梯度下降区别在于提前终止算法从初始化参数的位置开始梯度下降,然后随着梯度下降方向开始更新参数方向开始更新参数。图图4.16 4.16 提前终止算法与提前终止算法与L2L2正则化的区别。在提前终止算法的图中虚线代表梯度正则化的区别。在提前终止算法的图中虚线代表梯度下降的轨迹,在下降的轨迹,在L2L2正则化的图中圆圈代表着

29、惩罚项范围。正则化的图中圆圈代表着惩罚项范围。提前终止需要监控验证集误差,以便在空间中适当的点处终止轨迹变化。提前终止需要监控验证集误差,以便在空间中适当的点处终止轨迹变化。我们可以在我们可以在KerasKeras中实现提前终止。中实现提前终止。#调用调用 EarlyStoppingEarlyStopping包包from from keras.callbackskeras.callbacks import import EarlyStoppingEarlyStopping#监控验证集损失,耐心设置为监控验证集损失,耐心设置为2 2early_stoppingearly_stopping=Ear

30、lyStoppingEarlyStopping(monitor=(monitor=val_lossval_loss,patience=2),patience=2)model.fitmodel.fit(X,y,validation_splitX,y,validation_split=0.2,callbacks=0.2,callbacks=early_stoppingearly_stopping)4.4 4.4 时间优化时间优化 在实际的工程应用中我们不仅仅追求模型的识别能力,还追求在相同精度情在实际的工程应用中我们不仅仅追求模型的识别能力,还追求在相同精度情况下能够有着更低的时间成本以及计算成本

31、。本节我们主要学习如何在优化模型况下能够有着更低的时间成本以及计算成本。本节我们主要学习如何在优化模型性能的同时降低模型的时间成本,节约计算资源。性能的同时降低模型的时间成本,节约计算资源。4.4.1 4.4.1 交叉熵代价函数交叉熵代价函数 我们希望构造的深度学习模型当遇到较大的错误时可以很快地改正错误,我们希望构造的深度学习模型当遇到较大的错误时可以很快地改正错误,快速的更新参数。快速的更新参数。但是当我们构造了模型以后有时候可以发现这样的现象,在开但是当我们构造了模型以后有时候可以发现这样的现象,在开始的时候模型性能提升得很慢,而到了后期模型性能改善的速度突然加快了如图始的时候模型性能提

32、升得很慢,而到了后期模型性能改善的速度突然加快了如图4.174.17所示。所示。图图4.17 4.17 错误较大时的学习缓慢现象错误较大时的学习缓慢现象参数的更新速度是与其激活函数的梯度有关。如图参数的更新速度是与其激活函数的梯度有关。如图4.184.18所示,以所示,以sigmoidsigmoid函函数举例,当数举例,当 值较大时,值较大时,sigmoidsigmoid函数的输出较为平缓,梯度较小,由于参数更函数的输出较为平缓,梯度较小,由于参数更新的速度受其影响新的速度受其影响,因此参数迭代速度较慢。这就是学习缓慢的原因所在。因此参数迭代速度较慢。这就是学习缓慢的原因所在。图图4.18 s

33、igmoid4.18 sigmoid函数函数交叉熵代价函数交叉熵代价函数图图4.19 4.19 交叉熵代价函数缓解了学习缓慢的问题,在误差较大时学习速度也较快交叉熵代价函数缓解了学习缓慢的问题,在误差较大时学习速度也较快4.4.2 4.4.2 批标准化批标准化epsilonepsilon为大于为大于0 0的小浮点数,用于防止除的小浮点数,用于防止除0 0错误;错误;modemode为整数,指定规范化的模为整数,指定规范化的模式,取式,取0 0或或1 1;momentummomentum是指在按特征规范化时,计算数据的指数平均数和标准是指在按特征规范化时,计算数据的指数平均数和标准差时的动量;差

34、时的动量;weightsweights为初始化权重,为包含为初始化权重,为包含2 2个个numpynumpy array array的的listlist,其,其shapeshape为为(input_shapeinput_shape,),(,),(input_shapeinput_shape);beta_initbeta_init为为betabeta的初始化方法;的初始化方法;gamma_initgamma_init为为gammagamma的初始化方法。还有的初始化方法。还有gamma_regularizergamma_regularizer为为WeightRegularizerWeightRe

35、gularizer(如如L1L1或或L2L2正则化正则化)的实例,作用在的实例,作用在gammagamma向量上;向量上;beta_regularizerbeta_regularizer为为WeightRegularizerWeightRegularizer的实例,作用在的实例,作用在betabeta向量上。向量上。利用利用KerasKeras直接实现批标准化的程序:直接实现批标准化的程序:keras.layers.normalization.BatchNormalization(epsilon=1e-06,mode=0,axis=-1,momentum=0.9,weights=None,be

36、ta_init=zero,gamma_init=one)4.4.3 4.4.3 随机梯度下降随机梯度下降我们可以通过计算随机选取的小批量数据的梯度来估算整体的梯度,小批量我们可以通过计算随机选取的小批量数据的梯度来估算整体的梯度,小批量数据的梯度是整体数据梯度的无偏估计。用小批量数据的梯度估算整体的梯数据的梯度是整体数据梯度的无偏估计。用小批量数据的梯度估算整体的梯度,降低了对计算资源的需求,加速了学习的进程。当我们随机抽取完全部度,降低了对计算资源的需求,加速了学习的进程。当我们随机抽取完全部的训练输入后,就完成了一次训练迭代。这样,我们就得到了随机梯度下降的训练输入后,就完成了一次训练迭代

37、。这样,我们就得到了随机梯度下降算法的参数更新方法。算法的参数更新方法。图图4.204.20给出了给出了SGDSGD的算法流程。的算法流程。图图4.204.20给出了给出了SGDSGD的算法流程的算法流程SGDSGD算法中的另一个关键参数是学习率算法中的另一个关键参数是学习率,使用固定值的学习率是可以的,但使用固定值的学习率是可以的,但是在实践中,有必要随着时间的推移逐渐降低学习率是在实践中,有必要随着时间的推移逐渐降低学习率。当我们使用批量梯度下降到极小点时,整个代价函数的真实梯度会变得很小直当我们使用批量梯度下降到极小点时,整个代价函数的真实梯度会变得很小直至为至为0 0,因此批量梯度下降

38、可以使用固定的学习率。保证,因此批量梯度下降可以使用固定的学习率。保证SGDSGD收敛的一个充分条收敛的一个充分条件是:件是:1kk 且满足且满足:21kk 实际应用过程中,一般学习率会线性衰减到第实际应用过程中,一般学习率会线性衰减到第次迭代次迭代:0(1)k 4.4.4 4.4.4 动量动量 梯度下降算法仅仅是令代价函数沿着梯度下降的方向不断减小,会存在梯梯度下降算法仅仅是令代价函数沿着梯度下降的方向不断减小,会存在梯度下降时沿着梯度减少的方向不停振荡的情况,也就是说代价函数的值虽然总体度下降时沿着梯度减少的方向不停振荡的情况,也就是说代价函数的值虽然总体趋势是减小的,但是它会反复振荡直至

39、最小趋势是减小的,但是它会反复振荡直至最小如图如图4.21所示所示。图图4.21 4.21 梯度下降算法的振荡现象梯度下降算法的振荡现象图图4.22 4.22 动量梯度下降算法减缓了振荡现象动量梯度下降算法减缓了振荡现象 箭头的牵引方向总是指向梯度下降的方向,当运动方向与梯度下降方向箭头的牵引方向总是指向梯度下降的方向,当运动方向与梯度下降方向相同时,牵引速度使代价函数下降的速度加快,反之则阻碍运动相同时,牵引速度使代价函数下降的速度加快,反之则阻碍运动如图如图4.224.22。系数系数 和和 越大其梯度衰减的越少,这也就意味着之前梯度对现在方向的影越大其梯度衰减的越少,这也就意味着之前梯度对

40、现在方向的影响也越大。带动量的响也越大。带动量的SGDSGD算法过程算法过程如图如图4.234.23:图图4.23 4.23 动量梯度下降算法流程动量梯度下降算法流程 在普通的在普通的SGDSGD算法中,梯度下降的步长仅仅是梯度的范数乘以学习率。算法中,梯度下降的步长仅仅是梯度的范数乘以学习率。动量算法就是求解微分方程。求解微分方程的一个简单数值方法是欧拉方法。动量算法就是求解微分方程。求解微分方程的一个简单数值方法是欧拉方法。微分方程表示了相应物理量的变化趋势微分方程表示了相应物理量的变化趋势。我们可以在我们可以在KerasKeras中直接实现含动量的梯度下降:中直接实现含动量的梯度下降:s

41、gd=SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True)pile(loss=mean_squared_error,optimizer=sgd)4.4.5 4.4.5 NesterovNesterov动量动量NesterovNesterov动量算法是标准动量算法的一个变种。在凸批量梯度的情况下动量算法是标准动量算法的一个变种。在凸批量梯度的情况下NesterovNesterov动量改进了额外误差收敛率,但是在随机梯度的情况下却没有改动量改进了额外误差收敛率,但是在随机梯度的情况下却没有改进。关于凸优化相关知识已经超出了本书的范围,这里我们不作过多

42、的讲进。关于凸优化相关知识已经超出了本书的范围,这里我们不作过多的讲解。具体的解。具体的NesterovNesterov动量算法流程如图动量算法流程如图4.244.24所示。所示。图图4.40 4.40 NesterovNesterov动量梯度下降算法流程动量梯度下降算法流程 我们可以在我们可以在KerasKeras中直接实现含中直接实现含NesterovNesterov动量梯度下降算法,它和我们上一动量梯度下降算法,它和我们上一节所讲的动量梯度下降算法在一起:节所讲的动量梯度下降算法在一起:sgd=SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=Tr

43、ue)pile(loss=mean_squared_error,optimizer=sgd)当当nesterovnesterov为为TrueTrue时,即开启了时,即开启了NesterovNesterov动量。动量。4.5 4.5 综合二维卷积神经网络实例综合二维卷积神经网络实例 我们将实现一个综合了本章所介绍的多项技术的深度学习模型,并将其应用我们将实现一个综合了本章所介绍的多项技术的深度学习模型,并将其应用于一个实际的工程当中。我们利用二维卷积神经网络去识别相对于手写体数字来于一个实际的工程当中。我们利用二维卷积神经网络去识别相对于手写体数字来讲更加复杂的图像讲更加复杂的图像。首先,我们先

44、将数据分为训练集与验证集,分为两个文件首先,我们先将数据分为训练集与验证集,分为两个文件夹夹traintrain和和testtest如图如图4.254.25。图图4.25 4.25 将数据分为训练集与验证集将数据分为训练集与验证集 每个文件夹中拥有三个子文件夹,分别按类存放汽车(每个文件夹中拥有三个子文件夹,分别按类存放汽车(BUSBUS)、花()、花(HUAHUA)和)和恐龙(恐龙(KONGLONGKONGLONG)的图像)的图像如图如图4.264.26。图图4.26 4.26 分别按类存放汽车、恐龙和花的图像分别按类存放汽车、恐龙和花的图像这里,我们利用这里,我们利用KerasKeras来

45、构建深度学习模型。来构建深度学习模型。#导入所需要的所有包导入所需要的所有包import import numpynumpy as np as npimport pandas as pdimport pandas as pd%matplotlib inline#%matplotlib inline#内嵌显示图像内嵌显示图像import matplotlibimport matplotlibimport import matplotlib.pyplotmatplotlib.pyplot as as pltpltfrom from keraskeras import optimizers impo

46、rt optimizersfrom from keraskeras import import regularizersregularizersfrom from keras.modelskeras.models import Sequential import Sequentialfrom from keras.layerskeras.layers import Dense,Dropout import Dense,Dropoutfrom from keras.wrappers.scikit_learnkeras.wrappers.scikit_learn import import Ker

47、asClassifierKerasClassifierfrom from keras.utilskeras.utils import import np_utilsnp_utilsfrom from sklearn.model_selectionsklearn.model_selection import import train_test_splittrain_test_split,KFoldKFold,cross_val_scorecross_val_scorefrom from sklearn.preprocessingsklearn.preprocessing import impor

48、t LabelEncoderLabelEncoderfrom from keras.layers.corekeras.layers.core import import Dense,Dropout,ActivationDense,Dropout,Activationfrom from keras.layerskeras.layers import Conv2D,MaxPooling2D,GlobalAveragePooling2D,import Conv2D,MaxPooling2D,GlobalAveragePooling2D,FlattenFlattenfrom from keras.pr

49、eprocessing.imagekeras.preprocessing.image import import ImageDataGeneratorImageDataGeneratorfrom from keras.callbackskeras.callbacks import import TensorBoardTensorBoardfrom from keras.callbackskeras.callbacks import import EarlyStoppingEarlyStopping#预设参数预设参数img_heightimg_height=28=28img_widthimg_w

50、idth=28=28#指定训练集以及验证集的位置指定训练集以及验证集的位置train_data_dirtrain_data_dir=D:=D:DLsampleDLsampletraintrainvalidation_data_dirvalidation_data_dir=D:=D:DLsampleDLsampletesttest#图像归一化图像归一化train_datagentrain_datagen=ImageDataGeneratorImageDataGenerator(rescale=1./255)(rescale=1./255)test_datagentest_datagen=Imag

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《深度学习》课件4.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|