Top100论文导读:深入理解卷积神经网络CNN(Part Ⅰ)

2024-01-19 21:20

本文主要是介绍Top100论文导读:深入理解卷积神经网络CNN(Part Ⅰ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源:阿里云栖社区

https://yq.aliyun.com/articles/74729

 

 

 

更多深度文章,请关注:https://yq.aliyun.com/cloud

作者信息

Adrian Colyer:morning paper编辑、Accel Partners投资合伙人、SpringSource首席技术官、VMware技术总监。

领英:http://www.linkedin.com/in/adriancolyer/

Twitter:https://twitter.com/adriancolyer

 

本文介绍清单“ Top100深度学习论文” 中几篇文章,现在将从“卷积神经网络模型”部分开始研究相关论文,PartⅡ内容见下篇博客。首先是:

ImageNet classification with deep convolutional neural networks,Krizhevsky,2012
Maxout networks,Goodfellow,2013
Network in network,Lin,2013

OverFeat:Integration recognition,localization and detection using convolutional neural networks,Sermanent,2013

在深入研究上述论文前,建议可以阅读Ujjwal Karn的优秀博客An intuitive explanation of convolutional neural networks ,该博客为卷积网络如何工作提供了一个很好的背景。言归正传,下面一起深入到卷积神经网络的世界中吧。


使用卷积神经网络进行ImageNet分类
这篇有影响力的论文可谓是再次掀起了深度学习的热潮,正是Hinton等研究员的坚守使得神经网络焕发出第二春。该篇文章使用深层卷积神经网络来开展整个工作流程并用于图像处理,两个因素使之成功:首先,提供足够大的数据集(具体来说,引入了数百万张图像的ImageNet,而以前最大的数据集只有数万其次,开发出足够强大的GPU有效地训练大型网络。
什么使得CNN适合处理图像数据?
可以通过改变卷积核的尺寸和特征图数来控制其性能,并且还能对图像的性质做出大体上正确的估计。与具有相似大小层次的标准前馈神经网络相比,CNN具有更少的连接和参数,因此它们更容易训练。
Krizhevsky等人构建的网络有8层——5个卷积层和3个全连接层。最后一层的输出是1000维的softmax,它产生1000个类标签上的分布。另外由于网络太大而不能容纳在单个GPU的内存中,所以使用两个GPU进行训练。 

3665420f3cb96a6827640fa208955fb51bb8450f

作者列出了他们认为特别重要的四个模型架构:
1. 使用ReLU激活函数(而不是tanh)。“ 使用ReLU的深层卷积神经网络的训练速度比使用tanh的网络快几倍,更快的学习对大型数据集训练的大型模型的性能有很大的影响 ”
2. 使用多个GPU,并且只在某些层中进行跨GPU通信。该方案与仅在一个GPU上训练的网络相比,分别将top-1和top-5错误率降低了1.7%和1.2%。
3. 使用局部响应标准,其“ 由真实神经元中发现的类型启发实现的侧向抑制形式,为使用不同内核计算的神经元输出之间的活动创造竞争”。
4. 使用重叠的池化,假设池化层的大小为z x z,间隔之间像素分开,传统的池化之间没有重叠,作者使用有重叠的池化后将top-1和top-5错误率分别降低了0.4%和0.3%。 

3a03c6d5ae274fec26c12ce6bb9db3ccd888ebdf

在训练期间使用Dropout和数据增加(平移,反转等操作降低过拟合
最终结果:
在ILSVRC2010上,论文网络实现了top-1和top-5测试的错误率分别为37.5%和17.0%;在ILSVRC2012中,网络实现了top-5测试错误率为15.3%,而第二名才为26.2%,这个巨大的差距拉开了深度学习革命的帷幕。
研究结果表明,一个大而深的卷积神经网络能够在使用纯监督学习的高度挑战的数据集上取得创纪录的成果。值得注意的是,改变网络结构,网络性能可能会降低。更深入地了解本文可以参阅该博客

Maxout网络

Maxout网络Dropout配套使用的,训练使用Dropout就像训练指数数量的模型并共享相同的参数。Maxout网络是标准的多层感知器或深层CNN,它们使用称为Maxout单元的特殊激活函数,Maxout单元的输出是其输入的最大值。
在卷积网络中,可以通过在k个仿射特征图上获取最大值来构建最大特征图。当训练使用Dropout时,在乘以权重之前不会将丢失的输入进行最大操作。
Maxout能对任意凸函数进行分段线性拟合,如下所示。 

b6e874fa7a4837997c73eaac1fceb2226f286764

在评估中,Maxout和Dropout的组合实现了MNIST、CIFAR10、CIFAR100和SVHN(街景房屋号码)的最好分类表现。
为什么它工作得很好?总结起来就是Dropout在更深的架构中进行精确的模型平均,线性运算和Maxout网络可以学习利用Dropout的近似模型平均技术;此外,零点饱和的整流器单元在Dropout训练中更常见,零值可以阻止梯度流过单元,从而难以在训练中改变,并再次变为活动状态,而Maxout不会受到此问题的影响。
网络中的网络NIN
传统的卷积层通过对感受野应用线性滤波器,然后进行非线性激活来应用卷积,其输出为特征图。本文指出这种过程不能学习在非线性概念之间区分好的表示。
CNN中的卷积滤波器是基于数据块的广义线性模型(GLM),这种抽象级别较低,另外抽象意味着该特征对于相同概念的变体是不变的。即使Maxout网络在位于输入空间中的凸集中潜在概念实例强加了约束,并进行分段线性拟合,但关键问题是输入特征是否确实需要非线性函数,以便最好地表示其中包含的概念。作者声称他们这样做:
相同概念的数据通常存在于非线性流形上,因此捕获这些概念的表示通常是输入的高度非线性函数。NIN中,GLM被替换为通用非线性函数近似器的微网结构。在论文中,选择多层感知器(MLP)作为微网络的实例化。 

d0e8d52896363f5910230d45286c266661eb871e

第一个大的创新点是用迷你多层感知器网络(称为mlpconv层)代替线性卷积层。由于这种网络擅长学习,所以让mlpconv学习最好的卷积函数学习的内容。由于mlpconv层位于较大的网络模型中,因此整体方法称为”网络中的网络”。 

1e912f66af86fcce35b1612636d1ca2556de73f6

第二个变化改变了传统卷积网络中的最后一层
传统的CNN中采用全连接层进行分类,NIN直接从最后一个mlpconv层输出特征图的空间平均值作为全局平均池化层的类别置信度然后将所得到的向量输入到softmax简单来讲就是用全局平均池化代替全连接层

在CIFAR10中,作者以超过1%的性能提升击败了当时最好的表现。 

898624c392b89c711c694f9dfff37ea76fef9ca1

在CIFAR100上,作者也以超过1%的性能提升击败了当时最好的表现;在SVHN数据集与MNIST数据集上也获得了良好的效果,但不是最好。 

OverFeat:使用卷积网络的集成识别、定位和检测
OverFeat展示了如何将基于CNN的分类器用于分类、定位和检测任务,其性能在ILSVRC 2013数据集上分类排名第四,定位和检测都排第一。我们都知道分类问题就是图片是什么物体,但对于定位和检测问题不是很熟悉。检测就是给定一张图片,把图片中的所有物体全部找出来;定位就像分类,网络也必须产生一个显示检测对象的边界框:

324dc30abf417d87949a92f0a143a90c854f7898

检测问题涉及可能包含许多小对象的图像,网络必须检测每个对象并绘制其边界框: 

bf8748ae6155dab07d6d2f93eba1172931f2665e

本文提出了一种新的ConvNet综合方法,主要是通过卷积网络对图像中的物体进行分类、定位和检测,并提高所有任务的精度。另外还通过积累预测的边界框来引入一种新颖的定位和检测方法。论文中有很多细节,在这里就不一一详细介绍,感兴趣的话建议阅读论文的原文。
由于感兴趣的目标可以在图像中的大小和位置上有明显变化,所以OverFeat在图像中的多个位置以滑动窗方式和多尺度应用ConvNet,然后训练系统以产生包含目标的边界框的位置及尺寸的预测。在每个位置和大小上累积每个目标类别的预测。

分类
该模型是基于Krizhevsky提出的网络,网络的前五层没有使用对比度归一化,池化区域是非重叠并使用较小的步长(2而不是4)。6种不同的输入尺寸导致第5层有不同分辨率的特征映射,然后将其池化后送入分类器。 

b67a1c3e97cf086afe3003e7d1b330c08925be36

下图总结了在第5层特征图上构建分类器方法: 

05038a10d480128fc0ab9ed79846a151f2d0b341

从直观上来看,网络分为两部分——特征提取层(15层)和分类器层(6层输出层)。在特征提取部分中,滤波器在整个图像进行移动卷积计算;然而,对于网络的分类器部分,这些原理是相反的。

定位
对于定位而言,分类器层被训练为在每个空间位置和尺度上预测边界框的回归网络代替,然后将回归预测与每个位置的分类结果相结合。多尺度训练可确保预测在尺度上正确匹配,并以指数方式增加合并预测的置信度。
边界框根据其中心之间的距离及其区域的交点进行组合,最后通过采用具有最大类分数的合并边界框进行最终预测。下图给出了该过程的可视化概述: 

99ee1441b4a512055e44abf925e24a903fea4301

检测
检测训练类似于分类训练,但当没有目标存在时,还需要预测后台任务。
传统上,反例最初被随机地用于训练,然后将最有争议的负误差添加到训练集中,通过选择每个图像的一些有趣的反例(例如随机的或最有争议的),对苍蝇进行消极训练,这种方法在计算上更昂贵,但使得程序更简单。 

附件为原文的pdf

本文由北邮@爱可可-爱生活老师推荐,阿里云云栖社区组织翻译。

文章原标题《Convolutional neural networks, Part 1》,作者:Adrian Colyer,译者:海棠,审阅:

文章为简译,更为详细的内容,请查看原文

 

这篇关于Top100论文导读:深入理解卷积神经网络CNN(Part Ⅰ)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/623728

相关文章

一文深入详解Python的secrets模块

《一文深入详解Python的secrets模块》在构建涉及用户身份认证、权限管理、加密通信等系统时,开发者最不能忽视的一个问题就是“安全性”,Python在3.6版本中引入了专门面向安全用途的secr... 目录引言一、背景与动机:为什么需要 secrets 模块?二、secrets 模块的核心功能1. 基

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.

MySQL数据库约束深入详解

《MySQL数据库约束深入详解》:本文主要介绍MySQL数据库约束,在MySQL数据库中,约束是用来限制进入表中的数据类型的一种技术,通过使用约束,可以确保数据的准确性、完整性和可靠性,需要的朋友... 目录一、数据库约束的概念二、约束类型三、NOT NULL 非空约束四、DEFAULT 默认值约束五、UN

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

一文带你深入了解Python中的GeneratorExit异常处理

《一文带你深入了解Python中的GeneratorExit异常处理》GeneratorExit是Python内置的异常,当生成器或协程被强制关闭时,Python解释器会向其发送这个异常,下面我们来看... 目录GeneratorExit:协程世界的死亡通知书什么是GeneratorExit实际中的问题案例

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT