为什么要用卷积层
输入图像通常维数很高,沿用多层感知机的全连接层会导致庞大的参数量,大量的参数量需要繁重的计算并且会有过拟合的风险。卷积是局部连接,参数共享版的全连接层这两个特性使参数量极大地降低。卷积层中的权值通常被称谓滤波器(filter)或卷积核(convolution kernel)。
局部连接
在全连接层中,每个输出通过权值和输入相连接。一般在计算机视觉中,关键性的图形特征,边缘,角点等只占据图像的一小部分,图像相距很远的像素相互影响的可能性很小。因此卷积层中,每个输出神经元在通道方向上保持全连接,在空间上只和一小部分输入神经元相连。
共享参数
如果一组权值可以在图像中的某个区域提取出有效得到表示,那么他们也能在图像的另外区域中提取出有效的表示。也就是说,如果一个模式(pattern)出现在图像中的某个区域,那么他们也可以出现在图像的其他任何区域。因此,卷积层不同空间位置的神经元共享权值,其在减少网络参数的同时仍然能保持很高的网络容量(capacity)。卷积层在空间方向上共性参数,而循环神经网络在时间方向上参数共享。
卷积层的作用
通过卷积可以捕获图像的局部信息。通过多层卷积堆叠,各层提取到特征逐渐由边缘,纹理,方向等底层级特征过度到文字,车轮,人脸等高层级特征。
描述卷积的四个量
1,滤波器个数
使用一个滤波器对输入进行卷积会得到一个二维的特征图(feature map),使用多个滤波器对输入进行卷积可以得到多个特征图。
2,感受野F
卷积神经网络中每层的**特征图(Feature Map)**上的像素点在原始图像中映射的区域大小,也就相当于高层的特征图中的像素点受原图多大区域的影响.
3,零填充P
随着卷积地进行,图像大小将缩小,图像边缘分信息将逐渐丢失,因此在卷积前,在图像的上下左右填补一些0来控制输出特征图的大小。
4,步长S
卷积输入输出的大小关系
应该使用多大的滤波器
尽量使用小的滤波器,如3×3卷积.通过堆叠多层3×3卷积可以取得与大的滤波器具有相同的感受野,例如3层3×3卷积等于1层7×7卷积.
较小的滤波器有以下好处
1:更少的参数量
假设通道数为D。三层3×3卷积的参数量为3×(D×D×3×3)=27D^2,而一层7×7的卷积层参数量为:D×D×7×7=49D^2。
2.更多非线性
每层卷积后都有一层非线性激活函数,三层3×3经过三次非线性函数,而7×7只经过一次.
1×1卷积
旨在对每个空间位置的D维向量做一个相同的线性变化。通常用于增加非线性,或者降维,这相当于在通道数上进行了压缩。1×1卷积是减少网络计算量和参数的重要方式.
全连接层的等效
全连接层和卷积层都是做的点乘,这两种操作是可以相互等效的 。全连接层与卷积层相互等效只需要定好卷积层的四个量,1:滤波器个数等于全连接层输出神经元的个数,2:感受野等于输入空间大小3:没有零补充4:步长为1.
为什么要将全连接层等效为卷积层
全连接层只能处理固定大小的输入,而卷积层可以处理任意大小输入。假设训练图像的大小为224×224,而测试图像大小是256×256.如果不进行全连接层等效为卷积层,我们需要从测试图像中剪裁出多个224×224区域进行前馈网络,而等效后,我们只需要将256×256输入前馈网络一次即达到多次224×224区域的效果。
卷积结果的两种视角
卷积结果是从一个D×H×W的三位张量。
1.有D个通道,每个通道是一个二维特征图,从输入中捕取了某种特征。
2.有H×W个空间位置,每个空间位置是一个D维的描述向量,描述对应感受野的图像局部相关区域的语义特征。
卷积结果分布式表示
卷积结果的各通道之间不是独立的。卷积结果的各通道的神经元和语义概念之间是一个“多对多”的映射。多个通道的神经元共同表示。神经元的相映是稀疏的,大部分神经元输出为0.
卷积操作的实现
1.快速傅里叶变化(FFT)
通过变换到频域,卷积运算将变成为普通矩阵乘法。实际中滤波器尺寸大时效果好,对于通常使用的1×1和3×3卷积,加速不明显。
2.im2col(image to column)
im2col将于每个输出神经元相连的局部输入区域展成一个列向量,并将所有的列向量拼接成一个矩阵。这样卷积运算可以用矩阵的乘法实现,im2col的优点是可以利用矩阵乘法的高效实现,缺点是输入元素会在生成的矩阵中多次出现会占用很大的贮存空间。
此外,Strassen矩阵乘法和Winorgad也经常被使用。现有的计算机库如MKL和cuDNN,会根据滤波器大小选择合适的算法。
