CNN简述
卷积神经网络(Convolutional Neural Network,CNN),它是属于前馈神经网络的一种,其特点是每层的神经元节点只响应前一层局部区域范围内的神经元(全连接网络中每个神经元节点则是响应前一层的全部节点)。
一个深度卷积神经网络模型,一般由若干卷积层叠加若干全连接层组成,中间包含各种的非线性操作、池化操作。卷积运算主要用于处理网格结构的数据,因此CNN天生对图像数据的分析与处理有着优势,简单地来理解,那就是CNN是利用滤波器(Filter)将相邻像素之间的轮廓过滤出来。
1. 卷积核
卷积的滤波器(Filter)我们可以看做是一个window,可以观察下面的案例,有一个6X6的网络以及一个3X3的Filter,其中Filter的每个格子上有权值。拿着FIlter在网络上去移动,直到所有的小格子都被覆盖到,每次移动,都将Filter“观察”到的内容,与之权值相乘作为结果输出。最后,我们可以得到一个4X4的网格矩阵。
2. Padding(填充)
卷积后的矩阵大小与一开始的不一致,那么我们需要对边缘进行填充,以保证尺寸一致。
3. Stride(步长)
也就是Filter移动的步伐大小,上面的例子为1,其实可以由我们自己来指定,有点像是学习率。
4. Depth(深度)
深度指的是图片的深度,一张6X6X3大小的图片经过3X3X3的Filter过滤后会得到一个4X4X1大小的图片,因此深度为1。我们也可以通过增加Filter的个数来增加深度,如下:
5. Pooling(池化)
因为滤波器在进行窗口移动的过程中会有很多冗余计算,效率很慢,池化操作的目的在于加速卷积操作,最常用的有Maxpooling,其原理如下图所示:
完整的深度CNN网络
卷积操作的特点
1)Sparse Interaction(稀疏交互)
因为卷积核的尺度会小于输入的维度,也就是我们的FIlter会小于网络大小一样,这样子每个输出神经元仅仅会与部分特定局部区域内的神经元存在连接权重(也就是产生交互),这种操作特性我们就叫稀疏交互。稀疏交互会把时间复杂度减少好几个数量级,同时对过拟合的情况也有一定的改善。
2)Parameter Sharing(参数共享)
指的是在同一个模型的不同模块使用相同的参数,它是卷积运算的固有属性。和我们上面说的Filter上的权值大小应用于所有网格一样。