卷积神经网络CNN模块化剖析



一、深度学习概述

1.1 发展历程

上世纪60年代,Hubel等人通过对猫视觉皮层细胞的研究,提出了感受野这个概念。
到80年代,日本科学家福岛邦彦(Kunihiko Fukushima)提出Neocognitron(神经认知机),直接启发了后来的卷积神经网络。
1998年,Yann LeCun提出的卷积神经LeNet,首次提出了多层级联的卷积结构,可对手写数字进行有效识别。
2012年, Alex依靠卷积神经网络AlexNet夺得ILSVRC 2012比赛的冠军,吹响了卷积神经网络研究的号角。AlexNet成功应用了ReLu、Dropout、最大池化、LRN(Local Response Normalization,局部响应归一化)、GPU加速等新技术,启发了后续更多的技术创新,加速了卷积神经网络和深度学习的研究。从此,深度学习研究进入蓬勃发展的新阶段。
2014年Google提出的GoogleNet,运用Inception Module这个可以反复堆叠高效的卷积网络结构,获得了当年的ImageNet ILSVRC比赛的冠军,同年的亚军VGGNet全程使用3×3的卷积,成功训练了深度达19层的网络。
2015年,微软提出了ResNet,包含残差学习模块,成功训练了152层的网络,一举拿下当年ILSVRC比赛的冠军。
2019年3月27日 ——ACM宣布,深度学习的三位创造者Yoshua Bengio, Yann LeCun, 以及Geoffrey Hinton获得了2018年的图灵奖。
在这里插入图片描述
Hinton最重要的贡献:1983年发明的玻尔兹曼机(Boltzmann Machines),1986年发明反向传播的论文“Learning Internal Representations by Error Propagation”,AlexNet,在计算机视觉领域掀起一场革命。

Yann LeCun:代表贡献之一是卷积神经网络,拓展了神经网络的应用范围。

Bengio的贡献:在1990年代发明的Probabilistic models of sequences。发表了划时代的论文“A Neural Probabilistic Language Model”,使用高维词向量来表征自然语言。

1.2 深度学习的兴起

传统方法的瓶颈:人工设计特征是浅层特征,无法有效刻画对象的变化,所采用的识别网络是浅层网络。

浅层学习:2006年前,多种浅层机器学习模型被提出,如感知机、BP神经网络、支持向量机等。这些模型的结构基本上可以看成带有一层隐层节点,或没有隐层节点的神经网络结构。

兴起的标志:2006后,深度学习之父Hinton在《科学》杂志提出神经网络的深度学习方法,自此开启了深度学习在学术界和工业界的浪潮。

深度学习的动机:更复杂的分布往往需要更深层的网络结构。更深层次的网络具有更强的非线性拟合能力

1.3 深度学习的特点

1)与人脑相似的信息处理:从低层到高层的深层次特征抽象。
2)深层结构实现更复杂的非线性拟合。其本质是解决思路为维度空间映射,深层结构能够实现更复杂的非线性拟合。
3)深度特征的自动提取:利用反向传播自动学习深度特征。

1.4 深度学习的优势

1)更优的大数据学习能力:与传统机器学习算法相比,深度网络的结构可以随数据的增加而充分挖掘数据内在的分布规律,获得更优的性能。
2)更高层的特征提取机制:经典的机器学习算法需要复杂的特征提取过程。而深度神经网络可自适应地学习特征提取器,降低人工参与。
3)更优异的泛化性能:与传统的ML算法相比,深度学习可通过迁移学习实现不同图像域的域自适应学习能力,从而更容易适应不同的领域和应用。

深度学习产业化的核心要素:数据+运算能力+神经网络

二、卷积神经网络剖析

一般的卷积神经网络由以下几个层组成:卷积层,池化层,非线性激活函数,全连接层。这四者构成了常见的卷积神经网络。当然,损失函数也至关重要,还有各种各样的网络的优化,使得网络准确率更高。
在这里插入图片描述

2.1 卷积层

卷积层:卷积层是一个卷积神经网络最重要的部分,也是卷积神经网络得名的缘由。卷积层中每一个节点的输入是上一层神经网络的一小块,卷积层试图将神经网络中的每一个小块进行更加深入地分析从而得到抽象程度更高的特征。

CNN正式通过卷积的方式实现输入特征的提取和变换映射,从而获得数据的特征表示。卷积层本质上执行的是相关计算。
在这里插入图片描述
步长:卷积核移动的距离(包括下和左)。步长为n,则每次移动n个数值。
在这里插入图片描述
卷积后数据大小变化了,不再是原来数据的尺寸,怎么办?
在原始数据周围补充0,以保持卷积后的数据大小与输入数据一致。即为padding操作。
在这里插入图片描述
可根据需要设定补零的层数, 是一个可以设置的超参数, 但要根据卷积核的大小, 步幅, 输入矩阵的大小进行调整, 以使得卷积核恰好滑动到边缘。

一般情况下, 输入的图片矩阵以及后面的卷积核, 特征图矩阵都是方阵, 这里设输入矩阵大小为 w w w, 卷积核大小为 k k k, 步幅为 s s s, 补零层数为 p p p, 则卷积后产生的特征图大小计算公式为:
在这里插入图片描述
通常卷积层会使用多个滤波器实现特征的提取,如果将不同滤波器的输出级联起来,卷积层的输出可以看成是三维矩阵。
在这里插入图片描述
生成数据的深度:由滤波器的数量决定。
生成数据每一层的宽和高:由滤波器的大小和步长决定
在这里插入图片描述
在输出的某个位置 ( w , h ) (w,h) (w,h)沿着depth方向汇聚着不同滤波器提取的特征.
随着网络层的深入,卷积层抽取的特征逐渐由底层细化的边缘信息向高层抽象的语义信息过渡。

通常图片有红绿蓝(RGB)三个颜色通道(Channel),那一个滤波器也需要三层滤波器对每个颜色通道进行过滤,于是6x6x3的图片经过3x3x3的滤波器过滤之后最终会得到一个4x4x1的图片,此时输出层图片的深度就是1。

思考:为什么用卷积?
计算量更低,并能保证性能

在这里插入图片描述
局部连接实现权值共享、稀疏连接、等变表示。

稀疏连接:卷积核的连线数量相比于全连接的连线数量极为稀疏。

等变表示:处于卷积网络更深层中的单元,他们的接受域要比处于浅层单元的接收域更大。如果网络还包含类似步幅卷积或者池化之类的结构特征,这种效应会加强。

局部感受野:由于图像的空间联系是局部的,每个神经元不需要对全部的图像做感受,只需要感受局部特征即可,然后在更高层将这些感受得到的不同的局部神经元综合起来就可以得到全局的信息了,这样可以减少连接的数目。

权值共享:不同神经元之间的参数共享可以减少需要求解的参数,使用多种滤波器去卷积图像就会得到多种特征映射。权值共享其实就是对图像用同样的卷积核进行卷积操作,也就意味着第一个隐藏层的所有神经元所能检测到处于图像不同位置的完全相同的特征。其主要的能力就能检测到不同位置的同一类型特征,也就是卷积网络能很好的适应图像的小范围的平移性,即有较好的平移不变性(比如将输入图像的猫的位置移动之后,同样能够检测到猫的图像)

2.2 池化层

用滤波器进行窗口滑动过程中,实际上"重叠"计算了很多冗余的信息,而池化操作就是去除这些冗余信息,并加快运动。

思考:池化层有什么作用?
1)池化用于降低尺度,从而避免大尺度所带来的高计算负担。
2)通过降低特征的分辨率使得特征对平移和其他形式变形的敏感度降低,增强特征的鲁棒性。
3)此外,池化层还能够降低特征维度(相比使用所有提取得到的特征),改善网络输出(不容易过拟合)

池化操作包括最大池化操作Max Pooling平均池化操作Mean Pooling
在这里插入图片描述

2.3 非线性激活函数

通常需要对卷积层和全连接层的输出使用激活函数进行处理,提升CNN的性能。

• 常用的非线性激活函数:
在这里插入图片描述
在这里插入图片描述

1.整流线性单元(Relu)使用激活函数
在这里插入图片描述
整流线性单元易于优化,整流线性单元在其一半的定义域上输出为零。
这使得只要整流线性单元处于激活状态,它的导数都能保持较大。它的梯度不但大而且一致,一阶导数处处为1。

整流线性单元通常作用于仿射变换之上:
在这里插入图片描述
整流线性单元的一个缺陷是它们不能通过基于梯度的方法学习那些使它们激活为零的样本。

整流线性单元的3个扩展:基于当 z i &lt; 0 z_i&lt;0 zi<0时使用一个非零的斜率 α i α_i αi
在这里插入图片描述
1)绝对值整流:固定 α i = − 1 α_i=-1 αi=1 来得到 g ( z ) = ∣ z ∣ g(z)=|z| g(z)=z
2)渗漏整流线性单元(Leaky ReLU):将 α i α_i αi 固定成一个类似0.01的小值,
3)参数化整流线性单元(parametric ReLU)或者 PReLU 将 α i α_i αi作为学习的参数。

2.maxout单元(maxout unit)进一步扩展了整流线性单元。maxout单元将z划分为每组具有k个值的组,
在这里插入图片描述
这里 G ( ( i ) ) G^((i)) G((i)) 是组 i i i的输入索引集 { ( i − 1 ) k + 1 , … , i k } \{(i-1)k+1,…,ik\} { (i1)k+1,,ik}

maxout单元具有抵抗一种被称为灾难遗忘(catastrophic forgetting)的现象,这个现象是说神经网络忘记了如何执行它们过去训练的任务.

原因:每一组中可以容许一些冗余来保存之前训练的知识。

3.logistic sigmoid与双曲正切函数
之前,大多数神经网络使用 logistic sigmoid 激活函数:
在这里插入图片描述
或者是双曲正切激活函数
在这里插入图片描述
这些激活函数紧密相关,因为 t a n h ⁡ ( z ) = 2 σ ( 2 z ) − 1 tanh⁡(z)=2σ(2z)-1 tanh(z)=2σ(2z)1
在这里插入图片描述
sigmoid单元作为输出单元用来预测二值型变量取值为1的概率。sigmoid单元在其大部分定义域内都饱和——当z取绝对值很大的正值时,它们饱和到一个高值,当z取绝对值很大的负值时,它们饱和到一个低值,并且仅仅当z接近0时它们才对输入强烈敏感。sigmoid单元的广泛饱和性会使得基于梯度的学习变得非常困难。
在这里插入图片描述
t a n h ⁡ ( 0 ) = 0 tanh⁡(0)=0 tanh

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值