了解CNN这一篇就够了:卷积神经网络技术及发展
【新智元导读】深度学习很火,说起深度学习中一个很重要的概念——卷积神经网络(CNN)似乎也人人皆知。不过,CNN究竟是什么,涉及哪些概念,经过如何发展,真正要有逻辑地归纳一遍,估计不少人都说不清。日前,南洋理工大学研究人员梳理CNN发展历史,从基础组成部分讲起,介绍并探讨CNN在视觉识别方面的原理及应用,是系统深入理解CNN的好文。
![]() |
Recent Advances in Convolutional Neural Networks 卷积神经网络进展
摘要
过去几年,深度学习在解决诸如视觉识别、语音识别和自然语言处理等很多问题方面都表现出色。在不同类型的神经网络当中,卷积神经网络是得到最深入研究的。早期由于缺乏训练数据和计算能力,要在不产生过拟合的情况下训练高性能卷积神经网络是很困难的。标记数据和近来GPU的发展,使得卷积神经网络研究涌现并取得一流结果。本文中,我们将纵览卷积神经网络近来发展,同时介绍卷积神经网络在视觉识别方面的一些应用。
引言
卷积神经网络(CNN)是一种常见的深度学习架构,受生物自然视觉认知机制启发而来。1959年,Hubel & Wiesel [1] 发现,动物视觉皮层细胞负责检测光学信号。受此启发,1980年 Kunihiko Fukushima 提出了CNN的前身——neocognitron 。
20世纪 90 年代,LeCun et al. [3] 等人发表论文,确立了CNN的现代结构,后来又对其进行完善。他们设计了一种多层的人工神经网络,取名叫做LeNet-5,可以对手写数字做分类。和其他神经网络一样, LeNet-5 也能使用 backpropagation 算法训练。
CNN能够得出原始图像的有效表征,这使得CNN能够直接从原始像素中,经过极少的预处理,识别视觉上面的规律。然而,由于当时缺乏大规模训练数据,计算机的计算能力也跟不上,LeNet-5 对于复杂问题的处理结果并不理想。 2006年起,人们设计了很多方法,想要克服难以训练深度CNN的困难。其中,最著名的是 Krizhevsky et al.提出了一个经典的CNN 结构,并在图像识别任务上取得了重大突破。其方法的整体框架叫做 AlexNet,与 LeNet-5 类似,但要更加深一些。
AlexNet 取得成功后,研究人员又提出了其他的完善方法,其中最著名的要数 ZFNet [7], VGGNet [8], GoogleNet [9] 和 ResNet [10] 这四种。从结构看,CNN 发展的一个方向就是层数变得更多,ILSVRC 2015 冠军 ResNet 是 AlexNet 的20 多倍,是 VGGNet 的8 倍多。通过增加深度,网络便能够利用增加的非线性得出目标函数的近似结构,同时得出更好的特性表征。但是,这样做同时也增加了网络的整体复杂程度,使网络变得难以优化,很容易过拟合。
研究人员提出了很多方法来解决这一问题。在下面的章节中,我们会先列出CNN的组成部分,然后介绍CNN不同方面的最近进展,接着引入快速计算技巧,并探讨CNN在图像分类、物体识别等不同方面的应用进展,最后归纳总结。
基本组成部分
在不同的参考资料中,对 CNN的组成部分都有着不同的描述。不过,CNN的基本组成成分是十分接近的。 以分类数字的 LeNet-5 为例,这个 CNN 含有三种类型的神经网络层:
![]() |
卷积层:学会识别输入数据的特性表征
池化(Pooling):典型的操作包括平均 pooling [12] 和最大化 pooling [1315]
![]() |
全连接层:将卷积层和Pooling 层堆叠起来以后,就能够形成一层或多层全连接层,这样就能够实现高阶的推力能力。
完善 CNN
自从 2012 年 AlexNet 成功以后,研究人员设计了很多种完善 CNN 的方法。在这一节中,我们将从 6 方面进行介绍。
1. 卷积层
1)网络中的网络(Network in Network,NIN):由 Lin et al. [21] 提出的基本网络结构
![]() |
2) Inception module: 由 Szegedy et al. [9] 提出,是 NIN 的拓展
2. 池化层
池化层是CNN的重要组成部分,通过减少卷积层之间的连接,降低运算复杂程度。以下是常用的几种循环方法:
1)Lp 池化:Lp 池化是建立在复杂细胞运行机制的基础上,受生物启发而来 [24] [25]
2) 混合池化:受随机Dropout [16] 和 DropConnect [28], Yu et al. 启发而来
3)随机池化:随机循环 [30] 是受 drptout 启发而来的方法
4)Spectral 池化
3. 激活函数
常用的非线性激活函数有sigmoid、tanh、relu等等,前两者sigmoid/tanh比较常见于全链接层,后者relu常见于卷积层。
1) ReLU
2) Leaky ReLU
3) Parametric ReLU
4) Randomized ReLU
5) ELU
6) Maxout:
7) Probout
![]() |
1) Softmax loss
2) Hinge loss
3) Contrastive loss
5. 正则化
![]() |
1)DropOut
2) DropConnect
6. 优化
1) 初始化权重
2) 随机梯度下降
3) 批量标准化
4) Shortcut 连接
CNN 应用
A 图像分类
B 物体检测
C 物体追踪
D 姿态预估(Pose estimatation)
E 文本检测识别
F 视觉 saliency 检测
G 行动识别
H 场景标记
讨论
深度CNN在图像处理、视频、语音和文本中取得了突破。
本文种,我们主要从计算机视觉的角度对最近CNN取得的进展进行了深度的研究。我们讨论了CNN在不同方面取得的进步:比如,层的设计,活跃函数、损失函数、正则化、优化和快速计算。除了从CNN的各个方面回顾其进展,我们还介绍了CNN在计算机视觉任务上的应用,其中包括图像分类、物体检测、物体追踪、姿态估计、文本检测、视觉显著检测、动作识别和场景标签。
虽然在实验的测量中,CNN获得了巨大的成功,但是,仍然还有很多工作值得进一步研究。首先,鉴于最近的CNN变得越来越深,它们也需要大规模的数据库和巨大的计算能力,来展开训练。人为搜集标签数据库要求大量的人力劳动。所以,大家都渴望能开发出无监督式的CNN学习方式。
同时,为了加速训练进程,虽然已经有一些异步的SGD算法,证明了使用CPU和GPU集群可以在这方面获得成功,但是,开放高效可扩展的训练算法依然是有价值的。在训练的时间中,这些深度模型都是对内存有高的要求,并且消耗时间的,这使得它们无法在手机平台上部署。如何在不减少准确度的情况下,降低复杂性并获得快速执行的模型,这是重要的研究方向。 其次,我们发现,CNN运用于新任务的一个主要障碍是:如何选择合适的超参数?比如学习率、卷积过滤的核大小、层数等等,这需要大量的技术和经验。这些超参数存在内部依赖,这会让调整变得很昂贵。最近的研究显示,在学习式深度CNN架构的选择技巧上,存在巨大的提升空间。
最后,关于CNN,依然缺乏统一的理论。目前的CNN模型运作模式依然是黑箱。我们甚至都不知道它是如何工作的,工作原理是什么。当下,值得把更多的精力投入到研究CNN的基本规则上去。同时,正如早期的CNN发展是受到了生物视觉感知机制的启发,深度CNN和计算机神经科学二者需要进一步的深入研究。
有一些开放的问题,比如,生物学上大脑中的学习方式如何帮助人们设计更加高效的深度模型?带权重分享的回归计算方式是否可以计算人类的视觉皮质等等。
我们希望这篇文章不仅能让人们更好地理解CNN,同时也能促进CNN领域中未来的研究活动和应用发展
了解CNN这一篇就够了:卷积神经网络技术及发展相关推荐
- CV之CNN:基于tensorflow框架采用CNN(改进的AlexNet,训练/评估/推理)卷积神经网络算法实现猫狗图像分类识别
CV之CNN:基于tensorflow框架采用CNN(改进的AlexNet,训练/评估/推理)卷积神经网络算法实现猫狗图像分类识别 目录 基于tensorflow框架采用CNN(改进的AlexNet, ...
- Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet、AlexNet、VGG、NIN、GoogleNet、ResNet)——从代码认知CNN经典架构
Pytorch之CNN:基于Pytorch框架实现经典卷积神经网络的算法(LeNet.AlexNet.VGG.NIN.GoogleNet.ResNet)--从代码认知CNN经典架构 目录 CNN经典算 ...
- 卷积神经网络(CNN)开山之作——LeNet-5。卷积神经网络基本介绍。
目录 一.LeNet-5的背景 二.传统分类算法在图像识别上的弊端 三.卷积神经网络的3个基本特征 四.LeNet-5的网络结构 1.Input layer 2.Conv1 3.Subsampling ...
- 了解CNN这一篇就够了——关于卷积神经网络的介绍
https://www.toutiao.com/a6695023125253325320/ 关于CNN, 第1部分:卷积神经网络的介绍 CNN是什么?:它们如何工作,以及如何在Python中从头开始构 ...
- [深度学习-实战篇]情感分析之卷积神经网络-TextCNN,包含代码
0. 前言 在"卷积神经网络"中我们探究了如何使用二维卷积神经网络来处理二维图像数据.在之前的语言模型和文本分类任务中,我们将文本数据看作是只有一个维度的时间序列,并很自然地使用循 ...
- cnn风格迁移_机器学习:利用卷积神经网络实现图像风格迁移 (一)
相信很多人都对之前大名鼎鼎的 Prisma 早有耳闻,Prisma 能够将一张普通的图像转换成各种艺术风格的图像,今天,我们将要介绍一下Prisma 这款软件背后的算法原理.就是发表于 2016 CV ...
- 【Pytorch神经网络理论篇】 13 深层卷积神经网络介绍+池化操作+深层卷积神经网络实战
1 深层卷积神经网络概述 1.1 深层卷积神经网络模型结构图 1.1.1 深层卷积神经网络的正向结构构成剖析 输入层,将每个像素作为一个特征节点输入网络. 卷积层:由多个滤波器组合而成. 池化层:将卷 ...
- 菜菜学paddle第六篇:利用LeNet卷积神经网络识别手写数字
前言 LeNet是最早的卷积神经网络之一.1998年,Yann LeCun第一次将LeNet卷积神经网络应用到图像分类上,它通过连续使用卷积和池化层的组合提取图像特征,在手写数字识别任务中取得了巨大成 ...
- 【CNN分类】基于贝叶斯优化卷积神经网络BO-CNN实现故障诊断附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
最新文章
- 零基础学Python(第十九章 File操作·IO流补充章节)
- FineUI 选中多行获取行ID
- 《C和指针》读书笔记
- 如何快速上手 angular.js
- python matplotlib 柱状图点击事件_Python:matplotlib分组Bar柱状图
- 如何用命令行写java程序_如何用java实现doc命令行
- 个人网站的搭建(基于GitHub和Jekyll主题 )
- 软件工程项目之Windows Phone Application的一个设想
- VC++调试错误的解决方案
- 什么是matlab拟合工具箱,Matlab拟合工具箱的使用
- 数据结构——栈(链栈)
- 网站打不开的原因及解决办法
- android 拼音字母语音,拼音发音点读app
- 3、Maven核心程序解压与配置
- qualified-id in declaration before ‘(’ token
- Linux和Windows命令行中使用命令的输出(删除几天前的日志)
- 常见的网络安全攻击及防御技术概述
- FFT算法再学以及终于理解
- 阿里云服务器安装emqx和thingsboard
- c语言blue的大写字母,26个大写字母正确读法
热门文章
- 钉钉一键登录第三方网站
- 大模型的三大法宝:Finetune, Prompt Engineering, Reward
- 米思奇blynk_米思奇编程积木套件入门教程 项目一:点亮板载LED灯
- 获取mongodb数据变更_MongoDB Stream是如何实现完美数据增量迁移的?
- 应用单源最短路径算法解决套利交易问题
- 入职微软一月后的感悟,谈谈面试经历及入职体验
- 自然语言处理(NLP)——词向量
- 09、环境-配置docker阿里云镜像加速、通过阿里云控制台找到镜像加速器
- 视频教程-React.js框架技术-Java
- CSS对边框添加立体阴影效果