一、引言
神经网络(下左图)是类似二维的处理,而卷积神经网络(Convolutional Neural Network,后称CNN)是要解决图的问题,可以看作是三维空间(下右图)解决问题。
(比方说神经网络中的某个数据是(x=3,2)代表第三个数据的值是2;CNN处理图像通常是至少是三维,一般代表长宽数据,比如(x=3,y=4,2),在(3,4)这个点的数据为2)
二、CNN
1.各部分与工作流程
一下是CNN的四个注意组成部分的简化概述
a.输入层(Input)
在卷积神经网络中,输入通常是一个图像,可以被看作是一个矩阵,其中每个值代表图像的一个像素。
b.卷积层(CONV)
这是CNN的核心部分。主要就是计算,线性乘积并求和。每个卷积层后通常会跟随一个激活函数,如ReLU(Rectified Linear Unit),以引入非线性元素并增强网络的表达能力。
c.池化层(POOL)
池化层用于降低数据的维度,减少计算量并提高模型的泛化能力。它通常在卷积层之后使用,通常求出区域最大池化或平均池化,来减少数据的空间尺寸。
4.全连接层(FC)
全连接层负责将前面的卷积和池化操作提取到的特征进行整合,以产生最终的输出。在分类任务中,全连接层通常包含softmax激活函数,用于将每个类的概率分布归一化。
如下就是从最左边input一张交通工具的图像,通过一系列处理得到结果是‘car’,这是大概的流程,阅读完下面的内容再回过头看
2.卷积层工作原理
卷积层中的每一个小部分,我们称之为“神经元”或“过滤器”,都负责识别照片中的一个小区域。这些神经元会扫描整张照片,就像用小吸铁石沿着照片移动一样。每次移动,神经元都会和它覆盖的小区域进行“交谈”,这个交谈的方式就是简单的数学运算,比如加法或乘法。
通过这种方式,卷积层能够提取出照片中的各种特征。
下图是一个示例
图中左边的三个输入矩阵就是相当于输入d=3(x[:,:,1] 最后一位有三个值)时有三个通道图,每个通道图都有一个属于自己通道的卷积核
可以看到输出(output)的只有两个特征图意味着设置的输出的d=2(o[:,:,1] 最后一位有两个值),有几个输出通道就有几层卷积核(比如图中就有FilterW0和FilterW1),这意味着卷积核数量就是输入d的个数乘以输出d的个数(图中就是2*3=6个),其中每一层通道图的计算是对应的格子的数值相乘(即输入的值和卷积核的值相乘),再把每一个通道输出的输出再加起来就是绿色的输出数字。如下图得到-1
3.激活函数ReLU
顺带一提,上一章介绍了激活函数sigmoid,但实际梯度下降中,sigmoid容易饱和、造成终止梯度传递等问题。CNN模型中多用另外一个激活函数:ReLU,其图形表示如下:
4.池化层
相对好理解,通常就是取区域平均或最大,如下图所示,是一个取最大的例子。
主要作用是对输入数据进行下采样,即减小特征图的大小,同时保留重要的特征信息。
5.全连接层
将前面层提取到的特征进行整合,并输出最终的分类结果或回归结果。
全连接层的参数数量通常很大,因为每个节点都要与前一层所有节点连接,因此需要大量的权重参数进行训练。同时全连接层的输出结果通常是一个向量。因此在连接全连接层前,需要把我们的CNN的三维矩阵进行展平成二维,比如说从池化层出来的是‘5*5*3’的图像,在输入到全连接层展平成1*75以满足全连接层的输入模式。