深度学习 - 卷积神经网络
深度学习 - 卷积神经网络
卷积神经网络的诞生
阶段1:传统的图像处理方式,基于机器学习的手工设计特征+分类器。
阶段2:全连接网络,多层网络学习复杂高维非线性映射的能力,使它们明显适合于传统模式识别模型中的图像识别任务。但存在几个问题:
- 图像尺寸大。如果把图像看成行向量作为输入层,即使第一层全连接选择尽量少的神经元,第一层的参数也很多,导致整体参数都很多,计算量很大,模型也只适用于小图像;
- 不具平移和局部失真的不变性。全连接网络每个神经元感受到的都是整幅图像,对平移,形变不具有不变性。只要对同一幅图像加入一些扰动,输出就会不同;
- 忽略输入拓扑结构。将一幅图像转换为行向量,行向量特征的顺序其实是可以打乱的,但是应该所有图像转换为行向量打乱的方式要相同。在不改变神经元的输出的前提下,输入数据可以是任意的顺序,这样训练网络其实对结果没有影响。但是,对于图像来说,一个像素与其相邻的像素往往是具有空间上的相关性的,那么可以从这个空间相关性出发提取到图像的一些局部的特征信息(如角特征和边缘特征等,应该传统方法中有局部特征提取的算子),显然提取图像局部特征是全连接网络做不到的。
阶段3:卷积神经网络(1998, LeNet,Gradient-Based Learning Applied to Document Recognition),基于局部连接或稀疏连接、权值共享、下采样来保证图片的位移、尺度、畸变不变性,同时也可以兼顾输入的拓扑结构,而且还减少了参数量。
卷积神经网络概念
-
权值共享:一个特征图中的每个神经元共享同一个卷积核和偏置单元;
-
局部连接:卷积层的节点仅仅和其前一层的部分节点相连接,只用来学习局部特征;
例如,把卷积看成两个矩阵相乘,输入多大就需要等效的权值矩阵,而卷积神经网络的过程当于用一个小滑窗的矩阵来滚动与输入矩阵相乘相加,权值共享指的是每个小滑窗对应的权值是相等的;而局部连接表示是输出结果仅仅来自于该小滑窗,如果与全部矩阵元素相乘,对应的是全连接;卷积操作减少参数数量,使运算变得简洁、高效,能够在超大规模数据集上运算。
- 下采样:一旦特征被检测出来,该特征的绝对位置并不重要,重要的是它相对于其他特征的相对位置,因此用下采样使得feature map变模糊,可以降低输出结果对于位移、形变的敏感性。例如,对于mnist数据集,当检测到输入图片的左上方有一个水平线的端点,右上方有一个拐点,下方有一个垂直线的端点时,我们可以确定这个字符是“7”。正相反,由于不同的“7”其实各有不同,特征的绝对位置很精确时,往往对于位置、形变的鲁棒性变差。
补充一点,平移不变性:在欧几里得几何中,平移是一种几何变换,表示把空间中的每一个点在相同方向移动相同距离;但权值共享和局部连接机制,卷积核在不同位置发挥相同的作用,仅仅目标位置不同,提取的特性相同,参考Link。注意:个人认为,感受野影响卷积的平移不变性,小尺度具有不变性,大尺度这个结论应该有问题。类似平移不变性的操作还包括最大池化,最大值移动但不改变结果,同样也保留了尺度不变性和旋转不变性。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)