首页 > 手机 > 配件 > 卷积神经网络原理,理解卷积神经网络

卷积神经网络原理,理解卷积神经网络

来源:整理 时间:2022-04-07 18:06:43 编辑:华为40 手机版

卷积神经网络有哪些重要的技巧细节

卷积神经网络有哪些重要的技巧细节

除了带你动手学深度学习,李沐大神还带你深挖卷积神经网络的各种实践「技艺」。近日AWS的研究者研究了一系列训练过程和模型架构的改进方法,他们在多个神经网络架构和数据集上评估它们,并研究它们对最终模型准确率的影响。自 2012 年 AlexNet 大展神威以来,研究者已经提出了各种卷积架构,包括 VGG、NiN、Inception、ResNet、DenseNet 和 NASNet 等,我们会发现模型的准确率正稳定提升。

但是现在这些提升并不仅仅来源于架构的修正,还来源于训练过程的改进:包括损失函数的优化、数据预处理方法的提炼和最优化方法的提升等。在过去几年中,卷积网络与图像分割出现大量的改进,但大多数在文献中只作为实现细节而简要提及,而其它还有一些技巧甚至只能在源代码中找到。在这篇论文中,李沐等研究者研究了一系列训练过程和模型架构的改进方法。

这些方法都能提升模型的准确率,且几乎不增加任何计算复杂度。它们大多数都是次要的「技巧」,例如修正卷积步幅大小或调整学习率策略等。总的来说,采用这些技巧会产生很大的不同。因此研究者希望在多个神经网络架构和数据集上评估它们,并研究它们对最终模型准确率的影响。研究者的实验表明,一些技巧可以显著提升准确率,且将它们组合在一起能进一步提升模型的准确率。

研究者还对比了基线 ResNet 、加了各种技巧的 ResNet、以及其它相关的神经网络,下表 1 展示了所有的准确率对比。这些技巧将 ResNet50 的 Top-1 验证准确率从 75.3%提高到 79.29%,还优于其他更新和改进的网络架构。此外,研究者还表示这些技巧很多都可以迁移到其它领域和数据集,例如目标检测和语义分割等。

论文:Bag of Tricks for Image Classification with Convolutional Neural Networks论文地址:https://arxiv.org/pdf/1812.01187.pdf摘要:图像分类研究近期的多数进展都可以归功于训练过程的调整,例如数据增强和优化方法的变化。

然而,在这些文献中,大多数微调方法要么被简单地作为实现细节,或仅能在源代码中看到。在本文中,我们将测试一系列的微调方法,并通过控制变量实验评估它们对最终准确率的影响。我们将展示通过组合不同的微调方法,我们可以显著地改善多种 CNN 模型。例如,我们将 ImageNet 上训练的 ResNet-50 的 top-1 验证准确率从 75.3% 提升到 79.29。

本研究还表明,图像分类准确率的提高可以在其他应用领域(如目标检测和语义分割)中实现更好的迁移学习性能。2 训练过程目前我们基本上都用小批量 SGD 或其变体训练神经网络,Algorithm 1 展示了 SGD 的模版过程(感兴趣的读者可以查阅原论文)。利用广泛使用的 ResNet 实现作为我们的基线,训练过程主要分为以下六个步骤:随机采样一张图片,并解码为 32 位的原始像素浮点值,每一个像素值的取值范围为 [0, 255]。

随机以 [3/4, 4/3] 为长宽比、[8%, 100%] 为比例裁减矩形区域,然后再缩放为 224*224 的方图。以 0.5 的概率随机水平翻转图像。从均匀分布 [0.6, 1.4] 中抽取系数,并用于缩放色调和明亮度等。从正态分布 N (0, 0.1) 中采样一个系数,以添加 PCA 噪声。图像分别通过减去(123.68, 116.779, 103.939),并除以(58.393, 57.12, 57.375)而获得经归一化的 RGB 三通道。

经过六步后就可以训练并验证了,以下展示了基线模型的准确率:表 2:文献中实现的验证准确率与我们基线模型的验证准确率,注意 Inception V3 的输入图像大小是 299*299。3 高效训练随着 GPU 等硬件的流行,很多与性能相关的权衡取舍或最优选择都已经发生了改变。在这一章节中,我们研究了能利用低精度和大批量训练优势的多种技术,它们都不会损害模型的准确率,甚至有一些技术还能同时提升准确率与训练速度。

3.1 大批量训练对于凸优化问题,随着批量的增加,收敛速度会降低。人们已经知道神经网络会有类似的实证结果 [25]。换句话说,对于相同数量的 epoch,大批量训练的模型与使用较小批量训练的模型相比,验证准确率会降低。因此有很多方法与技巧都旨在解决这个问题:线性扩展学习率:较大的批量会减少梯度的噪声,从而可以增加学习率来加快收敛。

学习率预热:在预热这一启发式方法中,我们在最初使用较小的学习率,然后在训练过程变得稳定时换回初始学习率。Zero γ:注意 ResNet 块的最后一层可以是批归一化层(BN)。在 zero γ启发式方法中,我们对所有残差块末端的 BN 层初始化γ=0。因此,所有的残差块仅返回输入值,这相当于网络拥有更少的层,在初始阶段更容易训练。

无偏衰减:无偏衰减启发式方法仅应用权重衰减到卷积层和全连接层的权重,其它如 BN 中的γ和β都不进行衰减。表 4:ResNet-50 上每种有效训练启发式的准确率效果。3.2 低精度训练然而,新硬件可能具有增强的算术逻辑单元以用于较低精度的数据类型。尽管具备性能优势,但是精度降低具有较窄的取值范围,因此有可能出现超出范围而扰乱训练进度的情况。

表 3:ResNet-50 在基线(BS = 256 与 FP32)和更高效硬件设置(BS = 1024 与 FP16)之间的训练时间和验证准确率的比较。4 模型变体我们将简要介绍 ResNet 架构,特别是与模型变体调整相关的模块。ResNet 网络由一个输入主干、四个后续阶段和一个最终输出层组成,如图 1 所示。

输入主干有一个 7×7 卷积,输出通道有 64 个,步幅为 2,接着是 3 ×3 最大池化层,步幅为 2。输入主干(input stem)将输入宽度和高度减小 4 倍,并将其通道尺寸增加到 64。从阶段 2 开始,每个阶段从下采样块开始,然后是几个残差块。在下采样块中,存在路径 A 和路径 B。路径 A 具有三个卷积,其卷积核大小分别为 1×1、3×3 和 1×1。

第一个卷积的步幅为 2,以将输入长度和宽度减半,最后一个卷积的输出通道比前两个大 4 倍,称为瓶颈结构。路径 B 使用步长为 2 的 1×1 卷积将输入形状变换为路径 A 的输出形状,因此我们可以对两个路径的输出求和以获得下采样块的输出。残差块类似于下采样块,除了仅使用步幅为 1 的卷积。我们可以改变每个阶段中残差块的数量以获得不同的 ResNet 模型,例如 ResNet-50 和 ResNet-152,其中的数字表示网络中卷积层的数量。

图 1:ResNet-50 的架构。图中说明了卷积层的卷积核大小、输出通道大小和步幅大小(默认值为 1),池化层也类似。图 2:三个 ResNet 变体。ResNet-B 修改 ResNet 的下采样模块。ResNet-C 进一步修改输入主干。在此基础上,ResNet-D 再次修改了下采样块。表 5:将 ResNet-50 与三种模型变体进行模型大小(参数数量)、FLOPs 和 ImageNet 验证准确率(top-1、top-5)的比较。

5 训练方法改进5.1 余弦学习率衰减Loshchilov 等人 [18] 提出余弦退火策略,其简化版本是按照余弦函数将学习速率从初始值降低到 0。假设批次总数为 T(忽略预热阶段),然后在批次 t,学习率η_t 计算如下:其中η是初始学习率,我们将此方案称为「余弦」衰减。图 3:可视化带有预热方案的学习率变化。

顶部:批量大小为 1024 的余弦衰减和按迭代步衰减方案。底部:关于两个方案的 top-1 验证准确率曲线。5.2 标签平滑标签平滑的想法首先被提出用于训练 Inception-v2 [26]。它将真实概率的构造改成:其中ε是一个小常数,K 是标签总数量。图 4:ImageNet 上标签平滑效果的可视化。

顶部:当增加ε时,目标类别与其它类别之间的理论差距减小。下图:最大预测与其它类别平均值之间差距的经验分布。很明显,通过标签平滑,分布中心处于理论值并具有较少的极端值。5.3 知识蒸馏在知识蒸馏 [10] 中,我们使用教师模型来帮助训练当前模型(被称为学生模型)。教师模型通常是具有更高准确率的预训练模型,因此通过模仿,学生模型能够在保持模型复杂性相同的同时提高其自身的准确率。

一个例子是使用 ResNet-152 作为教师模型来帮助训练 ResNet-50。5.4 混合训练在混合训练(mixup)中,每次我们随机抽样两个样本 (x_i,y_i) 和 (x_j,y_j)。然后我们通过这两个样本的加权线性插值构建一个新的样本:其中 λ∈[0,1] 是从 Beta(α, α) 分布提取的随机数。

在混合训练中,我们只使用新的样本 (x hat, y hat)。5.5 实验结果表 6:通过堆叠训练改进方法,得到的 ImageNet 验证准确率。基线模型为第 3 节所描述的。6 迁移学习6.1 目标检测表 8:在 Pascal VOC 上评估各种预训练基础网络的 Faster-RCNN 性能。6.2 语义分割表 9:在 ADE20K 上评估各种基础网络的 FCN 性能。

cnn卷积神经网络中的卷积核怎么确定?

卷积神经网络有哪些重要的技巧细节

卷积参数是模型学习出来的,卷积核的大小以及个数是人工来确定的,二维卷积卷积核大小一般是1*1,3*3,5*5,7*7这样奇数的。卷积核的个数就是网络的channel数,常见的128 256 512这种,需要根据具体任务确定。另外最近神经网络自动搜索结构非常火,最有名的就是谷歌的NASnet,采用某种启发式遍历来寻找对于特定数据集最优的网络结构。

如何理解卷积神经网络里卷积过滤器的深度问题?

卷积神经网络有哪些重要的技巧细节

我们通常看到的卷积过滤器示意图是这样的:(图片来源:cs231n)这其实是把卷积过滤器“压扁”了,或者说“拍平”了。比如,上图中粉色的卷积过滤器是3x3x3,也就是长3宽3深3,但是示意图中却画成二维——这是省略了深度(depth)。实际上,卷积过滤器是有深度的,深度值和输入图像的深度相同。也正因为卷积过滤器的深度和输入图像的深度相同,因此,一般在示意图中就不把深度画出来了。

如果把深度也画出来,效果大概就是这样:(图片来源:mlnotebook)如前所述,卷积过滤器的深度和输入图像的深度相同,都是3。顺便说下,输入图像深度为3,是因为输入图像是彩色图像,深度为3,分别为R、G、B值。作为对比,灰度图像的卷积过滤器是这样的(真2D):(图片来源:mlnotebook)总之,卷积过滤器的深度和输入数据的深度保持一致就可以了。

深度学习的人工神经网络及卷积神经网络原理是什么?

一、神经网络,也指人工神经网络(Artificial Neural Networks,简称ANNs),是一种模仿生物神经网络行为特征的算法数学模型,由神经元、节点与节点之间的连接(突触)所构成,如下图:  每个神经网络单元抽象出来的数学模型如下,也叫感知器,它接收多个输入(x1,x2,x3...),产生一个输出,这就好比是神经末梢感受各种外部环境的变化(外部刺激),然后产生电信号,以便于转导到神经细胞(又叫神经元)。

  单个的感知器就构成了一个简单的模型,但在现实世界中,实际的决策模型则要复杂得多,往往是由多个感知器组成的多层网络,如下图所示,这也是经典的神经网络模型,由输入层、隐含层、输出层构成。  人工神经网络可以映射任意复杂的非线性关系,具有很强的鲁棒性、记忆能力、自学习等能力,在分类、预测、模式识别等方面有着广泛的应用。

二、卷积神经网络是近年发展起来的,并引起广泛重视的一种高效识别方法,20世纪60年代,Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现其独特的网络结构可以有效地降低反馈神经网络的复杂性,继而提出了卷积神经网络(Convolutional Neural Networks-简称CNN)。

现在,CNN已经成为众多科学领域的研究热点之一,特别是在模式分类领域,由于该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,因而得到了更为广泛的应用。 K.Fukushima在1980年提出的新识别机是卷积神经网络的第一个实现网络。随后,更多的科研工作者对该网络进行了改进。其中,具有代表性的研究成果是Alexander和Taylor提出的“改进认知机”,该方法综合了各种改进方法的优点并避免了耗时的误差反向传播。

  这听起来像是一个奇怪的生物学和数学的结合,但是这些网络已经成为计算机视觉领域最具影响力的创新之一。2012年是神经网络成长的第一年,Alex Krizhevsky用它们赢得了当年的ImageNet竞赛(基本上是计算机视觉年度奥运会),把分类错误记录从26%降到了15%,这个惊人的提高从那以后,许多公司一直在以服务为核心进行深度学习。

Facebook使用自动标记算法的神经网络,谷歌的照片搜索,亚马逊的产品推荐,Pinterest的家庭饲料个性化和Instagram的搜索基础设施。  一般的,CNN的基本结构包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。

特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均与二次提取的计算层,这种特有的两次特征提取结构减小了特征分辨率。  CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形,该部分功能主要由池化层实现。

由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。

  下面将以图像识别为例子,来介绍卷积神经网络的原理。案例  假设给定一张图(可能是字母X或者字母O),通过CNN即可识别出是X还是O,如下图所示,那怎么做到的呢1)图像输入  如果采用经典的神经网络模型,则需要读取整幅图像作为神经网络模型的输入(即全连接的方式),当图像的尺寸越大时,其连接的参数将变得很多,从而导致计算量非常大。

  而我们人类对外界的认知一般是从局部到全局,先对局部有感知的认识,再逐步对全体有认知,这是人类的认识模式。在图像中的空间联系也是类似,局部范围内的像素之间联系较为紧密,而距离较远的像素则相关性较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。

这种模式就是卷积神经网络中降低参数数目的重要神器:局部感受野。2)提取特征  如果字母X、字母O是固定不变的,那么最简单的方式就是图像之间的像素一一比对就行,但在现实生活中,字体都有着各个形态上的变化(例如手写文字识别),例如平移、缩放、旋转、微变形等等,如下图所示:  我们的目标是对于各种形态变化的X和O,都能通过CNN准确地识别出来,这就涉及到应该如何有效地提取特征,作为识别的关键因子。

  回想前面讲到的“局部感受野”模式,对于CNN来说,它是一小块一小块地来进行比对,在两幅图像中大致相同的位置找到一些粗糙的特征(小块图像)进行匹配,相比起传统的整幅图逐一比对的方式,CNN的这种小块匹配方式能够更好的比较两幅图像之间的相似性。如下图:  以字母X为例,可以提取出三个重要特征(两个交叉线、一个对角线),如下图所示:  假如以像素值"1"代表白色,像素值"-1"代表黑色,则字母X的三个重要特征如下:对其进行特征匹配计算的方法不在这里阐述。

CNN(卷积神经网络)相比较普通的神经网络,是不是只有“降低计算量”这一个优势?

首先纠正一个问题,CNN并没有降低计算量,因为CNN通常处理的都是图像数据,因此,需要的计算量反而相当的大,需要专业的显卡支持其计算。既然问出这个问题,我猜你应该是对CNN的共享权重没有理解透彻,你以为cnn共享权重相对于普通网络降低了计算量,当然不能说没降低,但是其目的可不是为了降低计算量。简单的问题采用全连接的方式是可以的,但牵扯到图像,动则上千万像素这个量级的问题,全连接明显是不可能的。

那为何CNN会共享权重呢?这与我们大脑的对图像处理的机制有关,我们大脑处理图像绝不是DNN(深度神经网络)的一个点一个点处理的方式。举个例子,下面这张图,我们第一眼看到并开始分析的决对不会是像素点(你非要说你就是看像素点我就没办法了),而是对图做了分类如颜色角度整张图偏暖色,头发偏黑色;从生物角度讲里面还有个人,在从人的细节是一个年轻的瘦瘦的性感的长发的戴帽子的大眼睛的高鼻梁的露肩外国女人;在从底层一点分析,有镜子的反射轮廓,帽子轮廓,人的轮廓等等。

这说明啥,这说明我们在第一眼看到这幅图像时,我们的右脑已经自动将整幅图分解成各个类别的集合。如人类的特征集合、帽子特征集合、环境特征集合。看到大眼睛、紧致皮肤、俊俏面庞、长发我们会连想到“美女”,没有人会把这些特征和其他特征联系在一起,因此这些集合是共享的。Cnn正是从我们大脑的运行方式学来的方法,权重共享只是模拟大脑的一种方法,并不是为了减小计算量,并且牵扯图像的,计算量都非常大。

文章TAG:卷积神经网络原理理解

最近更新