卷积神经网络的原理(新手上路)


最近在学习卷积神经网络,今天花了一天终于大致搞懂了它的基本原理,在这里作一个总结,并推荐几篇我觉得讲得很好的文章。

卷积神经网络是什么,为什么用它

众所周知卷积神经网络(CNN)在处理图像问题上有很好的表现,传统的神经网络在输入时将图像(二维像素矩阵)展成一维向量,这样无疑会丢失图像中蕴涵的空间信息 。而CNN独特的结构很好地解决了这个问题。CNN有两个关键的东西,一个是卷积层一个是池化层。

卷积层

卷积层是CNN关键中的关键,它给予了CNN学习空间特征的能力。
首先我们把像素矩阵作为输入,如下图可以当成是一个28x28的灰度图片。
在这里插入图片描述
CNN中第一个隐藏层的神经元只与局部区域输入层的神经元相连。
所以我们需要一个filter,也叫卷积核,是一个像窗口一样的东西,它架在输入层上面。(filter一般是一个n * n的矩阵,对应 n * n个权值参数。n一般是奇数,原因是能使对称填充方便,并且奇数 filter有中心点,方便定位
如下图使用了5x5的filter,隐藏层中的第一个神经元与相对应的25个输入层神经元对应。
在这里插入图片描述
接着我们移动这个窗口,下图中窗口向右移动了一个单位,即stride(步长)为1。我们可以设置不同的步长,步长越大,隐藏层的神经元数量就越少。在这里插入图片描述
就这样不断的移动,直到窗口扫过整个输入层,我们就得到了一个隐藏层。这里的图片是28*28的,filter是5 * 5,stride是1,可以得到一个24 * 24(24=28-5+1)个神经元的隐藏层

权值共享

接下来介绍一个概念:权值共享
如下图是一个3*3大小的filter在进行特征提取,可以看到在每个位置进行特征提取的时候都是共享同一个filter。

在这里插入图片描述
再比如我们上面讨论的例子,虽然隐藏层有24 * 24个神经元,但是由于共享一个filter和偏移值,参数个数只有26(5 * 5+1)个。
每个神经元的值的计算公式如下
在这里插入图片描述
σ代表的是激活函数,如sigmoid,relu函数等,b就是偏移值,w就是5 * 5个共享权值矩阵,我们用矩阵a表示输入层的神经元,ax,y表示第x+1行第y+1列那个神经元(注意,这里的下标默认都是从0开始计的,a0,0表示第一行第一列那个神经元)所以通过矩阵w线性mapping后再加上偏移值就得到公式中括号里的式子,表示的是隐藏层中第j+1行k+1列那个神经元的输入。
公式可以化简成下面的形式,其中 * 是卷积操作,这就是卷积神经网络名字的由来。但是这个卷积操作和通常的卷积操作不太一样,主要是顺序不同,我们按照上面未化简公式的顺序来就行了。
在这里插入图片描述
由于权值共享,每一个filter只能学习到一个特征。显然,1个特征是远远不够的,于是我们要使用更多的filter。下图我们使用了3个filter。
不同filter之间的权值参数是不共享的,于是我们使用的filter个数决定了我们学习到的特征数量。filter的个数也叫深度,是我们在训练模型的时候要指定的一个参数,它没有固定的取值,一般按照经验选择合适的filter数量。
在这里插入图片描述
下图是用20个filter在MNIST数据集上学习特征,将20个filter的w矩阵画成灰度图的样子。
白色区域表示权值比较小,说明窗口的这部分对输入层的神经元不敏感,相反黑色部分表示权值比较大,说明窗口的这部分对输入层的神经元敏感。每张图片都有明显的黑白区域,这也能够说明CNN确实学到一些和空间结构相关的特征,而且不同filter学习到的特征是不相同的。这是因为每个filter的初始值并不相同,通过BP算法得到了不同的解。在这里插入图片描述

池化层

池化层也是CNN的重要环节,它一般跟在卷积层的后面。作用主要是为了简化卷积层的输出,同时保持某种重要的性质。池化层只有两个参数,尺寸和步长,甚至可以只用一个,即让步长等于尺寸。
主要常用的有max-pooling和mean-pooling
max-pooling对应的是更显著的特征;mean-pooling对应的是更加平滑的特征

max-pooling

在这里插入图片描述
上图是尺寸为2x2,步长2的最大池化层,可以看出每个filter内只是简单的取4个数字的中最大值,使之进入下一层。经过池化层,神经元数量变成了原来的1/4

mean-pooling

平均池化层就是把上面的取最大值换成了求平均值,也很好理解

总结

以上就是CNN的主要原理,下图是一个最简单的CNN,有一个从左到右依次是输入层、卷积层、池化层、输入层,从池化层到输出层是全连接。我们可以构造更复杂的CNN,在输入层与输出层中间添加更多的卷积层和池化层。
在这里插入图片描述
本文主要讲了CNN前向传播的过程,作为自己学习的总结。如果有错请大家评论指出。下面的文章是我觉得讲的最详细的,也是最后帮我理解CNN的文章。

https://blog.csdn.net/m0_37490039/article/details/79378143

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值