卷积神经网络新手指南之二

卷积神经网络新手指南之二

引言

本文将进一步探讨有关卷积神经网络的更多细节,注:以下文章中部分内容较为复杂,为了保证其简明性,部分内容详细解释的研究文献会标注在后。

步幅和填充

让我们看回之前的转换层,在第一部分中我们提到过过滤器、接受场。现在,我们可以通过改变2个主要参数来校正每一层的行为。在选择过滤器大小之后,我们也必须选择“步幅”和“填充”。

步幅控制着过滤器如何进行卷积。在第一部分中我们有提到一个例子,过滤器围绕输入体量通过一次移动一个单位进行卷积。过滤器移动的总量即步幅。步长通常以一个方法进行设置使输出量是一个整数,而不是一个分数。让我们看看一个例子,想象一个7×7输入体量,一个3×3过滤器(出于简化角度考虑忽略第三维度),另外还有一个步幅1。这个就是我们习惯的情况。

 

是不是和之前的一样?你还可以尝试猜测下当步幅增加到2,输出量会发生什么情况。

 

因此,正如你所看到的那样,接受场正在以2个单位进行移动,同时输出量也会减少。注意如果我们试图将我们的步幅设置为3,那么其在间距和确保接受场适合的输入量两个方面会出现问题。通常情况下,如果程序员希望接受场重叠更少以及更小的空间尺寸的话,他们通常会增加步幅。

现在我们来接着关注填充,在正式开始之前,让我们设想一个场景。当你将三个5×5×3的过滤器应用到一个32×32×3的输入体量中时会发生什么?

注意空间维度会降低。当我们持续应用卷积层时,体量的大小将减少得比我们想的快。在我们神经网络的早期层中,我们要保存尽可能多的原始输入信息,以便我们可以提取这些低阶特征。我们想要应用同样的卷积层,但我们想将输出量保持在32 x 32 x 3。要做到这个,我们可以将大小为2的零填充(zero padding)应用到该层。零填充(zero padding)在边界周围填充了值为零的输入量。如果我们考虑大小为2的零填充(zero padding),那么这将导致在一个36×36×3输入量。

 

如果有1的步幅并且将零填充(zero padding)的大小设置为

 

K是过滤器大小,输入和输出量将会一直保持同样的空间维度

对于任何给定的卷积层输出大小的计算公式

 

O是输出大小,K是过滤器大小,P是填充,S是步幅。 

选择超参数

我们怎么确定需要用多少层、多少卷积层、过滤器的大小是什么,或者步幅和填充的值?这些都是重要的问题,并且没有一套所有的研究人员都在使用的标准。这是因为神经网络在很大程度上取决于你所拥有的数据类型。数据大小因为图像的复杂性、图像处理任务的类型以及更多因素而千差万别。当你看着自己的数据集时,选择超参数的一种方式是发现在一个适当的范围创造图像抽象的正确组合。

修正线性单元(ReLU)层

在每个卷积层后,习惯在其后马上添加一个非线性层(或激活层)。这一层的目的是将非线性引入系统,基本上是在卷积层进行线性运算(只是元素的乘法和累加)。在过去都是像tanh 或者sigmoid的线性算法,但研究人员发现ReLU层效果更好,因为网络训练速度能加快很多(因为计算效率)且精度没有显著差异。它也有助于缓解消失的梯度问题,这是因为网络训练较低层的速度非常缓慢,梯度通过不同的层级指数下降。ReLU层的采用的函数f(x)= max(0,x)所有值的输入量。基本上,这一层将所有的负激活变成了0。这一层提高了模型的非线性特性,且整体网络不影响卷积层的接受场。感兴趣的还可以参看深度学习之父Geoffrey Hinton的论文Geoffrey Hinton

 池化层(Pooling Layers)

经过一些ReLU层之后,程序员可以选择池化层,它也被称为下采样层。在这一类别中,也有几种层可供选择,但maxpooling(最大池化层)是最受欢迎的。它需要一个过滤器(通常大小2x2)和一个相同的步幅长度,然后将其应用在过滤器卷积周边每一个分区的输入和输出的最大量处。

池层的其他选项(pooling layers)还有是平均池(average pooling)和 L2-norm pooling。这层背后的原因是一旦我们知道一个特定的特性是其原始输入量(将有一个高激活值),那么其确切位置不重要的。可以想象,这一层大大降低了输入体积的空间维度(长度和宽度的变化,但不是深度)。这样做有两个主要目的,首先是参数或权重的量减少了75%,从而降低了计算成本。其次,它能够控制过度拟合。这个术语是指当一个模型针对训练例子如此调整的话,它是不能够概括验证和测试集的。过度拟合的特征是有一个模型能得到100%或99%的训练集,但只有50%的测试数据。

降层(Dropout Layers)

降层在神经网络中有一个十分特别的功能。在上一节中,我们讨论了过度拟合的问题。在训练之后,网络的权重被调整到给定的训练样本上,这样的话当给定新的样本时神经网络的表现并不好。降层这个理念在自然中过分单纯的。

降层通过在前向传播过程中将其设置为零在该层中随机“抛弃”一些激活,就是这么简单。在这个过程中这样做有什么好处呢?在某种程度上,它迫使网络变成“多余”的。即使一些激活在过程中被抛弃,神经网络也应该能够对特定样本提供正确的分类或者输出。它确保网络对于训练数据不会过于“合适”,从而有助于缓解过度拟合的问题。重要的一个这一层只在训练过程中使用,而不是在测试中。

网络层网络

网络层网络指的是一个使用1 x 1大小的过滤器的卷积层。现在,第一眼你可能会想知道为什么这种类型的层会有帮助,因为接受场通常是大于他们映射空间的。然而,我们必须记住这些1x1卷积跨度有一定的深度,所以我们可以认为它是一个1 x 1 x N的卷积,其中N是该层中过滤器应用的数量。实际上这层是执行一个N-D 元素级的相乘,其中N是输入量成层深度。

分类,定位,检测,分割

在这节中我们使用第一部分曾提到过的例子,来看一下图像分类任务。图像分类任务是将输入图像识别并输入一系列的图像类别的过程,然而当我们将对象定位作为任务时,我们的工作不仅是得到一个分类标签,另外还需要划定一个对象在图像中的范围。

 

同样还有对象检测任务,需要将图像中所有对象进行图像定位任务。因此,在图像中将会有多个划定范围还有多个分类标签。

最后,还有对象分割任务,对象分割任务指的是输出一个类的标签,以及输入图像中的每一个对象的轮廓。

迁移学习(Transfer Learning)

目前在深度社区的一个常见的误解是:没有谷歌那样的数据量的话,不可能建立一个有效的深度学习模型。虽然数据确实是创建神经网络的一个重要组成部分,但是迁移学习的理念能够有助于减少数据的需求。迁移学习是经过一个预先训练的模型(网络的权重和参数已通过一个大数据集或者别人训练),并且用你自己的数据集进行“微调”的过程。这个理念就是预先训练的模型将作为一个特征提取器,将网络的最后一层删除并用自己的分类器替换它(取决于您的问题空间)。然后冻结所有其他层的权重,并正常训练网络(冻结层意味着在梯度下降/优化过程中能够不改变权重)。

让我们来弄清楚为什么这样会有用,举例来说我们在ImageNet上的预先训练模型(ImageNet是一个数据集,包含超过1000类的1400万幅图像)。当我们考虑网络的低层时,我们知道他们会检测到边缘和曲线等特征。现在除非你有一个非常独特的问题空间和数据集,你的网络也会需要检测曲线和边缘。与其通过一个随机初始化的权重来训练整个网络,我们可以使用预先训练的(并冻结)模型的权重,并专注于更重要的(更高的)层级的训练。如果你的数据集与ImageNet等完全不同,那么你就要多培养你的层并冻结一些低级层。

本文作者:李尊

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-09-12 05:51:57

卷积神经网络新手指南之二的相关文章

卷积神经网络(CNN)新手指南

卷积神经网络(Convolutional Neural Network,CNN)新手指南 引言 卷积神经网络:听起来像是生物与数学还有少量计算机科学的奇怪结合,但是这些网络在计算机视觉领域已经造就了一些最有影响力的创新.2012年神经网络开始崭露头角,那一年Alex Krizhevskyj在ImageNet竞赛上(ImageNet可以算是竞赛计算机视觉领域一年一度的"奥运会"竞赛)将分类错误记录从26%降低到15%,这在当时是一个相当惊人的进步.从那时起许多公司开始将深度学习应用在他们

数字识别 matlab-lecun关于卷积神经网络的matlab代码怎么训练和测试,要改哪些?

问题描述 lecun关于卷积神经网络的matlab代码怎么训练和测试,要改哪些? 运行里面M文件出现1.错误使用 readMNIST (line 28)训练集的MNIST不见了.请从http://yann.lecun.com/exdb/mnist/下载它和投入./ MNIST文件夹 readMNIST的一部分: %检查MNIST数据集addpath('C:UsersfaschouDesktopCNNMNIST');%MNIST数据及其读取程序所在的目录path =' .MNISTtrain-im

入门篇:卷积神经网络指南(一)

更多深度文章,请关注云计算频道:https://yq.aliyun.com/cloud 卷积神经网络听起来像一个奇怪的生物学和数学的组合,但它是计算机视觉领域最具影响力的创新之一.2012年是卷积神经网络最流行的一年,因为Alex Krizhevsky用它赢得当年的ImageNet竞争(基本上算得上是计算机视觉的年度奥运),它将分类错误记录从26%降至15%,这是惊人的改善.从那时起,深度学习开始流行起来,Facebook使用神经网络进行自动标记算法,Google进行照片搜索,亚马逊的产品推荐,

自动化所马佳彬、王威、王亮等研究人员提出不规则卷积神经网络:可动态提升内核效率

近年来,卷积神经网络(CNN)在学界和业界广受欢迎,已被成功地应用到各种特征提取的任务当中.CNN的效果相较于前有很大提升,对各种任务的实用性都非常的强,但尽管如此,经典CNN仍存在一些问题值得探讨和深究. 图1 规则与不规则卷积核的对比. (a) 不规则输入特征,其范围超越了3x3的区域 (b)两个3x3的卷积核,它们联合建模了输入特征 (c)从3x3卷积核到不规则卷积核的变形过程示例. 首先,卷积核的规则形状和不规则的特征模式并不匹配.在视觉任务中有一个重要的事实:虽然输入图像拥有矩形的形状

卷积神经网络CNN总结

从神经网络到卷积神经网络(CNN) 我们知道神经网络的结构是这样的:  那卷积神经网络跟它是什么关系呢? 其实卷积神经网络依旧是层级网络,只是层的功能和形式做了变化,可以说是传统神经网络的一个改进.比如下图中就多了许多传统神经网络没有的层次. 卷积神经网络的层级结构 数据输入层/ Input layer 卷积计算层/ CONV layer ReLU激励层 / ReLU layer 池化层 / Pooling layer 全连接层 / FC layer 1.数据输入层 该层要做的处理主要是对原始图

吴恩达deeplearning.ai将于11月6日开放第四课,主讲卷积神经网络

截止到2017年10月25日,吴恩达在Coursera上有3门深度学习课程: 第一课:神经网络和深度学习(Neural Networks and Deep Learning) 第二课:改善深度神经网络:调优超参数,正则化和优化(Improving Deep Neural Networks: Hyperparamater tuning, Regularization and Optimization) 第三课:构建机器学习项目(Structuring Machine Learning Projec

变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量.我下面会对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的工作中探讨日后的CNN变革方向. 注:水平所限,下面的见解或许有偏差,望大牛指正.另外只介绍其中具有代表性的模型,一些著名的模型由于原理相同将不作介绍,若有遗漏也欢迎指出. 一.卷积只能在同一组进行吗?-- Group convolution Group convolution 分组卷积,最早在AlexNet中

手把手教你用 TensorFlow 实现卷积神经网络(附代码)

在知乎上看到一段介绍卷积神经网络的文章,感觉讲的特别直观明了,我整理了一下.首先介绍原理部分. 通过一个图像分类问题介绍卷积神经网络是如何工作的.下面是卷积神经网络判断一个图片是否包含"儿童"的过程,包括四个步骤: ● 图像输入(InputImage) ● 卷积(Convolution) ● 最大池化(MaxPooling) ● 全连接神经网络(Fully-ConnectedNeural Network)计算. 首先将图片分割成如下图的重叠的独立小块:下图中,这张照片被分割成了77张大

看了这篇文章,了解深度卷积神经网络在目标检测中的进展

近些年来,深度卷积神经网络(DCNN)在图像分类和识别上取得了很显著的提高.回顾从 2014 到 2016 这两年多的时间,先后涌现出了 R-CNN,Fast R-CNN, Faster R-CNN, ION, HyperNet, SDP-CRC, YOLO,G-CNN, SSD 等越来越快速和准确的目标检测方法. 1. 基于 Region Proposal 的方法 该类方法的基本思想是:先得到候选区域再对候选区域进行分类和边框回归.  1.1 R-CNN[1] R-CNN 是较早地将 DCNN