掌握卷积神经网络(CNN)的细碎知识点
最开始计算卷积的过程中,需要进行翻转卷积核的操作。
引入的互相关,用滑动窗口的点积计算来实现,可以省去翻转的步骤,这是因为使用点积运算是为了进行特征提取,而卷积核是否翻转与其特征抽取的能力并无关系。
CNN特点
CNN的特点可以概括为:局部连接、权重共享。
1. 局部连接
如果使用全连接,参数个数为,如果变成局部连接,参数个数为,其中K为卷积核的大小。可以有效减少参数的个数。
2. 权重共享
作为卷积核对第层的所有神经元相同,可以理解为一个卷积核只捕捉输入数据的一种特定局部特征。因此,如果需要对多特征进行提取,则需要多个卷积核。
因此,在第层中,需要参数的个数为,参数个数与神经元的数量是无关的。
3D卷积核
卷积核厚度等于1时为2D卷积,对应平面点相乘然后把结果加起来,相当于点积运算;
卷积核厚度大于1时为3D卷积,每片分别平面点求卷积,然后把每片结果加起来,作为3D卷积结果;
1x1卷积属于3D卷积的一个特例,有厚度无面积, 直接把每片单个点乘以权重再相加。
归纳之,卷积的意思就是把一个区域,不管是一维线段,二维方阵,还是三维长方块,全部按照卷积核的维度形状,对应逐点相乘再求和,浓缩成一个标量值也就是降到零维度,作为下一层的一个feature map的一个点的值!
可以比喻一群渔夫坐一个渔船撒网打鱼,鱼塘是多层水域,每层鱼儿不同。
船每次移位一个stride到一个地方,每个渔夫撒一网,得到收获,然后换一个距离stride再撒,如此重复直到遍历鱼塘。
A渔夫盯着鱼的品种,遍历鱼塘后该渔夫描绘了鱼塘的鱼品种分布;
B渔夫盯着鱼的重量,遍历鱼塘后该渔夫描绘了鱼塘的鱼重量分布;
还有N-2个渔夫,各自兴趣各干各的;
最后得到N个特征图,描述了鱼塘的一切!
由上图可知,输入层和滤波器有着相同的深度,即输入层的通道数量与滤波器中卷积核数量相同。在每个滑动位置,执行乘法和加法运算得到一个运算结果(单个数字),因此最后得到的输出层仅含一个输出通道。
进一步地,我们就能非常轻易地理解如何在不同深度的层(Layer)进行转换。假设输入层有个通道,而输出层需要得到个通道。只需要将个过滤器对输入层进行处理,而每一个过滤器有个卷积核。每个过滤器提供一个输出通道。完成该过程,将得到个通道组成输出层。