深度学习-卷积数学第一章-卷积和池化

第一章

介绍

CNN已经成文深度学习巨大进步的核心要素。虽然CNN早在1997年就被使用解决字符识别问题,但是它广泛于2012年imagenet图像分类上的极佳表现。CNN因此成为一个从业者有力工具。然而首次学习CNN通常是一个需要巨大跨越的一步。CNN卷积层的输出shape与输入尺寸、padding、stride等有关,并且不容易去理解。这可与输出shape固定的全连接层形成对比。除此之外,CNN业通常包括pool阶段,这也为CNN添加了复杂度。最后,transposed convolution转置卷积(也被叫做分数stride卷积)已经被应用到很多工作中。

本指南的目标有两个:

(1)解释卷积层和转置卷积层之间的关系。

(2)直观地理解卷积,池化和转置卷积层中输入形状,核形状,零填充,步幅和输出形状之间的关系。

1.1离散卷积

神经网络的基本是仿射变换:一个向量作为输入乘以一个矩阵产生一个输出(在通过非线性变换之前加上一个偏执)。其输入类型任意,可以是图片声音和无序特征集合,无论他们的维度表示如何都可以压平成一个向量。他们有一些共同属性:

(1)多维数组存储

(2)具有轴axe,例如图像的宽高,音频的时间轴

(3)其中一个轴叫作通道,被用于访问不同的数据视角,例如RGB颜色通道,左右声道

这些属性在仿射变换的时候并没有被应用,所有的axe都被以相同的方式处理,拓扑信息也没有被考虑其中。尽管利用数据的潜在结构可以方便的解决视觉、语音识别等问题。

离散卷积是一个线性变换,他能保存顺序这一概念。他是稀疏的(仅仅一部分输入可以对输出有贡献)并参数重用(相同的权重被应用于输入的多个位置).

深度学习-卷积数学第一章-卷积和池化

深度学习-卷积数学第一章-卷积和池化

 

如图1.1所示是一个2D卷积实例,可以由此扩展到N-D卷积,比如3D卷积的kernel是一个长方体,它将在输入特征图的长、宽和深度三个方向上滑动。

深度学习-卷积数学第一章-卷积和池化

 

如图1.2所示,是一个2D卷积,其中input=5*5,kernel=3*3,padding=1*1,stride=[2,2]。

深度学习-卷积数学第一章-卷积和池化

如图1.3所示,输入是一个5*5*2的特征图,kernel w是3个 3*3*2的内核,每一个3*3*2的内核都对输入做卷积,将得到的结果进行通道合并形成一个单层特征图,最后三个3*3*2的内核输出通道为3。这样进行了通道数的改变。

深度学习-卷积数学第一章-卷积和池化

如图1.4所示,左侧为stride=2的卷积,右侧为stride=1的卷积,卷积后将去掉一部分元素,这样两者得到了相同的结果。

 

1.2池化

除了离散卷积之外,池化要是CNN的重要组成部分,池化通过使用某些函数合并特征图的子区域,从而达到缩小特征尺寸的目的。比如取平均值和最大值。

深度学习-卷积数学第一章-卷积和池化

如图1.5所示,input=5*5*1,kernel=3*3*1的平均池化,stride=1*1。