卷积
注:该节内容(图片及文字)均来自书本,自行整理供初学者参考
概述:在局部相关性的先验加持下,我们提出了简化的“局部连接层”,对于窗口 k 内的所有像素,采用权值相乘累加的方式提取特征信息。对于图片数据,这种权值相乘累加的运算其实是信号处理领域的一种标准运算:离散卷积运算。离散卷积运算在计算机视觉中有着广泛的应用,这里给出卷积神经网络从数学角度的阐述。
卷积:“卷”是指翻转平移操作,“积”是指积分运算。
这里定义了1D连续卷积及其运算。
这里定义的是2D离散卷积运算。
这里具体介绍了2D离散卷积的运算过程。
卷积神经网络
概述:卷积神经网络通过充分利用局部相关性和权值共享的思想,大大地减少了网络的参数量,从而提高训练效率,更容易实现超大规模的深度网络。
卷积神经网络层
(本节示例均以输入X为5×5的矩阵,卷积核为3×3的矩阵为例,输出记为O)
单通道输入,单卷积核
第一步运算:
将绿框中3×3矩阵与卷积核3×3矩阵相乘(对应位置元素直接相乘),得到一个新的3×3矩阵,再将九个元素求和得7(如下图)。
第二步运算:
将绿框向右平移一格,做和第一步相同的运算,得到结果10。
以此类推
……
得到最终结果:
可以看出,原5×5矩阵和3×3矩阵相乘结果为一个新的3×3矩阵,简记为5×5*3×3=3×3(*表示卷积运算)。
多通道输入,单卷积核
(以3层通道为例)
第一步运算:
与单通道运算同理,将每一层通道单独计算,然后将每一层计算结果相加得到最终结果-5。
同理,第二步运算:
以此类推
……
得到最终结果:
同样可以看出,原三层5×5矩阵和3×3矩阵相乘结果为一个新的一层的3×3矩阵,简记为5×5×3*3×3×3=3×3×1。
下面是多通道输入,单卷积核示意图:
多通道输入,多卷积核
(运算过程与上面类似,不作详细说明)
运算示意图:
步长(strides)
步长用图形直观描述为每次“绿框”的移动格数,简写为s。
在之前所举例中,步长s均默认为1。本示例“绿框”移动步数为2,即步长s为2,最终运算结果为2×2矩阵。
由此可见,步长可以控制密度的提取。步长较小时,有利于提取更多的信息;步长较大时,有利于减少计算代价,过滤冗余信息。
填充(padding)
填充的数字均为0,下面是一个填充示例:(“填充”简写为p)
由之前例子可以看出,输出O的高和宽小于输入X的高和宽(无论步长为多少)。其实这里隐藏了一个公式:假设输入X为一个n×n矩阵,卷积核为f×f,则得到的输出O为(n-f+1)×(n-f+1)。
为了使输出O的高和宽等同于输入X的高和宽,通过填充的概念可以实现,该填充过程如图:
通过上下左右均填充一个单位,再依次计算,得到结果如下:
可以发现,输出O与输入X大小相同(均为5×5)。
这里有一个疑问:为什么上下左右各填充一个单位可以使得输入X和输出O的高和宽相等?
在填充之后,上面得到的公式变为:(n+2p-f+1)×(n+2p-f+1),令n+2p-f+1=n,就可以解出p=(f-1)/2。例如上图示例f=3,代入即得p=1。
最后,综合上述所有概念,我们可以得到一个最终的计算公式:
记输入X为一个n×n矩阵,卷积核为一个f×f矩阵,步长为s,填充单位为p,则输出O的矩阵大小为:
池化层
概述:在卷积层中,可以通过调节步长参数 s 实现特征图的高宽成倍缩小,从而降低了网络的参数量。实际上,除了通过设置步长,还有一种专门的网络层可以实现尺寸缩减功能,这就是池化层。
池化分为最大池化和平均池化。顾名思义,最大池化就是取最大值,平均池化就是取平均值,如图:
全连接层
概述:全连接层在整个卷积神经网络中起到“分类器”的作用。在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为1x1的卷积。
感谢阅读
本文“概述”部分均摘自书本,自行整理供初学者参考。其他部分如有错误,请大家指正!谢谢大家!