了解CNN这一篇就够了:卷积神经网络技术及发展

本文综述了卷积神经网络(CNN)近年来的发展历程及其在视觉识别领域的应用。从CNN的基础部分入手,介绍并探讨了CNN原理及在图像分类、物体检测等任务中的最新进展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【新智元导读】深度学习很火,说起深度学习中一个很重要的概念——卷积神经网络(CNN)似乎也人人皆知。不过,CNN究竟是什么,涉及哪些概念,经过如何发展,真正要有逻辑地归纳一遍,估计不少人都说不清。日前,南洋理工大学研究人员梳理CNN发展历史,从基础组成部分讲起,介绍并探讨CNN在视觉识别方面的原理及应用,是系统深入理解CNN的好文。
Recent Advances in Convolutional Neural Networks

  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 含有三种类型的神经网络层:

【珍藏】了解CNN这一篇就够了:卷积神经网络技术及发展

  卷积层:学会识别输入数据的特性表征   

       池化(Pooling):典型的操作包括平均 pooling [12] 和最大化 pooling [1315]

全连接层:将卷积层和Pooling 层堆叠起来以后,就能够形成一层或多层全连接层,这样就能够实现高阶的推力能力。

  全连接层:将卷积层和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) 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

4. Loss 函数
4. Loss 函数

  1) Softmax loss   

      2) Hinge loss  

   3) Contrastive loss   

5. 正则化

1)DropOut

       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) 的发展历程 卷积神经网络(Convolutional Neural Network, CNN)作为深度学习的重要分支,其发展经历了多个阶段,并在理论和技术上不断取得突破。以下是关于 CNN 发展历程的关键节点及其重要进展: #### 早期研究与灵感来源 CNN 的概念最早可以追溯到生物视觉系统的启发。Hubel 和 Wiesel 在猫的初级视皮层的研究表明,某些神经元对特定方向的边缘敏感[^4]。这一发现奠定了局部感受野的概念基础,即后续 CNN 中使用的“局部感知区域”。这些研究成果为后来人工神经网络的设计提供了重要的生物学依据。 #### LeNet-5:首个成功实现的 CNN 架构 Yann LeCun 提出了著名的 LeNet-5 模型,这是最早的用于实际应用的 CNN 结构之一。LeNet-5 主要应用于手写字符识别任务,展示了如何利用卷积层和池化层提取图像的空间特征并减少计算复杂度[^1]。该模型证明了 CNN 对于二维数据的强大表征能力,同时也标志着多层层次结构在网络设计中的首次成功实践[^2]。 #### AlexNet:推动现代 CNN 走向成熟 随着 GPU 计算能力和大数据集的兴起,Alex Krizhevsky 等人在 ImageNet 大规模视觉挑战赛中提出了 AlexNet。这个架构引入了许多创新技术,包括更深的网络层数、ReLU 激活函数以及 Dropout 正则化方法。AlexNet 不仅大幅提升了图像分类性能,还开启了深度学习的新纪元,促使更多研究人员投入到 CNN 领域的研究当中。 #### 后续优化与发展 此后,许多改进版的 CNN 架构相继问世,进一步增强了模型的表现力: - **VGGNet**: 使用连续的小尺寸卷积核代替大尺寸卷积核,简化了网络结构的同时保持高效性; - **GoogLeNet / Inception Series**: 利用 inception module 实现不同尺度的感受野融合,从而提高特征表达多样性; - **ResNet**: 解决了深层网络训练困难的问题,通过残差连接使得极深网络成为可能; 上述进步共同构成了当前最先进的计算机视觉解决方案的基础框架[^3]。 ```python import torch.nn as nn class SimpleCNN(nn.Module): def __init__(self): super(SimpleCNN, self).__init__() self.conv_layer = nn.Conv2d(in_channels=3, out_channels=64, kernel_size=(3, 3)) self.relu_activation = nn.ReLU() def forward(self, x): x = self.conv_layer(x) output = self.relu_activation(x) return output ``` 以上代码展示了一个简单的 CNN 层定义过程,其中包含了基本的操作流程如卷积运算及 ReLU 激活函数的应用。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值