【深度学习笔记整理-5.1】CNN:卷积神经网络

22 篇文章 0 订阅
21 篇文章 0 订阅

CNN:卷积神经网络

卷积

卷积神经网络和其名字有较大的联系,这里的卷积即有‘滑动乘积’的意思,不同于前面对图片向量的扁平化处理,CNN会更加在意局部像素的相关性,这些局部像素可能在拉直向量后被分的很远,以至于失去了其原有的相关性。

“卷”是如何卷的?

我们首先需要一个相对于原图片更小的滑动矩形(这个矩阵就是所谓的卷积核kernel),然后在较大的原图中从左上角开始向右滑动(默认一格),向右无法移动后向下移动一格并从左侧重新开始,以此对原图提取相关特征,这个提取特征的过程,实际上就是透过矩阵间element-wise的乘积以达到锐化图像,或者说获取原图中符合卷积核特征的打分值。

注:图片源于https://towardsdatascience.com/types-of-convolution-kernels-simplified-f040cb307c37

可以看出,原图片中局部的像素矩阵越和卷积核类似,得到的分数也就越大,并且这个差异被拉大了许多,可以观察到3与1之间的对比度拉大到了7和-3.这个得分直接反应了原图中的部分矩阵是否具有卷积核的特征。

卷积核(kernels),滤波器(filters),通道(channels),特征图(feature maps)

由于图片往往不会是一个简单的矩阵(除非它是一个黑白图片),图片往往由多张图片叠合而成(比如彩色图片由三种rpg的矩阵叠合而成),不同的矩阵被称之为不同的通道(channels),或者叫特征图(feature maps),2D卷积核仅仅只针对一个2D的矩阵进行卷积,所有通道的卷积核合起来称之为滤波器(filters)。一个普通的卷积层实际上由多个filter组成。

通道一般用来描述layer的结构,比如三层的通道对应三层的layer,kernel一般用于描述filter的结构,这个kernel实际上就是离散的权重,filter对应三层离散权重的合。filter的数目最后对应于下一层神经元的数目,我们使用filters与输入运算得到的结果需要经过神经元中的激活函数。

keras中的Conv2D层

keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid',activation=None,use_bias=True)

注:使用keras时,原始输入图片应以四维张量的形式存在。

“积”是如何积的?

对于只有一个通道的layer,此时filter也可以被称之为kernel,kernel在滑动的过程中会与重叠的图片部分做积,这个积其实是矩阵的逐个元素相乘(element-wise)再做和。

对于多个通道来说,不同kernel会和对应channel的重合矩阵做逐元素乘积,然后将所有kernel得到的乘积做和得到最后的结果。

我们以吴恩达老师课上的图片为例,输入通道数为3,filter由三个2D的kernel组成,不同kernel与对应channel的重合矩阵相乘,最后得到27个数字,将27个数字求和得到结果矩阵的第一个值。

我们一层卷积层会有很多个这样3*3*3的filter,其个数对应希望提取出的特征数,也对应下一层layer的channel。而下一层神经元的数量对应卷积后的矩阵值的个数。

Maxpooling

maxpooling会对特征图进行下采样,池化通常使用2×2的窗口和步幅2,其目的是将特征图下采样2倍。与此相对的是,卷积通常使用3×3窗口和步幅1。

这样做的好处在于:

一是减少需要处理的特征图的元素个数,使用maxpooling会只保留最具有卷积核特征的值,

二是通过让连续卷积层的观察窗口越来越大(即窗口覆盖原始输入的比例越来越大),下一次的卷积会考虑上一次多个特征的组合,从而引入空间过滤器的层级结构。

如果我们不使用maxpooling的机制,那么CNN也就失去了学习层级结构这一特性。我们使用3*3大小的卷积核做三次卷积,最终和拿7*7的卷积核做卷积的效果是相同的。此外,不使用maxpooling会面临着参数数目过大的问题。 

总而言之,我们建议在开始使用较小的stride进行滑动提取特征,后面再使用maxpooling,这就类似一开始看的比较仔细,后面使用maxpooling的效果自然好,但是如果一开始stride过大,可能会忽略过多信息,后面maxpooling也就没那么好的效果了。

卷积神经网络与全连接神经网络

卷积神经网络与全连接神经网络最大的区别在于,CNN学到的是局部的特征,而DNN学到的是全局的特征,

CNN具有平移不变性,即某特征无论出现在图片任何位置都可以被检测到,但是DNN对于相同特征的不同位置需要重新学习。

此外,由于CNN的Maxpooling以及其特性,会使得下一层的输出都是上一层的特征之组合,这样,CNN是可以学习到模式的空间层次结构的。

实际上,卷积神经网络可以理解为全连接神经网络的退化版本,卷积神经网络实现卷积的过程实际上就是下一层的神经元连接上一层不同位置的输入,并且这些神经元的权重保持共享。

这里举得例子是filter为一个的情况,当有多个filter时,下一层的神经元也对应了多层,即下一层的layer也是多层的。

shared weight方法,先按照正常back propagation求梯度,然后将本应该share weight的几个权重做平均,然后将他们更新同样的参数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值