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

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

引言

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

步幅和填充

让我们看回之前的转换层,在第一部分中我们提到过过滤器、接受场。现在,我们可以通过改变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等完全不同,那么你就要多培养你的层并冻结一些低级层。

原文发布于微信公众号 - AI科技评论(aitechtalk)

原文发表时间:2016-08-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据科学与人工智能

【算法】word2vec与doc2vec模型

小编邀请您,先思考: 1 word2vec算法原理是什么? 2 word2vec与doc2vec有什么差异? 3 如何做word2vec和doc2vec? 深度...

4257
来自专栏大数据挖掘DT机器学习

使用python+机器学习方法进行情感分析(详细步骤)

不是有词典匹配的方法了吗?怎么还搞多个机器学习方法。 因为词典方法和机器学习方法各有千秋。 机器学习的方法精确度更高,因为词典匹配会由于语义表达的丰富性而出现很...

6807
来自专栏IT派

入门 | 关于神经网络:你需要知道这些

我们简单回顾一下神经网络的发展历程,如果你想了解更多关于其发展历程的信息,请看这篇维基百科的文章(https://en.wikipedia.org/wiki/A...

762
来自专栏AI研习社

深度学习在文本分类中的应用

近期阅读了一些深度学习在文本分类中的应用相关论文(论文笔记:http://t.cn/RHea2Rs ),同时也参加了 CCF 大数据与计算智能大赛(BDCI)2...

4326
来自专栏信数据得永生

《Scikit-Learn与TensorFlow机器学习实用指南》第13章 卷积神经网络

38611
来自专栏大数据挖掘DT机器学习

隐马尔科夫模型 和动态贝叶斯网络

(一):定义及简介: 介绍(introduction) 通常我们总是对寻找某一段时间上的模式感兴趣,这些模式可能出现在很多领域:一个人在使用电脑的时候使用的命...

3745
来自专栏专知

【专知-PyTorch手把手深度学习教程02】CNN快速理解与PyTorch实现: 图文+代码

【导读】主题链路知识是我们专知的核心功能之一,为用户提供AI领域系统性的知识学习服务,一站式学习人工智能的知识,包含人工智能( 机器学习、自然语言处理、计算机视...

8979
来自专栏大数据文摘

卷积?神经?网络?教你从读懂词语开始了解计算机视觉识别最火模型 | CNN入门手册(上)

1073
来自专栏机器学习算法与Python学习

CS231n课程笔记翻译:图像分类笔记(上)

本文智能单元首发,译自斯坦福CS231n课程笔记image classification notes,由课程教师Andrej Karpathy授权进行翻译。本篇...

3356
来自专栏marsggbo

Andrew Ng机器学习课程笔记--week10(优化梯度下降)

本周主要介绍了梯度下降算法运用到大数据时的优化方法。 一、内容概要 Gradient Descent with Large Datasets Stochast...

1948

扫描关注云+社区