【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )



I . 人类的视觉原理



1 . 深度学习 与 大脑认知 :


① 深度学习基础 : 大脑对外界事务的认知原理 , 是很多深度学习算法的基础 , 这里讨论人类的视觉原理 ,

② 视觉原理 : 视觉识别信息处理过程 , 是由可视皮层完成的 , 并且可视皮层是分级的 ;

③ 卷积神经网络来源 : 卷积神经网络 受 人类视觉原理启发 , 而开发出来的 ;


2 . 视觉原理 与 可视皮层 分层 :


① 信号输入 : 视觉输入原始信号 , 即大脑从瞳孔中摄入一张由像素值组成的图片 ;

② 识别边缘 ( 可视皮层 底层 ) : 将输入的像素值 , 进行 初步处理 , 识别像素的 边缘 , 方向 信息 ;

③ 识别形状 ( 可视皮层 中层 ) : 将 边缘信息 抽象成 形状信息 , 如圆形 , 方形等 ;

④ 判定类别 ( 可视皮层 上层 ) : 在上述识别形状的基础上 , 判定该形状是什么类型的事务 , 如桌子 , 汽车等 ;



II . 卷积神经网络 模仿 视觉原理



卷积神经网络 原理 :


① 模拟视觉原理 : 人类视觉识别涉及到了 不同层级 的可视皮层 , 每层分别处理不同的事务 ;

② 构建多层神经网络模型 : 模仿上述分层的课视频曾 , 创建多层神经网络模型 , 如 卷积神经网络 ;

③ 分层工作机制 : 多层神经网络模型机制 , 在底层识别图像的边缘特征 , 上一层逐渐识别形状 , 最上层对图像像素进行判定分类 ;



III . 卷积神经网络简介



卷积神经网络 简介 :


① CNN 卷积神经网络 处理的数据类型 : CNN 卷积神经网络 , 是特殊的神经网络 , 其通常用于处理网格状的数据 , 如 时间序列 ( 音频数据 ) , 或 图片数据 ;

② CNN 适用场景 : CNN 卷积神经网络其本质是一个多层神经网络 , 该模型适合处理 大型图像 相关的 机器学习 问题 ;

③ CNN 成就 : CNN 在 深度神经网络 中是应用最早 , 最成功的的领域 ;

④ CNN 的计算 : 卷积神经网络其本质还是 神经网络 , 其基本的计算由 矩阵相乘 变成了 卷积 ;

⑤ CNN 处理图像原理 : 处理大型图像时 , 将图像识别问题 降维处理 , 从底层向高层 , 不断抽取特征时 , 其维度越降越低 , 最终将其变成可训练的模型 ;



IV . 卷积神经网络 组成



卷积神经网络 构成 :


① 组成 : 卷积神经网络由 卷积层 , 池化层 , 全连接层 , 组成 ;

② 卷积组 : 卷积层 与 池化层 , 配对组合 , 即 11 个卷积 + 11 个池化 , 组成 11 个卷积组 ; 整个卷积神经网络中有多个卷积组 ;

③ 工作机制 : 按照上述分层 , 逐层提取数据 ( 图像 ) 特征 , 这些特征通过全连接层结合起来 , 完成最终的分类判定操作 ;



V . 卷积神经网络 工作流程



卷积神经网络 工作流程 :


① 卷积 : 通过卷积 模拟 特征 ;

② 池化 : 通过卷积的 权值 共享 , 池化 , 可以降低整体网络的参数数量级 ;

③ 连接分类 : 上述 卷积 池化 后的结果通过传统的 神经网络 进行分类即可 ;



VI . 降低样本参数数量级



1 . 传统神经网络分析图片 : 使用 传统神经网络 分析一张图片 , 如果该图片有 100100 万 像素 , 那么需要将每个像素值都作为一个属性值输入到神经网络中 , 那么其隐藏层有 100100 万神经元单元 , 如果这样的图片有几万张 , 这个数量级太复杂 ;


2 . 卷积神经网络 减少参数数量级 原理 :


① 底层特征局部性 : 图像的最底层的特征都是局部性的 , 使用一个小的过滤器 , 10×1010 \times 10 像素 , 就可以将图像的 边缘 特征表示出来 ; 边缘底层特征是 横向 , 垂直 , 斜线 , 等边缘 形状特征 ;

② 图像特征类似 : 图像中的特征 , 不管是相同图像 , 还是不同图像 , 其中的片段的特征是类似的 , 可以使用 同一组分类器 描述 不同的图像 特征 ; 如训练识别一只猫的图像 , 在这张图片上的猫 , 与另外一张图片的猫 , 其片段特征的是类似的 ;

③ 降低数量级 : 100100 万像素的图片 , 可以使用 11 万个 10×1010 \times 10 像素 的过滤器 , 描述图片底部的特征 ;



VII . 卷积计算 图示分析



1 . 原始输入 与 卷积核 :


① 原始输入 : 需要识别的图像 ;

② 卷积核 : 可以看做是滑动窗口 , 在图像上滑动 ;

【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )


2 . 第 11 次卷积 : {a,b,e,f}\{a , b , e , f \} 与 卷积核 {w,x,y,z}\{w, x, y , z\} 进行卷积 计算 : 如下图 , 对应位置的值相乘 , 然后将 44 个乘积相加 , 这个操作表示一次卷积运算 , 结果是 (aw+bx+ey+fz)( aw + bx + ey + fz ) ;

【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )


3 . 第 22 次卷积 :{b,c,f,g}\{b,c,f,g \} 与 卷积核 {w,x,y,z}\{w, x, y , z\} 进行卷积 计算 : 如下图 , 对应位置的值相乘 , 然后将 44 个乘积相加 , 这个操作表示一次卷积运算 , 结果是 (wb+xc+yf+zg)( wb + xc + yf + zg ) ;

【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )


4 . 第 33 次卷积 :{c,d,g,h}\{c,d,g,h\} 与 卷积核 {w,x,y,z}\{w, x, y , z\} 进行卷积 计算 : 如下图 , 对应位置的值相乘 , 然后将 44 个乘积相加 , 这个操作表示一次卷积运算 , 结果是 (wc+xd+yg+zh)( wc + xd + yg + zh ) ;

【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )


5 . 第 44 次卷积 :{e,f,i,j}\{e , f,i,j \} 与 卷积核 {w,x,y,z}\{w, x, y , z\} 进行卷积 计算 : 如下图 , 对应位置的值相乘 , 然后将 44 个乘积相加 , 这个操作表示一次卷积运算 , 结果是 (we+xf+yi+zj)( we + xf + yi + zj ) ;

【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )


6 . 第 55 次卷积 :{f,g,j,k}\{f,g,j,k\} 与 卷积核 {w,x,y,z}\{w, x, y , z\} 进行卷积 计算 : 如下图 , 对应位置的值相乘 , 然后将 44 个乘积相加 , 这个操作表示一次卷积运算 , 结果是 (wf+xg+yj+zk)( wf + xg + yj + zk ) ;

【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )


7 . 第 66 次卷积 :{g,h,k,l}\{g,h,k,l \} 与 卷积核 {w,x,y,z}\{w, x, y , z\} 进行卷积 计算 : 如下图 , 对应位置的值相乘 , 然后将 44 个乘积相加 , 这个操作表示一次卷积运算 , 结果是 (wg+xh+yk+zl)( wg + xh + yk + zl ) ;

【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )


8 . 卷积结如下 : 变成了一个 2×32 \times 3 的图像 ;

【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )


9 . 卷积效果 :


① 卷积 结果 : 原来的输入图像是 3×43 \times 4 像素 , 经过卷积后 , 变成了 2×32 \times 3 的图像 ;

② 效果 : 维度降低了 , 参数变少了 ;

③ 卷积核维度 : 如果使用 3×33 \times 3 的卷积核 , 那么维度降低的更多 ;



VIII . 卷积计算 简介



1 . 卷积计算 :


① 输入图 : 要分析的图片 , 又叫做特征图 ;

② 卷积核 :大小是固定的 , 用于扫描输入图 ; 可以由学习得到 , 也可以使用事先设计好的卷积核 ;

③ 内积运算 : 就是所有对应元素相乘 , 然后求和的结果 ;

③ 卷积计算过程 : 使用卷积核 扫描 输入图 , 如上示例 , 将扫描到的 输入图的部分内容 , 与卷积核的内容 , 进行内积运算 ;


2 . 常用的卷积核 :


① 常用卷积核 1 :

0 0 0
0 0 0
0 0 0

② 常用卷积核 2 :

-1 -1 -1
0 0 0
1 1 1

③ 常用卷积核 3 :

-1 0 1
-1 0 1
-1 0 1


IX . 卷积计算 示例



计算图中的最后两个空白位置的卷积 :

【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )
输入图是 5×55\times 5 的 , 卷积核是 3×33 \times 3 的 ;

黄色部分是卷积核为 : [101010101]\begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{bmatrix}


卷积计算过程如下 :


① 第 33 行第 22 列 卷积结果 : 卷积核 [101010101]\begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{bmatrix}[011010110]\begin{bmatrix} 0 & 1 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{bmatrix} 进行卷积运算 , 如下 :

(1×0)+(0×1)+(1×1)+(0×0)+(1×1)+(0×0)+(1×1)+(0×1)+(1×0)=3(1 \times 0 ) + (0 \times 1 ) + (1 \times 1 ) + \\\\ (0 \times 0 ) + (1 \times 1) + (0 \times 0 ) + \\\\ (1 \times 1 ) + (0 \times 1) + (1 \times 0) = 3


② 第 33 行第 33 列 卷积结果 : 卷积核 [101010101]\begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \end{bmatrix}[111110100]\begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 0 \\ 1 & 0 & 0 \end{bmatrix} 进行卷积运算 , 如下 :

(1×1)+(0×1)+(1×1)+(0×1)+(1×1)+(0×0)+(1×1)+(0×0)+(1×0)=4(1 \times 1 ) + (0 \times 1 ) + (1 \times 1 ) + \\\\ (0 \times 1 ) + (1 \times 1) + (0 \times 0 ) + \\\\ (1 \times 1 ) + (0 \times 0) + (1 \times 0) = 4



X . 卷积本质



1 . 卷积 及 卷积核 本质 :


① 卷积核本质 : 卷积核的本质相当于一个过滤器 , 可以过滤识别图像的各个区域的特征 , 获取这些区域的特征值 ;

② 卷积核来源 : 卷积核一般是在学习训练过程中得到的 ;

③ 卷积结果的意义 : 每个卷积核代表了一种图像的特征模式 , 如果某个区域与该卷积核 进行内积运算 , 卷积出的值很大 , 说明该区域与该卷积核图像类似 ;

④ 多个卷积核 : 在实际使用中 , 一个卷积神经网络 , 可能会有多个卷积核 ;



2 . 卷积核底层纹理 :


① 底层纹理模式 : 如果有 nn 个卷积核 , 可以理解为该图像有 nn 种底层的纹理模式 , 使用这些纹理模式的特征可以绘制出一幅图像 , 也能从一堆杂乱的图像中识别出该图像 ;


② 底层纹理示例 : 下图是常用的 2424 种卷积核 , 也就是 2424 种底层纹理模式 ; 如 第 44 行 , 第 22 列 , 三条垂直的线 , 亮线表示 1 , 暗线表示 0 , 因此可以使用卷积核 [100100100]\begin{bmatrix} 1 & 0 & 0 \\ 1 & 0 & 0 \\ 1 & 0 & 0 \end{bmatrix} 表示 , 该纹理 , 最左侧是亮的 , 右边两个是暗的 ;
【数据挖掘】卷积神经网络 ( 视觉原理 | CNN 模仿视觉 | 卷积神经网络简介 | 卷积神经网络组成 | 整体工作流程 | 卷积计算图示 | 卷积计算简介 | 卷积计算示例 | 卷积计算参数 )



XI . 卷积 计算 参数



1 . 通道数 : 卷积核的个数 ;


① 输入通道数 : 上一层输出的通道数量 , 即卷积核的个数 ;

② 输出通道数 : 本层输出的通道数量 , 即卷积核的个数 ;


2 . 卷积核大小 :


① 卷积核大小关联性 : 与卷积计算后 , 每个卷积结果输出值 , 与多大范围的输入图像有关 , 即上面说的过滤器大小 , 底层纹理大小 , 滑动窗口大小 ;

② 建议取值 : 建议使用奇数大小 , 这样能保证卷积计算后 , 有唯一的一个中心点 ;

③ 卷积核效果 : 卷积核 越大 , 分类效果越好 ;

④ 卷积核参数数量 : 卷积核增大 , 其参数就会指数级增加 , 参数个数是卷积核的平方 , 即进行内积运算的参数个数 ; 如卷积核为 33 , 那么参数有 99 个 , 卷积核为 55 , 参数有 2525 个 ;


3 . 填充 : 不想降维 , 先将输入图 对称 补 00 , 然后进行滑动窗口 , 卷积计算 ;


① 降低维度 : 卷积之后 , 不想降维 , 如前面的 5×55 \times 5 的输入图 , 使用 3×33 \times 3 卷积核 , 卷积之后变成了 3×33 \times 3 的图像 , 这里就将输入图的维度下降了 ;

② 对称补 00 : 如果不想降低输入图的维度 , 可以使用填充 , 即先在周边位置使用 00 补充 , 注意对称补充 , 不要在一个边上补 00 , 然后再进行卷积计算 ;


4 . 步长 : 每次卷积核的移动距离 ( 单位 : 像素 ) , 即 每次移动滑动窗口 ( 卷积核 ) 的距离 , 单位是像素 , 之前的两个例子都是每次移动一个像素值 ;