10、Convolutional Neural Network(卷积神经网络)

上一篇博客介绍了神经网络构建的整个过程以及优化思路,本篇博客将进一步介绍卷积神经网络(CNN,Convolutional Neural Network)


目录

Why CNN?

CNN模型

Convolution

Max Pooling

Convolution+Max Pooling

Keras实战演练


Why CNN?

  • CNN本质是原来full-connected神经网络的简化,参数大大减少,因此计算的效率比较高,且在一定程度上消除过拟合的风险。直观地以图像识别为例,在识别鸟类图像时,识别“喙”这一特征并不需要在整个图像中找,而是在一个小的区域中搜索;
  • 一个特征(比如“喙”)可能出现在图的任何位置,我们只要考虑这一特征的提取而不用管特征在图形的具体位置;
  • 图形可以做重抽样而不影响图像

这三个性质对应了CNN中的两个重要概念Convolution和Max Pooling。

CNN模型

Convolution

在CNN中,每个filter(特征)是一个矩阵,里面的参数是通过学习学出来的(如full-connected神经网络中的w),现在假设我们已经知道每个filter矩阵的数值(实际操作流程是我们设置filter矩阵的个数、形状,矩阵中的数值则是通过算法学习得到),我们现在对filter1进行分析。

扫描二维码关注公众号,回复: 2904992 查看本文章

计算的方式是用filter1和原数据的同样形状部分做内积,stride控制每次红色框的移动单位,此时得到的矩阵(橘色部分)称为Feature Map

如图所示,6*6的像素矩阵表示为36维的输入向量,上述filter的内积运算可以表示为对应维数据的矩阵运算,权重颜色和filter的颜色一一对应,此时所有矩阵计算共有相同的权重矩阵,由此可以说明CNN本质是full-connected神经网络的简化。

Max Pooling

对filter计算过后的Feature Map分组(如下,做2*2分组,也可以使用任意x*x分组),并保留每个组最大值,此时得到更小的数据(4*4\rightarrow2*2),这个过程被称为Max Pooling。

Convolution+Max Pooling

 

完整的一次Conv与Max Pooling处理之后,原始数据(6*6)被转化为较小的数据(2*2)。

在实际的图像处理中往往会进行多次的完整Conv与Max Pooling,最终大大减小数据矩阵的行列,然后将数据矩阵进行flatten处理(如把2*2维的数据矩阵转换为4维的向量)得到输入向量,输入Fully Connected神经网络。

 

Keras实战演练

  1. 设置第一个convolution层——输入数据是28*28的二维数据、25个3*3的filter

  2. 设置第一个Max Pooling层——按照2*2分组

 

  1. 经过第一个convolution层的运算过后28*28维度的数据变为25*26*26的Feature Map(25个维度为26*26的特征矩阵)
  2. 经过第一个Max Pooling层的运算过后25个维度为26*26的特征矩阵变为25*13*13的Feature Map(25个维度为13*13的特征矩阵)

一般靠近input的神经层设置的filter数目少,靠近output的神经层设置的filter数目多

最后将最终的Feature Map进行flatten处理之后,输入神经网络。

 

课程视频点击我

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_17438303/article/details/82077966