之前就购买了这本书,但是一直处于闲看的状态,时至年底,深感不能再继续之前状态,故从正在阅读的部分开始写读书笔记,之前的会在后边补充。
原理和结构
卷积神经网络以其强大的计算机视觉能力倍受人们的青睐。
作者首先提出了三个观点,也就是图片的三个性质,分别是:
- 局部性,
- 相同性,
- 不变性,也就是如果我们实现下采样,它的基本性质保存不变
上面的三个性质分别对应着卷积神经网络的三种思想。
全连接神经网络的有一系列隐藏层组成,每个隐藏层由若干个神经元组成,每个神经元与前一层的所有神经元相关联,但是每一层中神经元相互独立。对于处理图像并不是一个好的选择。
卷积神经网络不同于一般的全连接神经网络,是一个3D容量的神经元,也就是以三个维度来排列的:宽度、高度、深度。它的主要层结构有三个:巻积层、池化层和全连接层。巻积层和全连接层拥有参数,而激活层和池化层不拥有参数。使用梯度下降的办法进行更新,最终实现图片的识别。
1.巻积层
巻积层是卷积神经网络的核心。
下面是作者总结的巻积层的性质
- 输入数据体的尺寸是W1*H1*D1
- 4个超参数:滤波器数量K,滤波器空间尺寸F,滑动步长S,零填充的数量P。
- 输出数据体的尺寸W2*H2*D2,其中,W2=(W1-F+2P)/S+1,H2=(H1-F+2P)/S+1,D2=K.
- 由于参数共享,每个滤波器包含的权重数目为F*F*D1,巻积层一共有F*F*D1*K个权重和K个偏置
- 在输出体数据中,第d个深度切片(空间尺寸是W2*H2),用第d个滤波器和输入数据进行有效卷积运算的结果,再加上第d个偏置
对于卷积神经网络中的超参数,常见的设置是F=3,S=1,P=1。同时,这些参数也有着一些约定俗成的惯例和经验。
2.池化层
通常在巻积层之间周期性的插入一个池化层,其作用是逐渐降低数据体的空间尺寸,这样就能减少网络中参数的数量,减少计算资源浪费,有效的控制过拟合。
这种方式之所以有效,是因为之前提出的特征不变形,也就是下采样不会丢失图片的特征,因此将图片缩小进行卷积运算能够大大的降低卷积运算的时间。
最常用的的池化层形式是尺寸为2*2的窗口,滑动步长为2,对图像进行下采样,会丢失75%的信息,选择其中最大的保留下来。
池化层的一些性质
- 输入数据的尺寸是W1*H1*D1
- 有两个需要设置的超参数,空间大小F和滑动步长S
- 输出数据体的尺寸是W2*H2*D2,其中,W2=(W1-F)/S+1,H2=(H1-F)/S+1,D2=D1
- 对输入进行固定函数的运算,没有参数引入
- 池化层中很少引入零填充
在实际中,通常有两种方式,一种是F=2,S=2,这种池化有重叠,另外有一种是F=2,S=2,一般来说慎用比较大的池化窗口,以免对网络有破坏性。
除了最大值池化以外,还有一些其他的池化函数,如平均池化或者L2范数池化。在实际应用中,在巻积层之间引入最大值池化的效果最好,而通常在卷积神经网络的最后一层使用均值池化。
3.全连接层
全连接层和一般的神经网络一样。
在这里为了防止过拟合会引入Dropout,最近的研究表明,在进入全连接层之前,使用全局平均池化能够有效的降低过拟合。
总的来说,卷积神经网络包括以上三个层,还可以引入激活函数增加模型的非线性,所以我们常见到的网络一般是巻积层和ReLU层放在一起,有时候前边还有批标准化层,随后紧跟着池化层,再不断的重复,直到图像的尺寸缩小到一定的程度,然后展开特征图,连接全连接层,输出结果
有两点需要注意:
1、小滤波器的有效性。一般来说,几个小滤波器的效果要好于大滤波器,唯一的不好是在反向传播的过程之间的巻积层可能会占用更多的内存
2、网络的尺寸
- 输入层:一般来说,输入层的大小应该被2整除很多次。
- 巻积层:尽可能的使用小滤波器,滑动步长取1.还有就是需要对输入数据体进行零填充,以保证巻积层不会改变输入数据体的空间尺寸
- 池化层:负责空间维度进行下采样,常用2*2,滑动2
- 零填充:让巻积层的输入和输出在空间维度上保持一致。