简介
卷积神经网络(Convolutional Neural Network, CNN)
卷积神经网络由输入层(input layer)、卷积层(convolution layer)、池化层(pooling layer)、全连接层(fully connected layer)和输出层(output layer)组成。
CNN结构图:
卷积层
如图3.4所示,卷积神经网络中的卷积操作可以看作是输入样本和卷积核的内积运算
。在第一层卷积层对输入样本进行卷积操作后,就可 以得到特征图。卷积层中是使用同一卷积核对每个输入样本进行卷积操作的。在第二层及其以后的卷积层,把前一层的特征图作为输入数据,同样进行卷积操作。该卷积操作与Hubel-Wiesel实验中的简单细胞具有相同的作用。如图3.4所示,对10×10的输入样本使用3×3的卷积核进行卷积操作后,可以得到一个8×8的特征图。特征图的尺寸会小于输入样本,为了得到和原始输入样本大小相同的特征图,可以采用对输入样本进行填充(padding)处理后再进行卷积操作的方法。
零填充(zero-padding)指的就是用0填充输入样本的边界,填充大小为 P=(F−1)/2 ,其中F为卷积核尺寸。在图3.4中,卷积核的滑动步长为1。我们也可以设定更大的滑动步长,步长越大则特征图越小。另外,卷积结果不能直接作为特征图,需通过激活函数计算后,把函数输出结果作为特征图。常见的激活函数包括上一章介绍的sigmoid、tanh、ReLU等函数。如图3.5所示,一个卷积层中可以有多个不同的卷积核,而每一个卷积核都对应一个特征图。
池化层
全连接层
输出层
神经网络的训练方法
误差更新方法
卷积神经网络的参数包括卷积层的卷积核大小、全连接层的连接权重和偏置值。和多层神经网络一样,卷积神经网络中的参数训练也是使用误差反向传播算法。全连接层的连接权重按照我们在第2章中介绍的步骤迭代后确定。有多个全连接层时,仍然需要按照链式法则从上至下逐层调整。那么,当神经网络中包含卷积层和池化层时,误差是怎样传播的呢?
参数的设定方法
在卷积神经网络中,有大量需要预设的参数。与神经网络有关的主要参数如下所示。
- 卷积层的卷积核大小、卷积核个数
- 激活函数的种类
- 池化方法的种类
- 网络的层结构(卷积层的个数、全连接层的个数等)
- 全连接层的个数
- Dropout(参照6.4节)的概率
- 有无预处理(参照6.2节)
- 有无归一化(参照6.2节)
与训练有关的参数如下所示。
- Mini-Batch的大小
- 学习率
- 迭代次数
- 有无预训练
小结
卷积神经网络能够通过卷积层和池化层使得特征映射具有位移不变性。和多层感知器一样,卷积神经网络的训练也是使用误差反向传播 算法,卷积层和池化层都可以使用误差反向传播算法进行训练。在比较不同的参数设定后,我们发现近年来提出的激活函数和Dropout等技术 能够提高网络的泛化能力。与多层感知器相比,卷积神经网络的参数更少,不容易发生过拟合,因而网络的泛化能力能够得以提高。
参考
感谢帮助!
- 《图解深度学习》
本文作者: yiyun
本文链接: https://moeci.com/posts/分类-读书笔记/graphical-deep-learning-CNN/
版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!