CNN 层

7 Jan 2025 | 11分钟阅读

引言

卷积神经网络(CNNs)或简称ConvNets,是一类特殊的神经网络,在处理具有网格状结构(如图像)的输入方面表现出色。它由一个由单独像素组成的网格构成,像素值决定每个像素的颜色和亮度。

人眼看到一张图片时,大脑会获得大量信息。整个视野由神经元之间的连接覆盖,每个神经元都在其感受野内工作。就像生物视觉系统中单个神经元只对视觉场中称为感受野的有限区域内的刺激做出反应一样,CNN中的每个神经元也只在其感受野内分析信息。层层叠加,先检测曲线和线条等简单模式,然后是人脸和物体等更复杂的模式。

什么是卷积神经网络?

卷积神经网络是一种前馈人工神经网络,其连接结构模仿了动物视觉大脑的排列方式。视觉皮层包含对视觉场特定区域敏感的小细胞簇。单个脑神经元细胞仅在特定边缘方向刺激下才会激活或放电。垂直边缘使某些神经元放电,而水平或对角线边缘则使其他神经元放电。卷积神经网络是深度学习中用于评估视觉输入的人工神经网络类型之一。这些网络能够使用文本、图像、音频、视频和其他材料执行各种各样的任务。第一个有效的卷积网络是由贝尔实验室教授Yann LeCunn在20世纪90年代后期开发的。

CNN Layers

卷积神经网络(CNNs)由于拥有多个隐藏层、输入层和输出层、数百万个参数以及其他特性,能够学习复杂的对象和模式。在应用激活函数之前,使用卷积和池化操作对输入进行下采样。所有隐藏层都是部分连接且隐藏的,输出层是最后的全连接层。输入图像的大小与输出形状相当。

将两个函数组合以获得另一个函数结果的过程称为卷积。CNN对输入图像应用滤波器,使其卷积并生成特征图。权重和偏差是网络内部随机生成的向量,充当滤波器。与每个神经元使用不同的权重和偏差相反,CNN在所有神经元上使用统一的权重和偏差。可以设计多种滤波器,每种滤波器都能捕获输入的独特组成部分。滤波器有时也称为核。

卷积神经网络层的类型

CNN由三种不同类型的层组成:卷积层、池化层和全连接(FC)层。当这些层堆叠在一起时,就形成了CNN架构。除了这三层之外,激活函数和Dropout层是另外两个重要因素。

卷积层

卷积神经网络(CNNs)的基本组成部分是卷积层。这些层通常包括滤波器(或特征检测器)、输出向量(也称为特征图)以及输入向量(如图像)。输入(可以是图像)在通过卷积层时,会被抽象成特征图,通常称为激活图。卷积是此方法中使用的一种过程,它能够识别图像中更精细的特征。此外,为了向网络引入非线性,通常在这些层中使用ReLU(Rectified Linear Units)作为激活函数。另外,CNN经常使用池化过程来减小特征图的空间维度,从而得到更容易处理的输出体积。卷积层对于图像分类和自然语言处理等应用的机器学习模型至关重要,因为它们有助于从输入数据中提取重要特征。

特征图 = 输入图像 x 特征检测器

卷积层对输入进行卷积,然后将输出传递给下一层。这与视觉皮层中的单个刺激如何导致细胞响应相似。每个卷积神经元只处理指定感受野的数据。

在CNN的卷积层中,这些卷积操作用于定位信息和过滤输入数据。

CNN Layers

核的中心部分位于源像素上方。随后,原始像素及其周围像素的加权和将替换它。

CNNs基于两个关键原理运行:参数共享和局部连接。当特征图中的所有神经元具有相同的权重时,称为参数共享。与每个神经元都完全连接的神经网络不同,“局部连接”一词描述了每个神经元仅连接到输入图像一部分的概念。这加快了计算速度并减少了系统中的参数数量。

填充和步幅

根据填充和步幅的不同,卷积过程的执行方式也不同。它们可以应用于输入或输出向量,以改变其高度和宽度。

在卷积神经网络中,它用于表示在CNN核处理期间添加到图像的额外像素数量。例如,当CNN的填充设置为0时,添加的每个像素的值将为零。如果零填充设置为1,则图像的边界将为一像素宽,像素值为零。

CNN Layers

使用填充的卷积神经网络具有更大的处理区域。称为核的神经网络滤波器会遍历图像,分析每个像素并将输入转换为不同的表示。为了给核在处理过程中提供额外的区域来覆盖图像,会在图像帧周围添加填充。通过添加填充,可以更准确地分析使用CNN处理的图像。

CNN Layers

步幅决定了像素移动的次数,或者说滤波器在输入矩阵上卷积的方式。如果步幅设置为1,滤波器一次移动一个像素;如果步幅设置为2,滤波器一次移动两个像素。当步幅值增加时,输出减小;当步幅值减小时,输出增加。

池化层

为了减少网络中的参数数量和计算量,目的是逐步降低表示的空间维度。池化层独立处理每个特征图。

池化层通过派生邻近输出的汇总统计数据来代替网络在特定点处的输出。因此,需要更少的计算和权重来描述表示的空间大小的变化。在整个池化过程中,每个表示切片都独立处理。

除了平均矩形邻域和矩形邻域的L2范数等各种池化函数外,一个流行的函数是根据与中心像素的距离确定的加权平均值。最常用的方法是最大池化,它提供邻域的最大输出。

如果我们有一个维度为W x W x D的激活图,一个空间大小为F的池化核,以及步幅S,可以使用以下公式计算输出体积的大小。结果将是一个大小为Wout x Wout x D的输出体积。

无论对象出现在屏幕的何处,池化总是提供一定的平移不变性,从而实现对象识别。

CNN Layers

以下是一些池化技术:

最大池化

它选择特征图中最重要的元素。最终的最大池化层包含来自特征图的相关特征。这种方法由于其卓越的结果而最为常用。

平均池化

它涉及计算特征图上每个区域的平均值。池化通过减少表示的空间维度来最小化网络中的参数和计算量,并避免过拟合。如果没有池化,输出和输入具有相同的分辨率。

全连接层

全连接(FC)层包含权重和偏差以及神经元,这些神经元连接两个不同层之间的神经元。这些层构成了CNN架构的最后几层,通常位于输出层之前。

在这里,来自先前层的输入图像在被展平后被馈送到FC层。展平后,向量会经过几个额外的FC层,这些层通常是发生数学函数运算的地方。此时,分类过程开始。由于全连接层优于单层连接,因此连接了两个层。

全连接神经元与它们之前的层中的所有激活都完全连接,并且功能类似于传统神经网络中的神经元。训练后,全连接层的特征向量用于将图像分类到不同类别。由于全连接层使用了所有参数,因此会发生过拟合。有多种方法可以减轻过拟合,其中一种是Dropout。

Dropout

在训练数据集中,所有特征通常都与FC层相关联,这会导致过拟合。当模型在新数据上的表现不佳时,就说它是过拟合的,因为它在训练数据集上表现得非常好。通过使用Dropout层可以解决这个问题,该层通过从神经网络中移除少量神经元来减小训练期间模型的尺寸。随机Dropout 0.3会导致30%的节点离开神经网络。

由于Dropout使网络更简单,从而抑制了过拟合,因此机器学习模型的性能会更好。在训练过程中,神经元会从神经网络中移除。

激活函数

激活函数是CNN模型最重要的参数之一。它的作用是获取知识并估计网络变量之间复杂且连续的关系。换句话说,它决定了模型数据点在网络末端应该继续前进哪些,不应该前进哪些。

因此,网络的非线性性增加。有几种常用的激活函数,包括Sigmoid、Tanh、Softmax和ReLU。这些函数各有特定的用途。Sigmoid和Softmax函数都推荐用于二元分类的CNN模型;对于多类分类,通常使用Softmax。简单来说,在CNN模型中,激活函数决定是否激活一个神经元。它使用数学过程来确定输入对预测工作的重要性。

Sigmoid

数学表达式σ(κ) = 1/(1+e¯κ)表示Sigmoid非线性。它接受一个实数并将其“压缩”到0到1的范围内。

然而,当激活发生在任一尾部时,梯度几乎为零,这是Sigmoid的一个非常不希望的方面。本质上,如果局部梯度非常小,反向传播将“杀死”梯度。此外,如果进入神经元的数据总是正的,Sigmoid的输出(全正或全负)会导致梯度更新出现之字形动态。

Tanh

Tanh将实数值压缩到[-1, 1]的范围内。与Sigmoid神经元类似,这种激活也会饱和;但是,它的输出是零中心的。

ReLU

近年来,ReLU(Rectified Linear Unit)的使用显著增加。它计算函数ƒ(κ)=max (0,κ),这意味着激活被阈值为零。

与Sigmoid和Tanh相比,ReLU将收敛过程加快了六倍。

不幸的是,ReLU在训练过程中可能很脆弱,这是一个缺点。一个巨大的梯度通过它可能会更新神经元到它再也不会被更新的点。然而,这可以通过设置适当的学习率来解决。

CNN Layers

Softmax

Softmax等激活层通常应用于网络的最后一层,该层充当分类器。这一层将输入排序到不同的类别中。Softmax函数将网络未归一化的输出转换为概率分布。

使用CNN进行深度学习的好处

深度学习是机器学习的一个子领域,它使用多层神经网络,与简单的单层网络相比具有许多优点。CNN和RNN是深度学习算法的类型。

由于CNN旨在通过在早期层收集重要信息并在更深的层收集复杂模式来学习数据的空间层次结构,因此它们对于计算机视觉应用(如图像识别和分类)特别有用。CNN最大的优点之一是其自动特征提取或特征学习的能力。这消除了手动特征提取,而手动特征提取在过去是一项困难且劳动密集型的任务。

在迁移学习中,预训练模型被调整用于新任务,CNN在此类学习中表现良好。由于其可重用性,CNN非常灵活且适用于需要少量训练数据的应用。机器学习开发者可以通过构建在现有网络之上,将CNN部署到各种实际应用中,同时最小化计算成本。

CNNs比全连接神经网络更具计算效率,因为它们使用了参数共享。由于其优雅的架构,CNNs用途广泛,可用于边缘计算场景以及智能手机和其他移动设备等各种设备上。

卷积神经网络的缺点

  • 训练期间内存需求高且计算成本高。
  • 如果数据不足或正则化不当,可能容易过拟合。
  • 需要大量的带标签数据。
  • 网络的学习可能更难解释,并且可解释性有限。

CNN的应用

以下是CNN最常使用的领域:

医疗保健

CNN在医疗领域用于支持成像和诊断程序。例如,CNN可用于扫描病理切片或X射线以查找可能表明疾病的异常,这有助于诊断和治疗计划。

汽车工业

汽车行业在自动驾驶汽车中使用CNN,这些汽车使用传感器和摄像头数据来导航周围环境。CNN还有助于AI驱动的非自动驾驶汽车功能,如自适应巡航控制和停车辅助。

社交媒体

社交媒体网站上的各种图像处理应用都使用了CNN。例如,社交网络公司可以使用CNN建议用户在照片中标记他人或举报不当照片以进行审核。

零售

电子商务商家在视觉搜索系统中使用了CNN,该系统允许客户使用图片而不是文字来搜索商品。在线商店还可以利用CNN通过查找在视觉上与客户感兴趣的商品匹配的商品来改进其推荐系统。

虚拟助手

尽管虚拟助手通常用于处理图像数据,但它们是使用CNN处理音频处理问题的绝佳示例。CNN通过识别语音关键字并帮助解释用户请求,从而提高了虚拟助手的理解能力和响应能力。

结论

卷积神经网络(CNNs)是深度学习领域的一项了不起的进步。它就像一个极其智能的工具,用于改进计算机的图像识别和处理能力。CNN由三个主要层组成:卷积层、池化层和全连接层。我们已经深入探讨了CNN的许多层面,从它们如何 first 看待图像到如何定位关键信息。这些理解使我们能够认识到它们在医疗设备和自动驾驶汽车等尖端技术中的应用。这是提高计算机智能的一步。如果目标是在序列中识别模式,卷积网络是一个绝佳的选择。