CNN

这里写图片描述

一.1X1X卷积核

引用块内容3X3卷积核
这里写图片描述1X1 卷积核
一般1×1的卷积核本质上并没有对图像做什么聚合操作,以为就是同一个w去乘以原图像上的每一个像素点,相当于做了一个缩放

(1)卷积核作用

引用块内容
这里写图片描述

1x1的卷积核可以进行降维或者升维,也就是通过控制卷积核(通道数)实现。
控制通道数可以实现跨通道的交互和信息整合。这个可以帮助减少模型参数,也可以对不同特征进行尺寸的归一化;同时也可以用于不同通道上特征的融合。
..
比如当前层为 x×x×m即图像大小为x×x,特征层数为m,然后如果将其通过1×1的卷积核,特征层数为n,那么只要n小于m这样就能起到降维的目的,减少之后步骤的运算量(当然这里不太严谨,需要考虑1×1卷积核本身的参数个数为m×n个)

如果使用1x1的卷积核,这个操作实现的就是多个feature map的线性组合,可以实现feature map在通道个数上的变化。

2.LeNet-5

卷积神经网络,这里用于数字识别。 每个平面是特征图,即一组权重被约束为相同的单元。

引用块内容

引用块内容
二维卷积在图像中的效果:对图像的每个像素的领域(核)加权求和得到该像素点的输出值,效果如下:
这里写图片描述

(1)C1、C3、C5层

C1层是一个卷积层,有6个卷积核(提取6种局部特征),核大小为5*5,能够输出6个特征图Feature Map,大小为28*28(28=(32-5)/步长+1)。C1有156个可训练参数(每个滤波器5*5=25个unit(单元)参数和一个bias(偏置)参数,一共6个滤波器,共(5*5+1)6=156个参数),共156 (28*28)=122,304个连接。
..
C3层是具有16个特征映射的卷积层。每个要素图中的每个单位都连接到S2的要素图子集中相同位置的多个5x5邻域。
为什么不将每个S2要素图连接到每个C3要素图?原因有两个。首先,一个非完整的连接方案保持连接数在合理范围内。更重要的是,它迫使网络中的对称性中断。不同的特征映射被迫提取不同的(希望是互补的)特征,因为它们变得不同输入集。前六个C3特征映射从每个连续的三个子集中获取输入.S2中的特征映射。接下来的六个从每个连续的四个子集中获取输入。接下来的三个从一些不连续的四个子集中获取输入。最后一个从所有S2特征映射中获取输入。 C3层有1,516个可训练参数和151,600个连接。

C5层是具有120个特征映射的卷积层。每个单元连接到S4的所有16个特征映射上的5×5邻域。 这里,因为S4的大小也是5x5,所以C5的特征图的大小是1x1:这相当于S4和C5之间的完全连接。 C5被标记为卷积层,而不是完全连接的层,因为如果LeNet-5输入变得更大而其他一切保持不变,则特征映射维度将大于1x1。 这一部分描述了动态增加卷积网络大小的过程,C5层有48,120个可训练的连接。

(2)S2、S4层

这里写图片描述
S2层是具有6个特征映射的子采样层,尺寸14x14。 每个特征映射中的每个单元连接到C1中相应特征映射中的2x2邻域。添加S2中单元的四个输入,然后相乘通过可训练的系数,并加入可训练的偏差。
S4层是一个子采样层,具有16个大小为5x5的特征映射。 每个特征映射中的每个单元以与C1和S2类似的方式连接到C3中相应特征映射中的2×2邻域。 层S4具有32个可训练参数和2,000个连接。

(3)F6层

这里写图片描述
层F6包含84个单元(这个数字的原因来自输出层的设计,如下所述)并完全连接到C5。 它有10,164名可训练的参数。

(4)output输出层

引用块内容

3.LeNet5总结

这里写图片描述

最早的深层卷积神经网络之一,大概的网络结构示意图如上。由于图像具有很强的空间相关性,直接使用独立的像素作为输入则利用不到这些相关性,而训练参数的卷积层是一种可以用少量参数在图像的多个位置上提取相似特征的有效方式。LeNet5在当时的成功可以归纳为以下几点:
(1)首次将卷积用到神经网络中,目的在于降低计算的参数量。
(2)使用非线性激活函数(双曲正切Tanh和S型Sigmoid)。
(3)降采样(Down-Sampling)降低输出参数量,提高了模型的泛化能力。

4.AlexNet

https://blog.youkuaiyun.com/qianqing13579/article/details/71381016开山论文翻译

(1)非线性激活函数ReLU

这里写图片描述

ReLU解决Sigmoid函数在网络较深时的梯度弥散问题
引用块内容
这里写图片描述
Relu激活函数的优点在于:这里写图片描述

(2)Dropout

这里写图片描述

AlexNet 优势在于:网络增大(5个卷积层+3个全连接层+1个softmax层),同时解决过拟合(dropout,data augmentation,LRN),并且利用多GPU加速计算,LRN归一化。
引用块内容
它将每一个隐藏神经元的输出以50%的概率设为0。这些以这种方式被“踢出”的神经元不会参加前向传递,也不会加入反向传播。因此每次有输入时,神经网络采样一个不同的结构,但是所有这些结构都共享权值。这个技术降低了神经元之间复杂的联合适应性,因为一个神经元不是依赖于另一个特定的神经元的存在的。因此迫使要学到在连接其他神经元的多个不同随机子集的时候更鲁棒性的特征。在测试时,本文使用所有的神经元,但对其输出都乘以了0.5,对采用多指数dropout网络生成的预测分布的几何平均数来说这是一个合理的近似。
Dropout也就是选取一半神经元,训练时间只需要原先的两倍

(3)图像数据变形的方式

从原始图像(256,256)中,随机的crop出一些图像(224,224)。【平移变换,crop】水平翻转图像。【反射变换,flip】给图像增加一些随机的光照。【光照、彩色变换,color jittering】
这里写图片描述
随机crop。训练时候,对于256*256的图片进行随机crop到224*224,然后允许水平翻转,那么相当与将样本倍增到((256-224)^2)*2=2048。测试时候,对左上、右上、左下、右下、中间做了5次crop,然后翻转,共10个crop,之后对结果求平均。作者说,不做随机crop,大网络基本都过拟合(under substantial overfitting)。对RGB空间做PCA,然后对主成分做一个(0, 0.1)的高斯扰动。结果让错误率又下降了1%。

5.GoogLetNet

GoogLeNet 由 Google 在 2014 年提出,其主要创新是 Inception 机制,即对图像进行多尺度处理。这种机制带来的一个好处是大幅度减少了模型的参数数量,其做法是将多个不同尺度的卷积核,池化层进行整合,形成一个 Inception 模块。Inception 模块的目标是用尺寸更小的矩阵来替代大尺寸的稀疏矩阵。即用一系列小的卷积核来替代大的卷积核,而保证二者有近似的性能。
这里写图片描述
上图的模块由 3 组卷积核以及一个池化单元组成,它们共同接受来自前一层的输入图像,有三种尺寸的卷积核,以及一个 max pooling 操作,它们并行的对输入图像进行处理,然后将输出结果按照通道拼接起来。因为卷积操作接受的输入图像大小相等,而且卷积进行了padding 操作,因此输出图像的大小也相同,可以直接按照通道进行拼接。

(1)目的

一般来说,提升网络性能最直接的办法就是增加网络深度和宽度,这也就意味着巨量的参数。
但是,巨量参数容易产生过拟合也会大大增加计算量
解决上述两个缺点的根本方法是将全连接甚至一般的卷积都转化为稀疏连接。

(2)全连接层的优化

为了打破网络对称性和提高学习能力,传统的网络都使用了随机稀疏连接。但是,计算机软硬件对非均匀稀疏数据的计算效率很差,所以在AlexNet中又重新启用了全连接层,目的是为了更好地优化并行运算。既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能。

(3)降低参数

GoogleNet 在 ILSVRC 2014 的比赛中取得分类任务的第一名,top-5 错误率 6.67%。相较于之前的 AlexNet-like 网络,GoogleNet 的网络深度达到了 22 层,参数量减少到 AlexNet 的1/12,可以说是非常优秀且非常实用的模型。为了降低网络参数作者做了 2 点尝试:
1.去除了最后的全连接层,用全局平均池化替代。全连接层几乎占据了 AlexNet 中 90%的参数量,而且会引起过拟合,去除全连接层后模型训练更快并且减轻了过拟合。
2.GoogleNet 中精心设计的 Inception 模块提高了参数的利用效率,这一部分也借鉴了 NIN 的思想,形象的解释就是 Inception 模块本身如同大网络中的一个小网络,其结构可以反复堆叠在一起形成大网络。不过 GoogleNet 比 NIN 更进一步的是增加了分支网络

6.GoogleNet-Inception-Like 网络改进系列

(1)Inception-V1

GoogleNet基本结构

(2)Inception-V2

1.加入了 BN ( 就是添加了一个归一化层。简称BN(Batch Normalization))层,减少了 Internal Covariate Shift(内部 neuron 的数据分布发生变化),使每一层的输出都规范化到一个 N(0, 1)的高斯。
2.学习 VGG 用 2 个 3x3 的 conv 替代 Inception 模块中的 5x5,既降低了参数数量,也加快了计算速度。
这里写图片描述

(3)Inception-V3

Inception-V3 一个最重要的改进是卷积核分解(Factorization),将 7x7 的卷积核分解成两个一维的卷积(1x7,7x1),3x3也是一样(1x3,3x1),我们称为非对称分解,如下图所示。这样做既可以加速计算减少参数规模从而减轻了过拟合,同时增加了一层非线性扩展模型表达能力。又可以将 1 个卷积拆成 2个卷积,使得网络深度进一步增加,增加了网络的非线性。
这里写图片描述
卷积核1x3和3x1这里写图片描述
通过改进AdaGrad提出了RMSProp一种新的参数优化的方式。
采用了 Label Smoothing 的策略,该方法是一种通过在输出标签中添加噪声,实现对模型进行约束,降低模型过拟合程度的一种正则化方法。对已有的label以一定的概率添加了一个常数项,防止过拟合。

(4)Inception-V4

Inception-v4 相较于 v3 版本增加了 Inception 模块的数量,整个网络变得更深了。

7.VGG(性能略次于GoogleNet)

VGGNet 的结构非常简洁,整个网络都使用了同样大小卷积核尺寸(3x3)和池化尺寸(2x2)。到目前为止,VGGNet 依然经常被用来提取图像特征,被广泛应用于视觉领域的各类任务。
VGG有很多个版本,也算是比较稳定和经典的model。它的特点也是连续conv多,计算量巨大(比前面几个都大很多)
这里写图片描述

(1)过程

VGG 网络的主要创新是采用了小尺寸的卷积核。所有卷积层都使用 3x3 卷积核,并且卷积的步长为 1。为了保证卷积后的图像大小不变,对图像进行了填充,四周各填充 1 个像素。所有池化层都采用 2x2 的核,步长为 2。全连接层有 3 层,分别包括 4096,4096,1000 个节点。除了最后一个全连接层之外,所有层都采用了 ReLU 激活函数。下图为 VGG16 的结构:这里写图片描述

(2)VGG对Alexnet的改进

1.去掉了 LRN 层(Local Response Normalization,即局部响应归一化层),作者实验中发现深度卷积网络中 LRN 的作用并不明显。
2.采用更小的连续 3x3 卷积核来模拟更大尺寸的卷积核,例如 2 层连续的 3x3 卷积层可以达到一层 5x5 卷积层的感受野,但是所需的参数量会更少,两个 3x3 卷积核有 18 个参数(不考虑偏置项),而一个 5x5 卷积核有 25 个参数。后续的残差网络等都延续了这一特点。

8.关于卷积核的一些问题

(1)卷积只能在同一组进行吗?(不是)

Group convolution 分组卷积,最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。
这里写图片描述

(2)卷积核一定越大越好?(不是)

AlexNet中用到了一些非常大的卷积核,比如11×11、5×5卷积核,之前人们的观念是,卷积核越大,receptive field(感受野)越大,看到的图片信息越多,因此获得的特征越好。
虽说如此,但是大的卷积核会导致计算量的暴增,不利于模型深度的增加,计算性能也会降低。于是在VGG(最早使用)、Inception网络中,利用2个3×3卷积核的组合比1个5×5卷积核的效果更佳,同时参数量(3×3×2+1 VS 5×5×1+1)被降低,因此后来3×3卷积核被广泛应用在各种模型中。

(3)每层卷积只能用一种尺寸的卷积核?(不是)

传统的层叠式网络,基本上都是一个个卷积层的堆叠,每层只用一个尺寸的卷积核,例如VGG结构中使用了大量的3×3卷积层。事实上,同一层feature map可以分别使用多个不同尺寸的卷积核,以获得不同尺度的特征,再把这些特征结合起来,得到的特征往往比使用单一卷积核的要好,谷歌的GoogLeNet,或者说Inception系列的网络,就使用了多个卷积核的结构:
这里写图片描述
如上图所示,一个输入的feature map分别同时经过1×1、3×3、5×5的卷积核的处理,得出的特征再组合起来,获得更佳的特征。但这个结构会存在一个严重的问题:参数量比单个卷积核要多很多,如此庞大的计算量会使得模型效率低下

发明GoogleNet的团队发现,如果仅仅引入多个尺寸的卷积核,会带来大量的额外的参数,受到Network In Network中1×1卷积核的启发,为了解决这个问题,他们往Inception结构中加入了一些1×1的卷积核,如图所示:
这里写图片描述
加入1×1卷积核的Inception结构:
这里写图片描述
假设输入feature map的维度为256维,要求输出维度也是256维。有以下两种操作:
1.256维的输入直接经过一个3×3×256的卷积层,输出一个256维的feature map,那么参数量为:256×3×3×256 = 589,824
2.256维的输入先经过一个1×1×64的卷积层,再经过一个3×3×64的卷积层,最后经过一个1×1×256的卷积层,输出256维参数量为:256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69,632。足足把第一种操作的参数量降低到九分之一!1×1卷积核也被认为是影响深远的操作,往后大型的网络为了降低参数量都会应用上1×1卷积核

(4)越深的网络就越难训练吗?(是)

引用块内容
传统的卷积层层叠网络会遇到一个问题,当层数加深时,网络的表现越来越差,很大程度上的原因是因为当层数加深时,梯度消散得越来越严重,以至于反向传播很难训练到浅层的网络。

(5)卷积核形状一定是矩形吗?(不一定)

传统的卷积核一般都是长方形或正方形,但MSRA提出了一个相当反直觉的见解,认为卷积核的形状可以是变化的,变形的卷积核能让它只看感兴趣的图像区域 ,这样识别出来的特征更佳。
方法:要做到这个操作,可以直接在原来的过滤器前面再加一层过滤器,这层过滤器学习的是下一层卷积核的位置偏移量(offset),这样只是增加了一层过滤器,或者直接把原网络中的某一层过滤器当成学习offset的过滤器,这样实际增加的计算量是相当少的,但能实现可变形卷积核,识别特征的效果更好。

(6)能否让固定大小的卷积核看到更大范围的区域?

标准的3×3卷积核只能看到对应区域3×3的大小,但是为了能让卷积核看到更大的范围,dilated conv使其成为了可能。dilated conv原论文中的结构如图所示:
这里写图片描述
图b可以理解为卷积核大小依然是3×3,但是每个卷积点之间有1个空洞,也就是在绿色7×7区域里面,只有9个红色点位置作了卷积处理,其余点权重为0。这样即使卷积核大小不变,但它看到的区域变得更大了。
这里写图片描述

(7)为什么要采用池化层?

池化层的主要目的是通过降采样的方式,在不影响图像质量的情况下,压缩图片,减少参数。简单来说,假设现在设定池化层采用MaxPooling,大小为2*2,步长为1,取每个窗口最大的数值重新,那么图片的尺寸就会由3*3变为2*2:(3-2)+1=2。从上例来看,会有如下变换:
这里写图片描述
通常来说,池化方法一般有一下两种:
MaxPooling:取滑动窗口里最大的值;
AveragePooling:取滑动窗口内所有值的平均值

(8)Max Pooling有什么好处?

其实从上文分析卷积核为什么有效的原因来看,每一个卷积核可以看做一个特征提取器,不同的卷积核负责提取不同的特征。

我们例子中设计的第一个卷积核能够提取出“垂直”方向的特征,第二个卷积核能够提取出“水平”方向的特征,那么我们对其进行Max Pooling操作后,提取出的是真正能够识别特征的数值,其余被舍弃的数值,对于我提取特定的特征并没有特别大的帮助。那么在进行后续计算使,减小了feature map的尺寸,从而减少参数,达到减小计算量,却不损失效果的情况。

不过并不是所有情况Max Pooling的效果都很好,有时候有些周边信息也会对某个特定特征的识别产生一定效果,那么这个时候舍弃这部分“不重要”的信息,就不划算了。所以具体情况得具体分析,如果加了Max Pooling后效果反而变差了,不如把卷积后不加Max Pooling的结果与卷积后加了Max Pooling的结果输出对比一下,看看Max Pooling是否对卷积核提取特征起了反效果。

(9)Zero Padding有什么作用?

我们的图片由4*4,通过卷积层变为3*3,再通过池化层变化2*2,如果我们再添加层,那么图片岂不是会越变越小?这个时候我们就会引出“Zero Padding”(补零),它可以帮助我们保证每次经过卷积或池化输出后图片的大小不变,如,上述例子我们如果加入Zero Padding,再采用3*3的卷积核,那么变换后的图片尺寸与原图片尺寸相同(x-3+1*2+1=x)x为图片边长大小,如下图所示:
这里写图片描述
参考http://www.cnblogs.com/charlotte77/p/7759802.html

9.卷积神经网络的反向传播

https://www.cnblogs.com/charlotte77/p/7783261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值