卷积神经网络在图像分类中的历史(1989 年至今)

发布时间:2026/5/17 0:07:16

卷积神经网络在图像分类中的历史(1989 年至今) 原文towardsdatascience.com/the-history-of-convolutional-neural-networks-for-image-classification-1989-today-5ea8a5c5fe20?sourcecollection_archive---------5-----------------------#2024-06-28深度学习和计算机视觉领域最伟大创新的视觉之旅。https://medium.com/neural.avb?sourcepost_page---byline--5ea8a5c5fe20--------------------------------https://towardsdatascience.com/?sourcepost_page---byline--5ea8a5c5fe20-------------------------------- Avishek Biswas·发布于 Towards Data Science ·阅读时间 15 分钟 ·2024 年 6 月 28 日–在卷积神经网络出现之前训练神经网络对图像进行分类的标准方法是将图像展平成像素列表并通过前馈神经网络来输出图像的类别。展平图像的问题在于它丢失了图像中至关重要的空间信息。1989 年Yann LeCun 和团队推出了卷积神经网络——过去 15 年来计算机视觉研究的基石与前馈网络不同卷积神经网络保持了图像的二维特性并能够空间处理信息在本文中我们将回顾卷积神经网络CNN在图像分类任务中的历史——从 90 年代的早期研究开始到 2010 年代中期的黄金时代那时许多最杰出的深度学习架构应运而生最后讨论当前卷积神经网络研究的最新趋势它们与注意力机制和视觉变换器展开竞争。查看此YouTube 视频视频通过动画形象地解释了本文中的所有概念。除非另有说明本文中使用的所有图像和插图均由我在制作视频版本时自行生成。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6f788fc5c6f6bbd352b7b138f5198dd1.png今天我们将讨论的论文卷积神经网络的基础CNN 的核心是卷积操作。我们扫描滤波器穿过图像并在每个重叠位置计算滤波器与图像的点积。这个输出结果称为特征图它捕捉了滤波器模式在图像中出现的程度和位置。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6a88bb9a19c81a4788e265c2bdfb7177.png卷积是如何工作的 — 卷积核在输入图像上滑动并在每个位置计算重叠部分点积— 最终输出一个特征图在卷积层中我们训练多个滤波器从输入图像中提取不同的特征图。当我们将多个卷积层按顺序堆叠并加入非线性激活函数时就得到了卷积神经网络CNN。所以每一层卷积层同时完成两项任务 —1.空间滤波即图像和卷积核之间的卷积操作和2.结合多个输入通道并输出一组新的通道。CNN 研究的 90集中在修改或改进这两项内容。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7a53ab3d99f44347e87950b7143ae2f8.pngCNN 的两大核心任务1989 年论文这篇 1989 年论文教我们如何通过反向传播从头开始训练非线性 CNN。它们输入 16x16 的灰度手写数字图像并通过两层卷积层每层有 12 个 5x5 的滤波器。滤波器在扫描过程中还以步长 2 进行移动。步长卷积对于降采样输入图像非常有用。经过卷积层后输出的特征图会被展平并传递到两个全连接网络输出 10 个数字的概率。通过 softmax 交叉熵损失函数网络被优化以预测手写数字的正确标签。每一层后还使用了 tanh 非线性激活函数——使得学习到的特征图更加复杂和富有表现力。这个网络仅有 9760 个参数相比今天那些包含数亿个参数的网络它是一个非常小的网络。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5f6ce141fce07f95a9408e58d031bf95.png1989 年的原始 CNN 架构偏向性归纳偏向性归纳Inductive Bias是机器学习中的一个概念指的是我们故意在学习过程中引入特定的规则和限制以使我们的模型避免过度泛化更加接近符合人类理解的解决方案。当人类进行图像分类时我们也会进行空间过滤以寻找共同的模式形成多个表示然后将它们结合起来做出预测。CNN 架构正是为了复制这一过程而设计的。在前馈网络中每个像素都被视为独立的特征因为层中的每个神经元都与所有像素相连——而在 CNN 中由于相同的滤波器扫描整个图像因此参数共享更多。归纳偏置使得 CNN 在数据需求上也更为节省因为它们通过网络设计能够免费获得局部模式识别而前馈网络则需要从头开始通过训练周期学习这些模式。Le-Net 51998 年https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d625a2448a44d6150887d3d8a598512d.pngLenet-5 架构来源Le-Net-5 论文1998 年Yann LeCun 及其团队发布了Le-Net 5——一个更深、更大的 7 层 CNN 模型网络。他们还使用了最大池化Max Pooling通过从 2x2 滑动窗口中提取最大值来对图像进行下采样。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/59cfe79ef5bedf3c1b0dd5b33ae17f44.pnghttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1f847d9fc9f1eab0131f8b91092d006d.pngMax Pooling 如何工作左侧以及随着 CNN 增加更多层局部感受野如何增大右侧局部感受野注意当你训练一个 3x3 卷积层时每个神经元都与原始图像中的一个 3x3 区域相连——这就是神经元的局部感受野——该神经元从中提取模式的图像区域。当我们通过另一个 3x3 层传递这个特征图时新的特征图会间接地创建一个更大的 5x5 区域的感受野来源于原始图像。此外当我们通过最大池化或步幅卷积对图像进行下采样时感受野也会增加——使得更深层的网络能够更加全局地访问输入图像。因此CNN 中的早期层只能捕捉到低级细节如特定的边缘或角落而后续层则捕捉到更为广泛的全局级别的模式。The Draught (1998–2012)尽管 Le-Net-5 非常令人印象深刻但 2000 年代初期的研究人员仍然认为神经网络在计算上非常昂贵且训练数据需求量大。另一个问题是过拟合——复杂的神经网络可能只是记住整个训练数据集而无法对新的未见数据集进行泛化。研究人员因此转向传统的机器学习算法如支持向量机这些算法在当时较小的数据集上表现出了更好的性能且计算需求远低于神经网络。ImageNet 数据集2009 年ImageNet 数据集在 2009 年开源——当时包含了 320 万张标注图像覆盖了 1000 多个不同类别。如今它已经拥有超过 1400 万张图像和超过 2 万个标注的不同类别。从 2010 年到 2017 年每年都会举行一个叫做ILSVRC的大型比赛研究小组们会发布模型以打破 ImageNet 数据集子集上的基准。在 2010 年和 2011 年传统的机器学习方法如支持向量机SVM获胜——但从 2012 年开始比赛的焦点就转向了卷积神经网络CNN。排名不同网络的指标通常是 top-5 错误率——即衡量真实类别标签未能出现在网络预测的前 5 个类别中的比例。AlexNet (2012)AlexNet由 Geoffrey Hinton 博士及其团队提出是 2012 年 ILSVRC 的冠军测试集的 top-5 错误率为 17%。以下是 AlexNet 的三大主要贡献。1. 多尺度卷积核AlexNet 在 224x224 的 RGB 图像上进行训练并在网络中使用了多种卷积核大小——分别是 11x11、5x5 和 3x3 卷积核。像 Le-Net 5 这样的模型只使用了 5x5 卷积核。较大的卷积核计算开销更大因为它们训练了更多的权重但也能从图像中捕捉到更多的全局模式。由于这些大卷积核AlexNet 拥有超过 6000 万个可训练参数。然而所有这些复杂性可能会导致过拟合。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3dbfe9a516bc0af4053955d3cbd0ae81.pngAlexNet 从较大的卷积核11x11开始并为更深的层次减少卷积核大小至 5x5 和 3x3图片来源作者2. Dropout为了缓解过拟合AlexNet 采用了一种叫做 Dropout 的正则化技术。在训练过程中每一层的部分神经元会被设为零。这可以防止网络过度依赖某些特定的神经元或神经元组来进行预测从而鼓励所有神经元学习对分类有用的通用有意义特征。3. RELUAlexNet 还将 tanh 非线性函数替换为 ReLU。ReLU 是一种激活函数它将负值变为零保留正值不变。由于当 x 值过高或过低时tanh 函数的梯度会变得很小导致优化过程变慢因此它通常会在深度网络中饱和。相比之下ReLU 提供了稳定的梯度信号使得训练速度比 tanh 快约 6 倍。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/46bebdc63f8f31a04b7b17236f3a5c49.pnghttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/9853cded8ce78082f5567793b0d22c30.pnghttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/40d276fedfc70960ef639c45f76d221a.pngRELU、TANH以及 RELU 带来的差异有多大图片来源中间大数据中的人工智能右侧Alex-Net 论文AlexNet 还引入了局部响应归一化Local Response Normalization以及分布式 CNN 训练策略。GoogleNet / Inception20142014 年GoogleNet 的论文在 ImageNet 上取得了 6.67%的 Top-5 错误率。GoogLeNet 的核心组件是Inception 模块。每个 Inception 模块由不同滤波器大小1x1、3x3、5x5和最大池化层的并行卷积层组成。Inception 将这些卷积核应用于相同的输入然后将它们连接起来结合了低级特征和中级特征。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/997501a2e4dd36f4519c2d85b202386a.png一个 Inception 模块1x1 卷积它们还使用了 1x1 卷积层。每个 1x1 卷积核首先对输入通道进行缩放然后将它们结合在一起。1x1 卷积核通过与固定值相乘每个像素——这也是它被称为点卷积的原因。虽然像 3x3 和 5x5 这样的更大卷积核同时进行空间过滤和通道组合但 1x1 卷积核仅适用于通道混合而且在权重数量较少的情况下非常高效。例如一个 3x4 的 1x1 卷积层网格只需训练*(1x1 x 3x4 )* 12 个权重——但是如果使用 3x3 卷积核则需要训练*(3x3 x 3x4 )* 108 个权重。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6f234f8f634cf640af57b563c47cb50d.pnghttps://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/65f6501cf00fd0cbb64593fff021f896.png1x1 卷积核与更大卷积核左和使用 1x1 卷积核的降维右降维GoogleNet 使用 1x1 卷积层作为降维方法在对这些低维特征图进行 3x3 和 5x5 卷积的空间过滤之前先降低通道数量。这有助于减少可训练权重的数量相比于 AlexNet它大大减少了权重数量。VGGNet2014VGG 网络指出我们不需要像 5x5 或 7x7 这样的更大卷积核所需的只是 3x3 卷积核。两个 3x3 卷积层的感受野与单个 5x5 卷积层相同。三个 3x3 卷积层的感受野与单个 7x7 卷积层相同。深度 3x3 卷积层捕捉到的感受野与更大卷积核相同但参数更少一个 5x5 滤波器训练 25 个权重——而两个 3x3 滤波器只需训练 18 个权重。类似地一个 7x7 滤波器训练 49 个权重而三个 3x3 卷积层只需训练 27 个权重。使用深度的 3x3 卷积层长期以来成为了 CNN 架构的标准做法。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/cfed290a6af3ba3dee066dc01e5f4633.png批量归一化2015深度神经网络在训练过程中可能会遇到一个问题称为**“内部协方差偏移”**。由于网络的早期层在不断训练后续层需要持续适应从前面层接收到的不断变化的输入分布。批归一化旨在通过在训练过程中将每层的输入归一化为零均值和单位标准差从而抵消这个问题。批归一化或 BN 层可以应用于任何卷积层之后。在训练过程中它会减去特征图在小批量维度上的均值并除以标准差。这意味着每一层在训练过程中将看到一个更加平稳的单位高斯分布。批归一化的优势收敛速度约为原来的 14 倍让我们使用更高的学习率并且使网络对初始权重具有鲁棒性。ResNets (2016)深度网络在做恒等映射时遇到困难想象你有一个浅层神经网络它在分类任务上表现出色。结果发现如果我们在这个网络上加上 100 个新的卷积层模型的训练准确性可能会下降这相当反直觉因为这些新层只需要做的就是复制浅层网络每层的输出——至少能够匹配原始的准确性。实际上深度网络在训练时往往非常难以调优因为在通过许多层反向传播时梯度可能会饱和或变得不稳定。在 Relu 和批归一化的帮助下我们当时能够训练 22 层深的 CNN —— 微软的优秀团队在 2015 年推出了ResNets使我们能够稳定地训练 150 层的 CNN。他们是如何做到的残差学习输入通常会通过一个或多个 CNN 层但在最后原始输入会被加回到最终输出。这些块被称为残差块因为它们不需要像传统意义上那样学习最终的输出特征图——它们只是必须加到输入上的残差特征以便得到最终的特征图。如果中间层的权重变为零那么残差块就会返回恒等函数——意味着它将能够轻松复制输入 X。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b67371d5f87b5198e3e1a03c3a62ef15.png残差网络简单的梯度流在反向传播过程中梯度可以通过这些快捷路径直接流向模型的早期层从而更快地到达有助于防止梯度消失问题。ResNet 将许多这样的块堆叠在一起形成真正深的网络而不会损失准确性https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/55b293233faca9c8f22ed808e1dd8c4f.png来自 ResNet 论文凭借这一显著的改进ResNet 成功训练了一个 152 层的模型创造了打破所有纪录的 top-5 错误率DenseNet2017https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ef9fa851e3acd1c08106018c2f39b471.pngDense-Nets 也增加了连接早期层与后期层的捷径路径。DenseNet 模块训练了一系列卷积层每一层的输出都会与模块中每个先前层的特征图拼接之后再传递给下一层。每一层仅向网络的“集体知识”中添加少量的新特征图随着图像在网络中的流动DenseNet 的网络信息流和梯度流得到了改善因为每一层可以直接访问来自损失函数的梯度。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/164f7f2c97a282693b45bcb96e2b21d7.pngDense Nets压缩与激励网络2017SEN-NET 是 ILSVRC 比赛的最终获胜者提出了将压缩与激励层引入到卷积神经网络CNN中。SE 模块旨在显式地建模特征图中所有通道之间的依赖关系。在普通的 CNN 中特征图的每个通道是相互独立计算的而 SEN-Net 采用类似自注意力的方法使得特征图中的每个通道能够感知输入图像的全局特性。SEN-Net 赢得了 2017 年 ILSVRC 比赛的最终胜利且其中一个包含 154 层的 SenNet ResNet 模型创下了令人惊讶的 top-5 错误率 4.47%。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6b871751ded64eef0b9db11f9795ad28.pngSEN-NET压缩操作压缩操作通过全局平均池化将输入特征图的空间维度压缩成一个通道描述符。由于每个通道包含捕捉图像局部特性的神经元压缩操作将关于每个通道的全局信息进行积累。激励操作激励操作通过与来自压缩操作获得的通道描述符按通道进行乘法重新调整输入特征图的尺度。这有效地将全局级别的信息传播到每个通道——使每个通道能够理解特征图中其他通道的上下文。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c37db341a2da8c50a202b6e36a3c93a6.png压缩与激励模块MobileNet2017卷积层有两个功能——1过滤空间信息2按通道合并信息。MobileNet 论文使用了深度可分离卷积这是一种将这两种操作分开到两个不同层次的技术——使用深度卷积进行过滤使用逐点卷积进行通道合并。深度卷积https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/1b885d58c9a73b3b1a51592e2d9e1966.png深度可分离卷积给定一个具有 M 个通道的特征图集首先它们使用深度卷积层训练 M 个 3x3 卷积核。与普通卷积层对所有特征图进行卷积不同深度卷积层训练的滤波器仅对每个特征图单独进行卷积。其次它们使用 1x1 逐点卷积滤波器来混合所有这些特征图。像这样分开滤波和组合步骤极大地减少了权重数量使得网络变得非常轻量化同时仍保持性能。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/66344afbabc2e1473b31832405fdda81.png为什么深度可分离层减少训练权重MobileNetV2 (2019)2018 年MobileNetV2 通过引入两个创新——线性瓶颈Linear Bottlenecks和倒残差Inverted residuals——改进了 MobileNet 架构。线性瓶颈MobileNetV2 使用 1x1 逐点卷积进行降维然后是深度卷积层进行空间滤波接着再通过一个 1x1 逐点卷积层扩展通道回原来的维度。这些瓶颈不经过 RELU而是保持线性。RELU 会将降维步骤中产生的所有负值归零这可能导致网络丢失重要信息尤其是在这些低维空间大部分为负值时。线性层防止了在这一瓶颈过程中丢失过多信息。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/8950a4c49cce3be0d309a0c1db0f9c82.png每个特征图的宽度旨在显示相对的通道维度。倒残差Inverted Residuals第二个创新被称为倒残差。通常残差连接发生在具有最高通道数的层之间但作者在瓶颈层之间添加了捷径。瓶颈层捕捉了低维潜在空间中的相关信息而这些层之间信息和梯度的自由流动是至关重要的。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c2e4c4eae0d3d37c24af81e463c38f2b.png视觉变换器 (2020)视觉变换器Vision Transformers简称 ViTs证明了变换器在图像分类任务中确实能够超越最先进的卷积神经网络CNN。变换器和注意力机制提供了一种高度可并行化、可扩展的通用架构用于建模序列。神经注意力是深度学习中的一个完全不同的领域本文不会涉及但你可以在这个 YouTube 视频中了解更多。ViTs 使用图块嵌入和自注意力输入图像首先被分割成一系列固定大小的图块。每个图块都通过卷积神经网络CNN或经过一个线性层独立地嵌入成一个固定大小的向量。然后这些图块嵌入和它们的位置编码作为一个令牌序列输入到基于自注意力的变换器编码器中。自注意力模型会建模所有图块之间的关系并输出新的更新后的图块嵌入这些嵌入能够理解整个图像的上下文。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/fc228d2bbe95cf7993f257be0bc535bb.png视觉变换器。每个自注意力层通过图像的全局上下文进一步对每个块的嵌入进行上下文化。归纳偏置与普适性当 CNN 引入了多个关于图像的归纳偏置时变换器则相反——没有局部化没有滑动卷积核——它们依赖于普适性和原始计算来建模图像中所有块之间的关系。自注意力层允许图像中所有块之间的全局连接无论它们在空间上相距多远。归纳偏置在较小的数据集上表现良好但变换器的优势在于大规模训练数据集最终一个通用的框架将战胜 CNN 所提供的归纳偏置。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/6a450fb97b290d4419671ac36c27f673.png卷积层与自注意力层ConvNext —2020 年代的卷积网络(2022)在这篇文章中加入 Swin Transformers 是个很好的选择但那是另一个话题因为这是关于 CNN 的文章让我们集中讨论最后一篇 CNN 相关的论文。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/3a0f9822f909de4a7b52dfe04861be4e.png像 VITs 一样对图像进行分块ConvNext 的输入遵循一种受视觉转换器启发的图像分块策略。一个 4x4 的卷积核步幅为 4创建了一个下采样的图像并输入到网络的其余部分。深度可分离卷积受 MobileNet 启发ConvNext 使用深度可分离卷积层。作者还假设深度卷积类似于自注意力中的加权和操作这种操作在每个通道上进行仅在空间维度上混合信息。此外1x1 的逐点卷积类似于自注意力中的通道混合步骤。更大的卷积核尺寸自 VGG 以来CNN 一直在使用 3x3 的卷积核而 ConvNext 提出了更大的 7x7 滤波器以捕捉更广泛的空间上下文尽量接近 ViTs 所捕捉的完全全局上下文同时保留 CNN 的本地化特性。还有一些其他的改进比如使用受 MobileNetV2 启发的反向瓶颈、GELU 激活函数、使用层归一化而非批量归一化等这些都塑造了 ConvNext 架构的其余部分。可扩展性ConvNext 通过深度可分离卷积提供了更高的计算效率并且在高分辨率图像上比变换器更具可扩展性——这是因为自注意力在序列长度上按平方级别扩展而卷积则不受此限制。https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/273120ccbef227363f48781e3fc84edf.png最终思考卷积神经网络CNN的历史教会了我们很多关于深度学习、归纳偏置以及计算本质的知识。最终谁会胜出是很有趣的——是卷积网络的归纳偏置还是变换器的普适性。一定要查看配套的 YouTube 视频以便直观地了解这篇文章及下列列出的相关论文。参考文献带反向传播的卷积神经网络CNN with Backprop1989 年yann.lecun.com/exdb/publis/pdf/lecun-89e.pdfLeNet-5vision.stanford.edu/cs598_spring07/papers/Lecun98.pdfAlexNetproceedings.neurips.cc/paper_files/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdfGoogleNetarxiv.org/abs/1409.4842VGGarxiv.org/abs/1409.1556批量归一化Batch Normarxiv.org/pdf/1502.03167ResNetarxiv.org/abs/1512.03385DenseNetarxiv.org/abs/1608.06993MobileNetarxiv.org/abs/1704.04861MobileNet-V2arxiv.org/abs/1801.04381视觉变换器Vision Transformersarxiv.org/abs/2010.11929ConvNextarxiv.org/abs/2201.03545挤压与激励网络Squeeze-and-Excitation Networkarxiv.org/abs/1709.01507Swin Transformersarxiv.org/abs/2103.14030

相关新闻