一介绍
该部分是该书的第六章,该章节主要讲述了卷积神经网络, 该章节主要分为数据集介绍,神经网络介绍,神经网络的常用结构,当前经典的模型以及迁移学习。 在这里我主要介绍卷积网络的介绍,常用结构,经典模型以及迁移学习这几部分。
二 卷积神经网络介绍
俩种网络相似:
1. 结构相似,都是由一层一层的节点组成 2. 输入输出基本一致
俩种网络差异:
1. 结构上,全连接网络,层层之间节点都有连接,但是卷积网络层层之间的节点只有部分连接 2. 参数问题上,全连接网络处理图像的最大问题就是要处理的参数太多,以MNIST数据集为例,每一张图片的大小是28*28*1, 28*28代表图片大小, *1表示像素。假设第一层的隐藏节点为500个,那么一个全连接网络的参数有:288*28*1*500 + 500 = 392500, 其中+500代表bias的数目。
卷积网络的组成:
1.输入层: 跟全连接神经网络是一样的, 通常是三维矩阵,前俩维表示图像大小,后一维表示色彩通道。从输入层开始,卷积神经网络通过不同的神经网络结构将上一层的三维矩阵转化为下一层的三维矩阵,直到全连接层。 2.卷积层:核心结构,卷积层中每一个节点的输入只是上一层神经网络的一小块,这个小块常用的大小有3*3 或者5*5. 卷积层试图将神经网络中的每一小块进更加深入地分析从而得到抽象程度更高的特征。通常来说,通过卷积层处理过的节点矩阵会变得更深。 3.池化层:池化层不会改变三维矩阵的深度,但是它可以缩小矩阵的大小。池化操作可以被认为是将一张分辨率较高的图片转化为分辨率较低的图片。通过池化层,可以进一步缩小最后全连接层中节点的个数,从而大到减少整个神经网络中参数的目的。 4.全连接层:经过几轮卷积层和池化层的处理之后,可以认为图像中的信息已经被抽象成了信息含量更高的特征。之后就需要在这些特征的基础上,使用全连接层来进行分类任务。 5.softmax层:
三 常用的结构
3.1 卷积层
卷积神经网络最重要的部分就是内核或者过滤器,可以将当前层的神经网络上的一个子节点矩阵转化为下一层神经网络上的一个单位节点矩阵。单位节点矩阵指的是一个长和宽都为1,但深度不限的节点矩阵。
过滤器的长和宽是由人工指定的,这个节点矩阵的尺寸也被称为过滤器的尺寸,常用的大小为3*3, 5*5。因为过滤器的深度和当前层神经网络节点的矩阵深度是一致的,所以虽然节点矩阵是三维的,但是只需要指定俩个维度。过滤器需要人工指定的另一个参数是节点矩阵的深度。一个过滤器将2*2*3的矩阵转换为1*1*5的矩阵。需要的参数是2*2*3*5 + 5, 2*2*3 代表过滤器的大小, 5代表深度, + 5代表bias。
当使用全0填充时:
其中in代表输入矩阵,stride代表步长,为向上取整 当没有全0填时:
关于参数问题: 举例说明输入层矩阵的维度是32*32*3, 假设第一层卷积层使用尺寸为5*5,深度为16的过滤器。那么这个卷积层的参数个数为5*5*3*16+16, 参数只跟过滤器的尺寸以及深度以及当前层节点矩阵的深度有关。
3.2池化层
在卷积层之间通常会加上一个池化层。池化层可以非常有效地缩小矩阵的尺寸,从而减少最后全连接层中的参数。作用加快计算速度以及防止过拟合问题。池化层中的计算不是节点的加权和,而是采用更加简单的最大值或平均值运算。
3.3 经典网络结构
上面所述的是LeNet-5模型,通用结构就是:
? 代表大于等于0, + 表示大于等于1, 说明池化层的数目可以没有, 池化层主要防止模型的过拟合,可以用卷积层的步长替代。卷积神经网络在输出之前一般会经过1到2个全连接层。
除了上面的结构,还有一种卷积结构,Inception-v3:
Inception模块会首先使用不同尺寸的过滤器处理输入矩阵。如上图所示,虽然过滤矩阵的大小不同,但如果所有过滤器都使用全0填充且步长为1,那么前向传播得到的结构矩阵的长和宽都与输入矩阵一致。这样经过不同过滤器处理的结果矩阵可以拼接称一个更深的矩阵。
3.4 迁移学习
随着模型层数及复杂度的增加,模型的错误率也随之改变。然而训练复杂的卷积神经网络需要非常多的标注数据。在真实的应用中,很难收集到如此多的标注数据,即使可以收集到,也需要花费大量的人力物力。即使有海量的训练数据, 要训练一个复杂的卷积神经网络也需要几天甚至几周的时间。为了解决标注数据和训练时间的问题,引入了迁移学习。 迁移学习就是将一个问题上训练好的模型通过简单的调整使其适用于一个新的问题。通常将训练好的模型的全连接层之前的结构保留,只替换全连接层, 这样就在原模型的抽取特征的前提下,训练全连接模型。