一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)- 产品经理的人工智能学习库 (easyai.tech)
人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。下面是人脑进行人脸识别的一个示例:
深度学习算法(包括CNN)的灵感来源:模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类
卷积层负责提取图像中的局部特征;池化层用来大幅降低参数量级(降维);全连接层类似传统神经网络的部分,用来输出想要的结果。
这个过程我们可以理解为我们使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。
在具体应用中,往往有多个卷积核,可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。
CNN中feature map、卷积核、卷积核个数、filter、channel的概念解释,以及CNN 学习过程中卷积核更新的理解_xys430381_1的博客-CSDN博客_卷积核个数
卷积核也称为过滤器(filter),具有长宽深三个维度,长宽是人为指定,深度与当前图像的深度相同。
CNN中feature map、卷积核、卷积核个数、filter、channel的概念解释,以及CNN 学习过程中卷积核更新的理解_xys430381_1的博客-CSDN博客_卷积核个数
漫画:卷积神经网络中的卷积核到底是什么? - 知乎 (zhihu.com)
对于不能识别的特征,计算值非常小:
综上,提取图片特征的关键,是设计合理的卷积核,做完卷积后,再经过池化,就可以得到相应的值。
用输出图像中更亮的像素表示原始图像中存在的边缘。通常,卷积有助于我们找到特定的局部图像特征(如边缘),用在后面的网络中。
总结:卷积层的通过卷积核的过滤提取出图片中局部的特征,跟上面提到的人类视觉的特征提取类似。
上图就是一个池化的示意图,用了一个10*10的卷积核,对20*20的图像分块不重叠的进行了池化,池化之后featuremap为2*2的大小。
(34 封私信 / 80 条消息) 池化是什么意思? - 知乎 (zhihu.com)
池化也称下采样层,会压缩输入的特征图,一方面减少特征,导致参数减少,进而简化了卷积网络计算时的复杂度;另一方面保持了特征的某种不变性(旋转、平移、伸缩等)。
池化操作组要分为两种:平均池化、最大池化
图像中的相邻像素倾向于具有相似的值,因此通常卷积层相邻的输出像素也具有相似的值。这意味着,卷积层输出中包含的大部分信息都是冗余的。如果我们使用边缘检测滤波器并在某个位置找到强边缘,那么我们也可能会在距离这个像素1个偏移的位置找到相对较强的边缘。但是它们都一样是边缘,我们并没有找到任何新东西。池化层解决了这个问题。这个网络层所做的就是通过减小输入的大小降低输出值的数量。
池化(下采样)是什么?图像池化与卷积的区别_Dontla的博客-CSDN博客_池化下采样
总结:池化层相比卷积层可以更有效的降低数据维度,这么做不但可以大大减少运算量,还可以有效的避免过拟合。
经过卷积层和池化层降维过的数据,全连接层才能”跑得动”,不然数据量太大,计算成本高,效率低下。
典型的 CNN 并非只是上面提到的3层结构,而是多层结构。
如卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层......
全连接层详解_pogg_的博客-CSDN博客_全连接层
全连接层(fully connected layers,FC)在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池化层和激活函数等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示”(下面会讲到这个分布式特征)映射到样本标记空间的作用。在实际使用中,全连接层可由卷积操作实现:
对前层是全连接的全连接层可以转化为卷积核为1x1的卷积;而前层是卷积层的全连接层可以转化为卷积核为hw的全局卷积,hw分别为前层卷积结果的高和宽。
全连接的核心操作就是矩阵向量乘积 y = Wx
深入理解卷积层,全连接层的作用意义_向阳+的博客-CSDN博客_卷积池化全连接的作用
卷积取的是局部特征,全连接就是把以前的局部特征重新通过权值矩阵组装成完整的图。
例如经过卷积,relu后得到3x3x5的输出。
那它是怎么样把3x3x5的输出,转换成1x4096的形式?
很简单,可以理解为在中间做了一个卷积。
从上图我们可以看出,我们用一个3x3x5的filter 去卷积激活函数的输出,得到的结果就是一个fully connected layer 的一个神经元的输出,这个输出就是一个值。因为我们有4096个神经元。我们实际就是用一个3x3x5x4096的卷积层去卷积激活函数的输出。
这样做,有一个什么好处就是大大减少特征位置对分类带来的影响。
从上图我们可以看出,猫在不同的位置,输出的feature值相同,但是位置不同。
对于电脑来说,特征值相同,但是特征值位置不同,那分类结果也可能不一样。
这时全连接层filter的作用就相当于喵在哪我不管,我只要喵,于是我让filter去把这个喵找到,实际就是把feature map 整合成一个值,这个值大,有喵,这个值小,那就可能没喵和这个喵在哪关系不大了,鲁棒性有大大增强。
全连接层参数特多(可占整个网络参数80%左右)
全连接层对模型影响参数就是三个:
总结:全连接层的作用就是通过特征提取,实现分类