文章目录
1. 前言
自 20 世纪 50 年代以来,人工智能研究人员一直在寻求开发能够理解视觉数据的系统。这一努力催生了计算机视觉领域。2012 年,多伦多大学的研究人员开发出 AlexNet,这是一个人工智能模型,其性能远远优于以前的图像识别算法,这是一个重大突破。AlexNet 由 Alex Krizhevsky 创建,以 85%
的准确率赢得了 2012 年 ImageNet 竞赛,远远超过亚军的 74%
。这一成功是由 CNN 推动的,这是一种模仿人类视觉的神经网络。
多年来,CNN 已成为图像分类、对象检测和分割等计算机视觉任务的基础。现代 CNN 使用 Python 等编程语言实现,并利用高级技术从图像中提取和学习特征。超参数、优化技术和正则化方法对于有效训练这些模型至关重要。
自 AlexNet 以来,人们开发了许多改进和新架构,例如 VGG、ResNet 和 EfficientNet,突破了 CNN 所能实现的极限。如今,CNN 在许多应用中都必不可少,从自动驾驶到医学图像分析。
此外,在本文中,您将了解 CNN 机器学习、CNN 算法和 CNN 深度学习,我们已涵盖这些主题,并且在文章结束时,您将清楚地了解卷积神经网络。
本章节我们学习的目标:
- 了解什么是卷积神经网络 (CNN) 以及它们如何模仿人类视觉来处理视觉数据。
- 探索 CNN 的关键组件,包括卷积层、池化层和全连接层。
- 了解 CNN 如何应用于各种计算机视觉任务,例如图像分类、对象检测和分割。
- 了解超参数、优化技术和正则化方法在有效训练 CNN 模型中的重要性。
2. 什么是卷积神经网络(CNN)?
在深度学习中,卷积神经网络 (CNN/ConvNet
) 是一类深度神经网络,最常用于分析视觉图像。CNN 架构使用一种称为卷积的特殊技术,而不是像传统神经网络那样仅仅依赖于矩阵乘法。卷积网络使用一种称为卷积的过程,该过程结合了两个函数来显示一个函数如何改变另一个函数的形状。
但我们无需深入数学就能理解 CNN 是什么或它是如何工作的。归根结底,卷积网络的作用是将图像简化为更易于处理的形式,同时又不丢失对获得良好预测至关重要的特征。
最重要的是,ConvNet
的作用是将 图像减少为更易于处理的形式,同时又不会丢失对于获得良好预测至关重要的特征。
2.1 卷积神经网络(CNN)的背景
CNN 最早是在 20 世纪 80 年代开发和使用的。当时,卷积神经网络 (CNN) 最多只能识别手写数字。它主要用于邮政部门读取邮政编码、邮政编码等。关于任何深度学习模型,需要记住的重要一点是,它需要大量数据进行训练,也需要大量计算资源。这是 CNN 在当时的一个主要缺点,因此 CNN 仅限于邮政部门,未能进入机器学习领域。用于训练神经网络的算法反向传播在当时的计算成本也很高。
2012 年,Alex Krizhevsky
意识到是时候恢复使用多层神经网络的深度学习分支了。大量数据的可用性、包含数百万张标记图像的更具体的 ImageNet 数据集以及丰富的计算资源使研究人员能够重振 CNN。
2.2 CNN 如何运作?
在介绍卷积神经网络(CNN)的工作原理之前,让我们先了解一下基础知识,例如图像是什么以及如何表示图像。RGB 图像只不过是一个具有三个平面的像素值矩阵,而灰度图像也是如此,但它只有一个平面。查看此图像以了解更多信息。
为了简单起见,我们先使用灰度图像来尝试了解 CNN 的工作原理。
上图展示了什么是卷积。我们采用一个过滤器/内核(3×3
矩阵)并将其应用于输入图像以获得卷积特征。此卷积特征将传递到下一层。
对于 RGB 颜色通道,请观看此动画以了解其工作原理
CNN 层中的参数数量取决于接受域(过滤器内核)的大小和过滤器的数量。CNN 层中的每个神经元都从前一层的局部区域接收输入,该局部区域称为其接受域。接受域在输入上移动,计算点积并创建卷积特征图作为输出。通常,此图随后会经过整流线性单元 (ReLU) 激活函数。经典的 CNN 架构(如 LeNet)和更现代的架构(如 ResNet)都采用了这一基本原理。
卷积神经网络由多层人工神经元组成。
3. 人工神经元在 CNN 中的作用
人工神经元是对生物神经元的粗略模仿,是一种数学函数,可计算多个输入的加权和并输出激活值。当您在 ConvNet 中输入图像时,每一层都会生成多个激活函数,这些激活函数会传递到下一层进行特征提取。
4. CNN 中的特征提取
第一层通常提取水平或对角线边缘等基本特征。此输出将传递到下一层,该层检测更复杂的特征,例如角或组合边缘。随着我们深入网络,它可以识别更复杂的特征,例如物体、面部等。与循环神经网络不同,ConvNets 是前馈网络,可在一次传递中处理输入数据。
根据最终卷积层的激活图,分类层输出一组置信度分数(介于 0 和 1 之间的值),这些分数指定图像属于某个“类别”的可能性。例如,如果您有一个检测猫、狗和马的 ConvNet,则最后一层的输出是输入数据包含任何这些动物的可能性。梯度下降通常用作训练期间的优化算法,以调整输入层和后续层的权重。
5. 什么是池化层?
与卷积层类似,池化层负责减小卷积特征的空间大小。这是通过减小维度来降低处理数据所需的计算能力。池化有两种类型:平均池化和最大池化。到目前为止,我只使用过最大池化,没有遇到任何困难。
因此,我们在最大池化中所做的就是从内核覆盖的图像部分中找到像素的最大值。最大池化还可用作噪声抑制器。它会完全丢弃嘈杂的激活,并执行去噪和降维。
另一方面,平均池化返回内核覆盖的图像部分的所有值的平均值。平均池化只是将降维作为一种噪声抑制机制。因此,我们可以说最大池化的表现比平均池化好得多。
6. 卷积神经网络(CNN)的局限性
尽管CNN功能强大且资源复杂,但它们提供了深入的结果。从根本上讲,它只是识别那些非常微小且不显眼以至于人眼无法注意到的模式和细节。但在理解图像内容方面,它失败了。
让我们看看这个例子。当我们将下面的图片传递给CNN时,它会检测到一个 30 多岁的人和一个大概 10 岁左右的孩子。但当我们看同一张图片时,我们开始考虑多种不同的场景。也许是父子外出、野餐或露营。也许是在校园里,孩子进了一球,他爸爸很高兴,就把他抱了起来。
在实际应用中,这些局限性更加明显。例如,CNN 被广泛用于审核社交媒体上的内容。但尽管它们训练的图像和视频资源非常丰富,但它仍然无法完全阻止和删除不适当的内容。事实证明,它在 Facebook 上标记了一座有 30,000 年历史的裸体雕像。
多项研究表明,在 ImageNet 和其他流行数据集上训练的 CNN 在不同的光照条件和从新角度观察物体时无法检测到物体。
这是否意味着 CNN 毫无用处?尽管卷积神经网络存在局限性,但不可否认的是,它们已经引发了人工智能的一场革命。如今,CNN 已用于许多计算机视觉应用,例如面部识别、图像搜索和编辑、增强现实等。正如 ConvNets 的进步所表明的那样,我们的成就是卓越的和有用的,但我们距离复制人类智能的关键组成部分还很远。
7. 总结
在本文中,我们探索了卷积神经网络(CNN),深入研究了它们的功能、背景和池化层的作用。尽管 CNN 在图像识别方面非常有效,但它也存在局限性,包括易受对抗性攻击和计算要求高。CNN 使用损失函数进行训练,该函数测量预测输出与真实值之间的差异。在特定图像数据上微调预训练模型是一种常见的做法,可实现更好的性能。
此外,CNN 还可用于分割任务,即标记图像中的每个像素。与传统的多层感知器不同,CNN 的网络架构旨在利用图像数据中的空间和时间依赖性。总体而言,CNN 彻底改变了计算机视觉领域,并继续成为一个活跃的研究领域。尽管 CNN 在图像识别方面非常有效,但它也有局限性,包括易受对抗性攻击和高计算要求。
希望您喜欢这篇文章,通过本文您应该也清楚机器学习中的 CNN、CNN 算法和深度学习中的 CNN了!