写在前面
参考:
https://www.cnblogs.com/boostwei/p/15195643.html
https://www.youtube.com/watch?v=pj9-rr1wDhM
CNN做了什么
CNN的出现主要解决图像处理的两大难题:
1.图像处理的数据量过大以致处理成本昂贵且效率低
2.图象在数字化的过程中很难保证原有的特征
CNN结构
输入: 图像的每个像素
输出:我们希望分类的东西
过程:在输入与输出之间是卷积层,池化层和全连接层
一.输入
计算机是如何查看图像的?
图像(或者是其他形式的输入,如语音)以像素值矩阵的方式存储于数字设备中。
二.卷积层
内核
内核是一个比输入小几个数量级的矩阵,在卷积运算中,内核在输入图像上从左到右、从上到下移动,取它和输入图像的矩阵做点积,然后将值保存到新矩阵中,以此来提取图像的特征
是如何做到提取特征的?
用值初始化内核,他们可以用来转换输入图像。不同初始值的内核面对一张图像进行卷积时,检测到的边缘细节不同。一个卷积层可以有产生多个特征图的多个内核。
另外,由前述可知,在CNN中,卷积操作只是加权求和的线性操作。若神经网络中只用卷积层,那么无论有多少层,输出都是输入的线性组合,网络的表达能力有限,无法学习到非线性函数。因此CNN引入激活函数,激活函数是个非线性函数,常用于卷积层和全连接层输出的每个神经元,给神经元引入了非线性因素,使网络的表达能力更强,几乎可以逼近任意函数,这样的神经网络就可应用到众多的非线性模型中
三.池化层
池化层用于对特征图进行下采样,保留重要的部分,去除冗余的部分。这一步是防止过拟合,同时保留了重要信息使得空间变小,提升了后续的计算速度
实现方式仍然是一个内核。该内核在特征图上从左到右、从上到下地移动,与特征矩阵点积,并将值保存在新的矩阵中。
四.全连接层
“我们刚给讲了卷积层、池化层和激活函数,这些在全连接层之前层的作用都是将原始数据映射到隐层特征空间来提取特征,而全连接层的作用就是将学习到的特征表示映射到样本的标记空间。换句话说,就是把特征正合并到一起(高度提纯特征),方便交给最后的分类器或者回归。”