卷积神经网络通俗理解( 二 )


局部区域
图片是矩阵式的 , 将这些以矩阵排列的节点展成了向量 。就能更好的看出来卷积层和输入层之间的连接 , 并不是全连接的 , 我们将上图中的红色方框称为filter , 它是2*2的 , 这是它的尺寸 , 这不是固定的 , 我们可以指定它的尺寸 。
我们可以看出来当前filter是2*2的小窗口 , 这个小窗口会将图片矩阵从左上角滑到右下角 , 每滑一次就会一下子圈起来四个 , 连接到下一层的一个神经元 , 然后产生四个权重 , 这四个权重(w1、w2、w3、w4)构成的矩阵就叫做卷积核 。
卷积核是算法自己学习得到的 , 它会和上一层计算 , 比如 , 第二层的0节点的数值就是局部区域的线性组合(w1 0+w2 1+w3 4+w4 5) , 即被圈中节点的数值乘以对应的权重后相加 。
卷积核计算
卷积操作
我们前面说过图片不用向量表示是为了保留图片平面结构的信息 。同样的 , 卷积后的输出若用上图的向量排列方式则丢失了平面结构信息 。所以我们依然用矩阵的方式排列它们 , 就得到了下图所展示的连接 , 每一个蓝色结点连接四个黄色的结点 。
卷积层的连接方式
图片是一个矩阵然后卷积神经网络的下一层也是一个矩阵 , 我们用一个卷积核从图片矩阵左上角到右下角滑动 , 每滑动一次 , 当然被圈起来的神经元们就会连接下一层的一个神经元 , 形成参数矩阵这个就是卷积核 , 每次滑动虽然圈起来的神经元不同 , 连接下一层的神经元也不同 , 但是产生的参数矩阵确是一样的 , 这就是 权值共享。
卷积核会和扫描的图片的那个局部矩阵作用产生一个值 , 比如第一次的时候 , (w1 0+w2 1+w3 4+w4 5) , 所以 , filter从左上到右下的这个过程中会得到一个矩阵(这就是下一层也是一个矩阵的原因) , 具体过程如下所示:
卷积计算过程
上图中左边是图矩阵 , 我们使用的filter的大小是3 3的 , 第一次滑动的时候 , 卷积核和图片矩阵作用(1 1+1 0+1 1+0 0+1 1+1 0+0 1+0 0+1 1)=4 , 会产生一个值 , 这个值就是右边矩阵的第一个值 , filter滑动9次之后 , 会产生9个值 , 也就是说下一层有9个神经元 , 这9个神经元产生的值就构成了一个矩阵 , 这矩阵叫做特征图 , 表示image的某一维度的特征 , 当然具体哪一维度可能并不知道 , 可能是这个图像的颜色 , 也有可能是这个图像的轮廓等等 。
单通道图片总结 :以上就是单通道的图片的卷积处理 , 图片是一个矩阵 , 我们用指定大小的卷积核从左上角到右下角来滑动 , 每次滑动所圈起来的结点会和下一层的一个结点相连 , 连接之后就会形成局部连接 , 每一条连接都会产生权重 , 这些权重就是卷积核 , 所以每次滑动都会产生一个卷积核 , 因为权值共享 , 所以这些卷积核都是一样的 。卷积核会不断和当时卷积核所圈起来的局部矩阵作用 , 每次产生的值就是下一层结点的值了 , 这样多次产生的值组合起来就是一个特征图 , 表示某一维度的特征 。也就是从左上滑动到右下这一过程中会形成一个特征图矩阵(共享一个卷积核) , 再从左上滑动到右下又会形成另一个特征图矩阵(共享另一个卷积核) , 这些特征图都是表示特征的某一维度 。
三个通道的图片如何进行卷积操作?
至此我们应该已经知道了单通道的灰度图是如何处理的 , 实际上我们的图片都是RGB的图像 , 有三个通道 , 那么此时图像是如何卷积的呢?
彩色图像
filter窗口滑的时候 , 我们只是从width和height的角度来滑动的 , 并没有考虑depth , 所以每滑动一次实际上是产生一个卷积核 , 共享这一个卷积核 , 而现在depth=3了 , 所以每滑动一次实际上产生了具有三个通道的卷积核(它们分别作用于输入图片的蓝色、绿色、红色通道) , 卷积核的一个通道核蓝色的矩阵作用产生一个值 , 另一个和绿色的矩阵作用产生一个值 , 最后一个和红色的矩阵作用产生一个值 , 然后这些值加起来就是下一层结点的值 , 结果也是一个矩阵 , 也就是一张特征图 。