开发者学习笔记【阿里云人工智能工程师ACA认证(2023版):卷积神经网络(一)】
课程地址:https://edu.aliyun.com/course/3112108/lesson/19268
卷积神经网络(一)
内容介绍
一、 卷积神经网络的概述
二、 卷积神经网络的层级结构
三、 经典卷积神经网络
四、 卷积神经网络的应用
一、卷积神经网络的概述
卷积神经网络(CNN),即Convolutional Neural Network,是一种深度学习模型的一部分。"C"表示"卷积",而"NN"代表神经网络。卷积神经网络是一种神经网络,其主要功能是通过特征提取和分类识别来处理输入数据。可以将CNN视为主要用于图像分类的工具。
CNN最早在1989年提出,最初用于语音和手写数字图像的识别。
2012年更深层次的AlexNet网络取得成功,此后卷积神经网络被广泛用于各个领域。
在左图中,你可以看到它的输入层、隐藏层和输出层。在传统神经网络中,每个神经元都与前一层的每个神经元相连接。然而,当处理图像等输入具有大量像素的数据时,这种全连接的结构会导致问题。
这就是CNN的出现原因。当我们观察CNN的结构时,首先将输入图像从高维(例如12维的二维图像)转化为低维。然后,通过一系列层次的计算,逐渐提取特征。在这个过程中,每一层的特征图的数量会逐渐减少,最终得到一个分类结果。你可以将其比喻为逐渐变细的通道,这种结构非常适用于图像分类。
接下来,让我们更详细地了解CNN的内部结构和工作原理。我们将首先讨论CNN的输入数据,然后深入研究其内部结构。
二、卷积神经网络的层级结构
卷积神经网络(CNN)通常用于处理图像等具有多维数据的任务。输入数据的维度可能会有很多,不仅包括一维数据,还可能包括高维数据。在输入层,我们需要对数据进行标准化处理,这是为了提高神经网络的学习效率。标准化包括处理数据的范围和单位,以确保输入数据适应激活函数的范围。
卷积层是CNN的核心特征,它主要用于从输入数据中提取特征。卷积是一种特征提取的过程,通过滤波器(卷积核)对输入数据进行操作,以获取特征。卷积的过程可以理解为将滤波器应用于输入数据,逐步提取出各种特征。
卷积核的应用方式是通过对输入数据进行滑动操作,从左上到右下,逐渐覆盖整个输入区域。每次滑动都会执行一次卷积操作,将滤波器与输入数据相乘并求和,生成特征图。这个特征图是从输入数据中提取的特定特征。
总而言之,卷积神经网络通过卷积层来提取输入数据中的特征,这些特征对于任务(如图像分类)非常重要。卷积核的应用方式是滑动操作,逐步捕捉不同位置的特征。这一过程有助于神经网络识别和理解输入数据。
卷积神经网络通常处理大规模的输入数据矩阵,并生成相应的输出矩阵。这个过程可以看作是一个滑动窗口在输入矩阵上移动,逐步生成输出矩阵的过程。每次滑动窗口操作都会生成输出矩阵中的一部分。
在这个过程中,输入矩阵的活动会引导下一个窗口的位置,然后生成下一个节点的输出。这个过程会不断滚动窗口,直到处理完整个输入矩阵,最终得到右边的输出矩阵。输出矩阵中包含了通过卷积操作提取的局部特征。相对于输入数据矩阵,这些特征矩阵通常更小。
这种卷积操作主要用于图像处理,因为图像通常具有二维结构,我们可以更好地利用图像中的信息。例如,一张图像可以看作是一个二维矩阵,具有高度、宽度和深度(通道)。每个像素的值不同,因为它包含了红、绿和蓝等不同的颜色通道。这种结构可以通过卷积层进行处理,以提取图像中的特征。
接下来,让我们深入了解卷积操作的详细计算过程。我们将以一个卷积层的计算示例为例,输入矩阵是一个4x4的三通道图像,卷积核是3x3的。我们还有一个参数,即卷积的步长,它决定了卷积核在输入矩阵上的滑动速度。
卷积神经网络(CNN)通常用于处理具有高维度的输入数据,如图像数据。在卷积层中,卷积核滑动在输入矩阵上,执行卷积操作以提取特征。这个过程可以看作是一个窗口在输入数据上移动,并计算每个位置的卷积结果。卷积核与输入数据的对应部分相乘,然后求和以生成输出矩阵的每个元素。这个过程会不断滑动窗口,直到处理完整个输入数据,最终生成输出矩阵。
卷积操作的主要目的是从输入数据中提取局部特征。对于图像处理来说,这是非常重要的,因为图像具有高度、宽度和通道等维度,通过卷积操作,可以更好地利用图像的结构信息。
卷积操作的计算过程相对简单,可以看作是一个窗口在输入数据上按时间顺序滑动的过程,每次滑动都执行卷积操作,最终得到输出矩阵。这个过程是卷积层的核心操作之一。
在卷积操作之后,通常会使用池化层进行特征降维。池化操作的目的是通过取局部区域的最大值或均值来减小特征图的维度。这有助于减少网络参数数量和计算量。池化操作通常分为最大池化和平均池化两种方式,它们都是对特征图进行相邻区域的操作,以获取单一值。
全连接层是卷积神经网络中的另一层,它将前一层的所有节点连接到当前层的每个节点,因此称为全连接。全连接层通常出现在网络的末尾,它的每个节点都与前一层的节点相连,是传统神经网络结构的一部分。
在卷积神经网络中,通常都会包括以下几个部分:
输入层:这是网络的初始部分,它接受数据输入。
卷积层:这一层主要负责特征提取,它通常位于前面,并与其他层相连,传递信号。
池化层:用于减少数据的维度和特征,通常使用最大值或均值池化。
全连接层:这是网络的最后一部分,通常用于分类等任务,它包括输出层,其工作原理与前一层相同。
最后,我们要解决一个十分类的问题,需要对输入的图像进行10个类别的分类。我们通常使用全连接层来实现这一任务。
对于不同类型的问题,神经网络的输出层会有不同的结构和目标:
分类问题(Classification):在分类问题中,输出层通常包含一个节点或多个节点,每个节点对应一个类别。神经网络通过这些节点输出每个类别的概率分数,然后选择具有最高概率分数的类别作为最终分类结果。例如,在一个10类别的图像分类问题中,输出层可能有10个节点,每个节点代表一个类别,最终输出层会指示图像属于哪个类别。
目标检测问题(Object Detection):在目标检测问题中,输出层通常会提供每个检测到的目标的相关信息。这可以包括目标的坐标(通常是矩形框的位置)、目标的类别和置信度分数。通常,每个检测到的目标会用一组数值来表示,例如,(x, y, width, height, class, score),其中 (x, y) 是目标框的左上角坐标,width 和 height 是框的宽度和高度,class 是目标的类别,score 是置信度分数。
分割问题(Segmentation):在图像分割问题中,输出层通常会为图像中的每个像素提供一个类别标签。这将创建一个与输入图像大小相同的标签图,其中每个像素都分配到相应的类别。这种问题的输出通常是一个多通道的热图,每个通道对应一个类别,像素的值表示其属于哪个类别的概率。
总之,输出层的结构和目标取决于你要解决的具体问题类型。不同问题需要不同的输出格式,以便正确地获取所需的信息。