[Machine Learning] 卷积神经网络CNN概念

卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层子采样层构成的特征抽取器。在卷积神经网络的卷积层中,一个神经元只与部分邻层神经元连接。在CNN的一个卷积层中,通常包含若干个特征平面(featureMap),每个特征平面由一些矩形排列的的神经元组成,同一特征平面的神经元共享权值,这里共享的权值就是卷积核。卷积核一般以随机小数矩阵的形式初始化,在网络的训练过程中卷积核将学习得到合理的权值。共享权值(卷积核)带来的直接好处是减少网络各层之间的连接,同时又降低了过拟合的风险。子采样也叫做池化(pooling),通常有均值子采样(mean pooling)和最大值子采样(max pooling)两种形式。子采样可以看作一种特殊的卷积过程。卷积和子采样大大简化了模型复杂度,减少了模型的参数。卷积神经网络的基本结构如图所示:

                  

卷积神经网络由三部分构成。第一部分是输入层。第二部分由n个卷积层和池化层的组合组成。第三部分由一个全连结的多层感知机分类器构成。

CNN 卷积神经网络基础介绍

神经网络的基本组成包括输入层、隐藏层、输出层。而卷积神经网络的特点在于隐藏层分为卷积层和池化层。

输入层

在CNN卷积神经网络中,图片的输入格式和神经网络输入格式不太一样,神经网络输入层是转化为一维向量,而卷积神经网络输入层保存了图片的本身结构。对于黑白图片输入层是一个二维神经元,对于彩色图片输入层是一个三维神经元(每个颜色通道都有一个矩阵)。

卷积层

卷积层:将图像经过卷积运算产生了多个图像,像是将多个相片叠加起来。

卷积层运算方式:

  • 定义一个卷积核(过滤器)大小,比如 3 * 3 。便会在矩阵为 3 * 3 中随机产生数字。如果是彩色图片会有 3 个不同的卷积核和彩色图片 3 个通道进行计算。
  • 定义卷积核个数 ,多少个卷积核多少个输出结果,产生多少个图像。
  • 定义步长,比如移动 2 个步长。
  • 定义是否需要零填充,需要零填充参数是 SAME,不需要零填充参数 VALID。

卷积层运算方式例子如图一所示

  • Input Volume 为输入彩色图片有 3 个通道
  • 卷积核大小为 3 * 3 因为对应彩色图片便会有 3 个通道的卷积核,卷积核权重刚开始是随机产生的,也会产生随机一个偏置项 b。经过训练修改卷积核权重和偏置项最后才能稳定下来。
  • 卷积核个数为 2 个 Filter W0 和 Filter W1,所以输出 Output Volume 也是 2 个即输出两个图像。
  • 步长为 2,根据图二所示每一次移动都是 2 个步长,从左到右和从上到下都是 2 个步长。
  • 是否要零填充,这个例子根本不需要零填充,所以使用零填充和不使用效果是一样的。
  • 图一 Output Volume 第一个数 1 的计算:(01 + 01 + 0-1 + 0-1 + 00 + 11 + 0-1 + 0-1 + 10) + (0-1 + 00 + 0-1 + 00 + 10 + 1-1 + 01 + 0-1 + 00) + (00 + 01 + 00 + 01 + 20 + 01 + 00 + 0-1 + 0*1) + 1 = 1 第二个数依次类推。

 

              

                                                                                            (图一)

             

                                                                                          (图二)

激活函数

把卷积层结果经过激活函数做非线性映射,常用的激活函数 ReLU。

池化层

池化层:通过特征后稀疏参数来减少学习参数,降低网络的复杂度。有最大池化和平均池化,常用最大池化。

池化层运算方式:

  • 定义窗口大小,比如 2 * 2。
  • 定义步长,正常是窗口的大小,比如 2。
  • 定义用什么池化,比如最大池化,选取窗口最大的值:

                                            

输出层

最后输出的结果层,有多少个分类输出层便有多少个神经元,输出层的激活函数用 softmax 分类。

CNN训练过程中向前传播和向后传播的原理

我们对比神经网络训练,CNN卷积神经网络训练会复杂一点点,但是训练的方法原理基本是一模一样的。一般我们的CNN 卷积神经网定义流程如下图:

               

 

  • 随机初始化卷积核权重和偏置值
  • 向前计算多个卷积层和池化层,并计算输出层结果
  • 对比输出层结果和真是结果,反向计算卷积层误差项
  • 用链式求导法则对卷积层进行求导,更新卷积核权重和偏置值,重复第 2 步第 3 步第 4 步直到卷积核权重和偏置值得到最优解

 

参考:

https://www.cnblogs.com/guoyaohua/p/8589853.html

https://gitchat.csdn.net/activity/5cb15d4657e2e66a74763dfb

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值