CNN笔记(CS231N)——卷积神经网络(Convolutional Neural Networks)

卷积神经网络

如今卷积神经网络已经应用到生活的方方面面

我们上次讲了全连接层,全连接层一般作为卷积神经网络的最后一层

卷积层

那么我们来看卷积神经网络前面是什么结构呢?由于输入图片的像素很多,如果我们将每个像素进行全连接的话那我们需要学习十分多的权重,这样不仅需要非常多的训练数据,还可能出现过拟合的问题。因此我们采用的结构是定义一个卷积核,让这个卷积核在图片上进行卷积操作(即让这个核函数在图片上滑动,核函数对应的像素值加权相加,这个权重就是我们需要学习的参数)。需要注意的是图像有三个通道,我们在做卷积操作的时候是定义一个三维的卷积核来将这三个通道的像素值都包含进来进行加权。

当我们卷积操作结束以后我们就得到了一个二维的激活图(activation map),一个核函数对应了一个激活图,表示这个核函数在图中寻找一个特定的特性,因此我们需要很多的核函数来寻找图中不同的特征,因此我们输出的深度与核函数的个数相同

因此卷积神经网络就是由这样一层又一层卷积层叠加而成的

我们查看一个具体网络训练出来的权重结果,我们记得之前说过权重对应的某个类的一个模板,那么在卷积神经网络中权重代表着图片的一种特征,那么神经网络浅层对应的就是一些低阶特征,深层网络对应的是高阶特征

下图是不同核函数与原图卷积得出的激励图

需要注意的是不同的步长和核函数的大小会导致不同的激励图大小

如果不采用任何措施,这样导致的后果就是激励图越来越小,这样在深层网络中特征最终就会消失。因此在实践中我们经常采用zero padding的方法保证输入输出大小相同

以下是对这些参数的一个总结

这种卷积的形式与大脑中神经元的行为非常类似,我们把卷积核的大小也叫作这个神经元的接收域

池化层

在我们得到卷积层输出以后,为了减小运算量,我们常采用池化层的方法来减小特征的维度,池化层实际上就是对图像进行一次下采样

最常用的池化操作是最大池化

以下就是一个实际的卷积神经网络的例子,当我们经过几次卷积层+池化层以后我们得到了高维的特征,在最后一层我们不再对其进行卷积操作,而是将所有像素进行全连接操作,再利用ReLU函数处理,得到各个分类的输出值

以下就是对神经网络的总结

猜你喜欢

转载自blog.csdn.net/shanwenkang/article/details/86669515