二维图像卷积操作
假设输入n×n图像,卷积核大小为f×f,则输出的图像大小为 。(先不考虑步幅和padding)
缺点:(1)每次做卷积操作,你的图像会缩小;(2)角落的像素点只被一个输出所触碰或使用。而中间的像素点会有很多f*f的区域与之重叠。
Padding
填充图像的边缘,习惯上用0填充。使用padding后卷积输出的图像大小为: 。其中p为单边填充的大小。
于是Padding的存在与否,产生了两种类型的卷积,分别是Valid卷积和Same卷积。Valid意味着不填充,输出的图像大小为 。Same卷积表示填充至输出大小和输入大小一样,输出大小为 ,要使输出和输入大小一致,则 。
卷积步幅stride
意思是卷积核在某个维度上单次移动的步长。假设步幅为s,则输出图像大小 。当步幅为1时,就和上面的卷积输出大小一致。
一般来说,卷积核的大小f通常为奇数,很少见到边长为偶数的卷积核。可能的原因如下:
- 若f是一个偶数,那么只能使用一些不对称填充,只有f是奇数时才有自然的填充;
- 边长为奇数的卷积核有一个中心点,会更方便指出卷积核的位置。
(吴恩达老师推荐只使用奇数边长的卷积核)
按照数学上定义的卷积,要先将卷积核翻转然后在进行相乘求和。但现在定义的卷积操作跳过了这个镜像操作。从技术方面讲,这种操作有时被称为互相关而不是卷积。
三维RGB图像的卷积
当输入图像有特定的高、宽、通道数时,卷积核可以有不同的高、不同的宽,但必须有一样的通道数。有多少个卷积核,输出图像就有多少个通道。不管输入图片多大,卷积神经网络中一层的参数是不变的。
一个典型的卷积神经网络
通常有三层:1、卷积层;2、池化层;3、全连接层。虽然仅用卷积层也有可能构建出很好的神经网络,但大部分神经网络架构师依然会添加池化层和全连接层。池化层和全连接层比卷积层更容易设计。
卷积神经网络也经常使用池化层来缩减模型大小提高计算速度,同时提高所提取特征的鲁棒性。目前来说,最大池化比平均池化常用,主要原因可能是此法在很多实验中的效果都很好。大部分情况下,最大池化很少用到padding。
池化过程没有需要学习的参数,最大池化只是计算神经网络某一层的静态属性。人们在计算神经网络有多少层时,通常只是统计具有权重和参数的层,因池化层没有权重和参数,只有一些超参数,故通常把conv和pool共同作为一个卷积层。
卷积神经网络如此受用的原因
和只用全连接层相比,卷积层的两个主要优势在于参数共享和稀疏连接。卷积神经网络善于捕捉平移不变,因为神经网络的卷积结构,使即使移动了几个像素,所提取的特征仍非常相似。