人工神经网络(ANN)的设计理念受到了生物神经网络的启发,旨在通过模拟自然界神经网络中的机制来复现人类的认知功能。ANN通过依赖多个输入信号和相应的函数来实现对复杂数据的近似或估计。
通常,我们将ANN概念化为一个由大量神经元相互连接形成的网络,每个神经元都与一个权重相关联。这些权重的值可以通过学习过程中的经验积累进行调整。正是这种自适应能力赋予了神经网络处理各种类型输入数据的灵活性,并增强了其学习能力.
人工神经网络(ANN)将神经元定义为中央处理单元(CPU),它执行特定的数学运算来从一组输入值生成输出。每个神经元的输出取决于输入值的加权和,再加上一个偏差值。神经元的作用相对简单:当接收到的信号超过某个预设的激活阈值时,神经元就会被激活。图1展示了一个基本的ANN结构,它实际上是卷积神经网络(CNN)的具体实现。CNN由带有权重的相互连接的神经元组成,网络的训练参数包括权重和偏差。
在CNN中,神经元之间的连接模式受到动物视觉皮层排列方式的启发。在大脑的视觉皮层中,神经元对特定区域内(称为感受野)的刺激做出反应,这些感受野部分重叠,共同覆盖整个视野。神经元对感受野内刺激的反应可以通过卷积运算来近似模拟。
包括前向传播、反向传播和权重更新在内的所有神经网络训练相关的运算,在CNN中都是适用的。此外,CNN使用单一的可微分成本函数,它基于这样的假设:CNN的输入具有特定的数据结构,例如图像。这一特性使得CNN能够与定制的架构元素相结合,以增强对这类数据的处理能力。
CNN通常采用全连接(Fully Connected, FC)架构,其中每层的神经元接收来自前一层所有神经元输出的连接(偏差神经元除外)。然而,面对不断增长的输入数据量,这种架构可能难以有效扩展。
在CNN中,常用的层包括:
· 卷积层
· 池化层
· 修正线性单元(ReLUs)
· FC层(全连接层)
在后续的小节中,将详细探讨每种层的功能和它们在卷积神经网络(CNN)中的作用。通常,在执行分类任务时,CNN的结构由多个顺序排列的卷积层和子采样(也称为池化)层组成,之后通常会接上一个或多个全连接(FC)层。
为了应对现实世界中的多样化挑战,CNN的设计允许根据特定需求合并和重复上述层的配置。例如,可以根据任务的复杂性,设计包含两个、三个或更多卷积层的网络架构。同样,可以根据需要灵活地多次应用池化操作,以降低数据的空间维度,同时增加对图像位移的不变性。
如前所述,在CNN的架构中,通常会串联多个层,这些层中有的包含可训练的参数,如权重和偏差,而其他层则设计为执行特定的预定义功能,例如卷积层中的自动特征提取或池化层中的降维处理。
卷积层
在卷积神经网络(CNN)中,卷积层扮演着核心角色,网络可以包含一个或多个卷积层。卷积层的参数由一组可调节的过滤器(或称为卷积核)定义,这些过滤器在三维空间中运作,其三个维度分别是宽度、高度和深度。
每个过滤器覆盖输入数据的一个较小区域,但在深度上跨越所有输入通道。在前向传播过程中,过滤器在输入数据上滑动(或“卷积”),在每个位置计算过滤器与输入数据的局部区域之间的点积,生成一个二维的特征激活映射,这反映了特定过滤器对输入数据的响应。
随着过滤器在输入数据上移动,它与输入数据的每个局部区域进行卷积操作,过滤器值与相应输入区域的元素间的逐元素乘积求和。这个过程在所有位置重复进行,直到覆盖整个输入数据。
从概念上讲,CNN的目标是学习一组活跃的过滤器,这些过滤器能够识别输入数据中不同空间区域的特定特征。通过这种方式,每个过滤器提取出输入数据的一个特定信息。然后,所有这些特征映射(对应于不同的过滤器)沿深度维度堆叠起来,形成卷积层的最终输出。在这个输出中,可以将每个元素可以视为限定输入区域的一个神经元的输出,它与同一特征映射中的其他神经元共享权重,因为它们应用了相同的过滤器。
卷积操作的数学步骤可以概括为以下流程:
1. 对齐过滤器和图像块。
2. 将每个图像像素乘以相应的特征像素。
3. 求乘积的和。
4. 将每个和除以该特征的总像素数。
卷积层输出的公式如下:
此处:
l F(k,l) 是在 (k, l) 位置的特征映射元素
l I(i+k,j+l) 是在 (i + k, j + l) 位置的图像元素
l S(k,l) 是特征像素的和
在总结卷积神经网络(CNN)的关键概念时,以下几个要点至关重要:
· 局部感受野:在卷积层中,每个神经元只与输入数据的一个局部区域相连接,称该局部区域为局部感受野。每个局部感受野通过学习过程获得其独特的权重,使其能够专注于输入数据的特定局部特征。
· 共享权重:由于显著的特征(例如边缘或纹理斑点)可能在图像的任何位置出现,卷积层内的神经元采用共享权重的机制。这意味着,无论输入点的位置如何,该层的所有神经元都能够识别出相同的特征模式。
· 卷积操作:通过在输入数据的不同位置应用相同的权重模式,卷积操作生成了特征映射。这些特征映射捕捉了输入数据中的局部特征,并为后续层提供了丰富的特征表示。