机器学习之卷积神经网络(自用学习笔记)

引入

卷积神经网络(CNN)主要应用于计算机视觉,用于识别图像。它总共可以分成四个结构

输入层 ,卷积层 ,池化层 ,全连接层 。

详细介绍CNN

1)输入层

与普通神经网络类似,但普通神经网络输入可能是一个N维向量,卷积神经网络输入通常是二维或三维的矩阵。例如,若传入的是某图像的灰度图,那么输入层就是一个m*n*1的三维矩阵,每一个输入都代表对应位置的灰度值;如果传入的是一个RGB三通道图像,那么输入层就是一个m*n*3的三维矩阵。

2)卷积层(核心)

卷积层工作原理:

我们先考虑灰度图:

机器学习之卷积神经网络(自用学习笔记)_第1张图片

 比如我们想识别一个图像是X还是O,但要求不管图像是否出现旋转、剪切、增厚,我们都能够识别出它,应该怎么做呢?

计算机的方法是选取X的几个特征,也就是卷积核,再在被识别的图像中尝试提取出这些特征。

机器学习之卷积神经网络(自用学习笔记)_第2张图片

如上图,提取出三个卷积核。

此时我们需要的就是在新的图像上找这三个特征。 

比如我们先找第一个卷积核,

机器学习之卷积神经网络(自用学习笔记)_第3张图片

filtering: 

相当于把卷积核一点点覆盖image,对应位置相乘后相加再平均,把得到的值填充在一个新的矩阵中,也就是convolved feature。

若特征完全一样,对应位置填充1机器学习之卷积神经网络(自用学习笔记)_第4张图片

若特征不完全一样:机器学习之卷积神经网络(自用学习笔记)_第5张图片得到的数据就比1小,比如0.55,就表示保留了0.55的特征。

等该卷积核对图像进行卷积核运算完成后,输出的就是一个新的但更小的矩阵

机器学习之卷积神经网络(自用学习笔记)_第6张图片

并且得到的矩阵正好能反应卷积核的特征 。

如果是三通道图像,且我们用两个卷积核(第一竖列为第一个卷积核对三个通道的卷积,加上bias之后得到第一个output volume)

 若卷积核是原图本来就不包含的特征,就会出现大部分是乱码的输出。

卷积之后我们的d从3变为2(有几个卷积核就有几层),矩阵的大小也小了不少

经过卷积运算我们可以得到一个feature map

3)池化层

为减少运算量,加快运算速度,我们进一步简化feature map,这时候用到pooling。

池化分为最大池化和平均池化等,最常用的是最大池化,也就是把矩阵分为几块,然后取每个子矩阵中最大值作为新矩阵的输入。

机器学习之卷积神经网络(自用学习笔记)_第7张图片

 

直觉上,这种机制能够有效地原因在于,一个特征的精确位置远不及它相对于其他特征的粗略位置重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。

卷积和池化往往穿插使用,因为卷积就相当于一个特征发现系统,但其精度过高,会导致图像微小变化就无法识别的情况。此时我们就可以用到池化操作来钝化神经网络对精确位置的敏感性。

5)线性整流层(ReLU layer)

用线性整流函数它可以增强判定函数和整个神经网络的非线性特性(?),而本身并不会改变卷积层。

 6)完全连接层(FC)

这一步就相当于普通的NN,我们只需要把经过一系列卷积、整流、池化后的矩阵展平成NN的输入,然后通过训练这个NN得到最终的最优w、b。

你可能感兴趣的:(机器学习,cnn,学习)