《图解深度学习》笔记
卷积神经网络由输入层(input layer)、卷积层(convolution layer)、池化层(pooling layer)、全连接层(fully connected layer)和输出层(output layer)组成,如下图所示。
![图片名称](https://i-blog.csdnimg.cn/blog_migrate/c0523c9ace10135a41e934228fc7f40c.png)
1、卷积层
![图片名称](https://i-blog.csdnimg.cn/blog_migrate/17737d06d04f1130fae49712502e3429.png)
卷积神经网络中的卷积操作可以看作是输入样本和卷积核的内积运算。在第一层卷积层对输入样本进行卷积操作后,就可以得到特征图。卷积层中是使用同一卷积核对每个输入样本进行卷积操作的。在第二层及其以后的卷积层,把前一层的特征图作为输入数据,同样进行卷积操作。
如上图所示,对 10 × 10 10\times 10 10×10的输入样本使用 3 × 3 3\times 3 3×3的卷积核进行卷积操作后,可以得到一个 8 × 8 8\times 8 8×8的特征图。特征图的尺寸会小于输入样本,为了得到和原始输入样本大小相同的特征图,可以采用对输入样本进行填充 (padding) \text{(padding)} (padding) 处理后再进行卷积操作的方法。零填充 (zero-padding) \text{(zero-padding)} (zero-padding) 指的就是用填充输入样本的边界,填充大小为 P = ( F − 1 ) 2 P=\frac{(F-1)}{2} P=2(F−1), 其中 F F F 为卷积核尺寸。在上图中,卷积核的滑动步长为 1 1 1,我们也可以设定更大的滑动步长,步长越大则特征图越小。另外,卷积结果不能直接作为特征图,需通过激活函数计算后,把函数输出结果作为特征图。常见的激活函数包括 sigmoid , tanh , ReLU \text{sigmoid}, \text{tanh}, \text{ReLU} sigmoid,tanh,ReLU。
一个卷积层可以由多个不同的卷积核,而每一个卷积核都对应于一个特征图。
当卷积层的输入样本是三通道的彩色图像时,下图的卷积核就会是三维的 3 × M × M 3\times M \times M 3×M×M, M M M 表示卷积核大小。第二层及其以后的卷积层的输入是上一层的特征图,而特征图的个数由上一层的卷积核数决定的。例如当上一层的卷积核数为 8 8 8 时,就会得到 8 8 8 个特征图作为下一层的输入,所以下一层需要 8 8 8 个三维的 8 × M × M 8\times M \times M 8×M×M 卷积核。
![图片名称](https://i-blog.csdnimg.cn/blog_migrate/118e9ee6d23ce78d839c184f340c5ac0.png)
2、池化层
池化层的作用时减小卷积层产生的特征图的尺寸。
选取一个区域,根据该区域的特征图得到新的特征图,此过程称为池化操作。池化操作降低了特征图的维度,使得特征表示对输入数据的位置变化具有稳健性。
主要的池化方法如下图所示:
( a ) (a) (a) 最常使用的是最大池化 ( a ) (a) (a),最大池化是选取图像区域内的最大值作为新的特征图。
( b ) (b) (b)平均池化是取图像区域内的平均值作为新的特征图。
( c ) (c) (c) Lp \text{Lp} Lp池化则是通过突出图像区域内的中央值而计算新的特征图。在下图 ( c ) (c) (c)中的公式中, p p p越大越能突出中心位置的值。
![图片名称](https://i-blog.csdnimg.cn/blog_migrate/767b1a32caeea1bb8576baea636844fc.png)
3、全连接层
和多层感知器一样,全连接层也是首先计算激活值,然后通过激活函数计算各单元的输出值。激活函数包括 sigmoid , tanh , ReLU \text{sigmoid},\text{tanh},\text{ReLU} sigmoid,tanh,ReLU等函数。由于全连接层的输入就是卷积层或池化层的输出,是二维的特征图,所以需要对二维特征图进行降维处理,如下图:
![图片名称](https://i-blog.csdnimg.cn/blog_migrate/7cca1bf372017aca52d58a72ac69f846.png)
4、输出层
和多层感知器的输出层一样,卷积神经网络的输出层也是使用似然函数计算各类别的似然概率。卷积神经网络出现后,最先被应用到手写字符分类上。手写字符识别用到的是 0 到 9这10个数字,所以有10个输出单元,每个单元对应于一个类别,使用如下 softmax \text{softmax} softmax函数可以计算输出单元的似然概率,然后把概率最大的数字作为分类结果的输出。
softmax \text{softmax} softmax函数: p ( y k ) = exp ( u 2 k ) ∑ q = 1 Q exp ( u 2 q ) p\left(y^{k}\right)=\frac{\exp \left(u_{2 k}\right)}{\sum_{q=1}^{Q} \exp \left(u_{2 q}\right)} p(yk)=∑q=1Qexp(u2q)exp(u2k)</