文章目录
卷积神经网络(Convolutional Neural Network,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Network),是深度学习的代表算法之一。
卷积神经网络具有表征学习(Representation Learning)能力,能够按其阶层结构对输入信息进行平移不变分类
(Shift-invariant Classification),因此也被称为平移不变人工神经网络(Shift-Invariant Artificial Neural Network,SIANN)。
卷积神经网络仿照生物的视知觉(Visual Perception)机制构建
,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性
使得卷积神经网络能够以较小的计算量对格点化 (Grid-like Topology)特征(如像素和声频)进行学习
。有稳定的效果且对数据没有额外的特征工程(Feature Engineering)要求。
一. 卷积神经网络结构
典型的卷积神经网络结构主要分为输入层、卷积层、池化层、全连接层、分类层
等,如下图:
分类 | 描述 |
---|---|
输入层(Input Layer) | 1. 输入层是整个神经网络的输入, 在处理图像 的卷积神经网络中,它一般代表了一张图片的像素矩阵 。 其中三维矩阵的长和宽代表了图像的大小,深度代表了图像的色彩通道(Channel) 。例如黑白图的深度为1,而在RGB色彩模式下,图像的深度为3。2. 从输入层开始,卷积神经网络通过不同的神经网络架构将上一层的三维矩阵转换为下一层的三维矩阵,直到最后的全连接层。 |
卷积层(Convolution Layer) | 1. 是卷积神经网络结构中最重要的部分,使用一组可学习的过滤器(卷积层)来提取输入数据的空间特征。 2. 通过卷积能获得抽象度更高的特征,一般来说经过卷积层处理的节点会变得更深。 3. 卷积具有权重共享的特性,可以减低参数数量,防止由于参数过多而造成过拟合。 |
池化层(Pooling Layer) | 1. 又称欠采样或下采样(从原始数据集中按照一定的规则选取部分数据,使得数据的规模变小),对特征图进行下采样,减低特征维度,减少参数防止过拟合; 2. 池化层神经网络不会改变三维矩阵的深度,但是它可以 缩小矩阵的长宽 ,从而进一步减小全连接层节点的个数,进而减小整个神经网络参数。 |
全连接层(Full Connection Layer) | 1. 经过几轮卷积和池化之后,可以认定图像中的信息已经被抽象成信息含量更高的特征 ,完成了特征提取,最后一般会有1到2个全连接层完成分类问题。2. 全连接层将前一层输出展平后连接到每个神经元,用于学习非空间特征,将特征映射到输出。 3. 可以将卷积层和池化层看作自动图像特征提取的过程,在特征提取之后,仍要 用全连接层来完成分类问题 。 |
Softmax层 | Softmax层主要用于分类 ,通过Softmax层可以得到当前输出属于不同种类的概率分布情况。该层主要采用 Softmax函数,又称归一化指数函数,如下公式![]() |
二. 卷积神经网络计算
1. 卷积层计算:计算特征图+参数量(可共享)
卷积层神经网络结构中最重要的部分就是过滤器(Filter)或者 叫作内核(Kernel),如下图显示了这一结构。过滤器可以将当前神经网络的一个子节点矩阵
转化为下一层神经网络的一个单位节点矩阵
。单位节点矩阵就是长和宽都是1,但深度不限
的节点矩阵。
- 在一个卷积层中,过滤器所处理的节点矩阵的长和宽都是人为设定的,这个节点矩阵的尺寸也被称为过滤器的尺寸。
- 因为过滤器处理的矩阵深度和当前神经网络节点矩阵的深度是相同的,所以尽管过滤器的节点矩阵是三维的,但是只需给出二维矩阵即可。
- 另外一个需要人为设定的是过滤器的深度,也即输出单位节点矩阵的深度。如上图,左侧小矩阵的尺寸为过滤器的尺寸,而右侧单位矩阵的深度为
滤波器
的深度。
(1)重要参数介绍
卷积层有一些重要的超参数需要配置,下面进行一一介绍。
参数 | 说明 |
---|---|
卷积核大小(kernal_size) | 卷积核一般宽和高都比较小,如果输入是图片,宽高一般相同,比如3x3、5x5等,但是深度必须与输入维度一致。如输入图像是28 x 28 x 3的彩色图片,卷积核可以是3 x 3 x 3,这算作一个卷积核。 |
卷积核数量(out_channels) | 1. 卷积核数量即卷积产生的通道数,不同卷积核在输入数据中寻找不同特征 。2. 一般卷积核数量大于输入通道数,并且随着卷积的进行卷积核数量越来越多,从而提取的特征越来越多,如VGGNet-16卷积核数量经历了从64-128-256-512的过程。 |
步长(stride) | 1. 在滑动卷积核时,必须指定步长。 2. 步长为1,卷积核每次移动1个像素;步长为2每次移动2个像素,当然步长也可以是不常用的3,或者更大的数字,但这些在实际中很少使用)。一般这个操作会让输出数据体在空间上变小。 |
零填充(padding) | 有时候将输入数据用0在边缘处 进行填充是很方便的。这个零填充(zero-padding)的尺寸是一个超参数。零填充有一个良好性质,即可以控制输出数据的空间尺寸(最常用的是用来保持输入数据体在空间上的尺寸,使得输入和输出的宽高都相等 )。 |
(2)参数量及特征图计算
假设输入数据维度为 W × H × C i n W \times H \times C _ { in } W×H×Cin,卷积核尺寸 K × K K \times K K×K,步长S,卷积核数量 C o u t C _ { o u t } C