详细通俗易懂理解卷积神经网络CNN(下)

二、卷积神经网络

2.1 卷积神经网络的基本结构

所谓卷积神经网络,其基本网络结构包括:卷积层 ,Pooling层,全连接层。输入数据经过卷积后,得到特征map,特征map很大,直接进行全连接,消耗很大,经过pooling层后,起到特征选择的作用,降低维度,再进行全连接,最后经过非线性化(激励函数)和softmax得到输出。

下面这张图清晰地展示了整个卷积神经网络的基本结构:卷积+Pooling+全连接,更复杂的模型只需在其中添加卷积层等神经网络层。

在这里插入图片描述

上述描述可以说是前向传播,那么如何反向传播呢,利用损失函数,从神经网络的输出端至输入端,计算每层的损失函数,利用梯度下降等优化算法进行优化。详细的前向传播和后向传播算法后续更新。

2.2 经典卷积神经网络

2.2.1 LeNet - 5

直接上模型结构,如下图所示:
在这里插入图片描述
网络结构
卷积层,6个551卷积核 ,s = 1
平均池化层,22核,s = 2,长宽减半,不改变特征map的数量
卷积层,16个5
56卷积核,s = 1
平均池化层,2
2核,s = 2
两个全连接层,输入5516个节点,输出120;输入120,输出84
softmax层,输出y
注意:经典LeNet-5网络在平均池化层后加了激励函数,进行了非线性化。

2.2.2 AlexNet

在这里插入图片描述
网络结构
卷积层:96个11113卷积核,stride = 4,所以输出是(227-11)/4 +1 = 555596
Max pooling: 33核,stride = 2
卷积层:256个5
596卷积核
Max pooling: 同上
卷积层:384个3
3256卷积核
Max pooling: 同上
卷积层:256个3
3*384
Max pooling:同上
全连接层
Softmax层
采用Relu非线性化取得了很好的效果。
Local response Normlization技巧,考虑到减少计算量,不需要很多的高激励信号,只对一部分信号进行归一化,以节省时间消耗,后被证实效果并不好,遂很少用。

2.2.3 VGG-16

在这里插入图片描述
网络结构十分复杂,值得注意的是通道数随着网络层次的深入,逐渐有规律地增加,而数据的长和宽几乎同比例减少。这一点有着重要借鉴意义。(为什么要增大通道数,减小长宽呢?有待进一步考究)

2.3 残差神经网络

能够训练很深的网络ResNet,直接上图,很清晰(每隔一层,增加一条连接,也即将当前网络层的输出直接与下下层的原输入进行求和作为下下层激活函数的输入)
在这里插入图片描述
内部的数据变更为:
在这里插入图片描述

为什么要skip connection呢?
(1)添加的连接影响原有的时空效率吗?
(2)添加后,能得到更佳的训练效果吗?
在前向传播过程中,a[l]已经计算出,将其添加至下下层激活函数的输入中,相当于学习恒等函数,不需要耗费多余的时空,故能保持原有效率
在更深的网络模型中,优化参数过程中,参数不断衰减,很有可能为0,意味着其梯度同样衰减到接近0,造成梯度消失的困境。如何避免呢,激活函数的输入中增加了a[l]项,相当于增大了参数的梯度,并对之前学到的特征加以重复利用,解决了梯度消失的问题,保持甚至学到了新的特征,从而得到更佳的训练效果,并且避免了网络深度增加带来的梯度消失问题。(那为什么会避免梯度爆炸?)

2.4 Inception

在这里插入图片描述
总的来说,它是一个利用1维卷积核减少计算量的网络模型,输出组合了多种不同尺度的卷积核。

Inception 能减小计算量,为什么能减小呢?
对于2828192的输入,直接用32个55192卷积核进行卷积,那么其乘法次数是28281925532 = 120 Million,而先利用n个11192的卷积核对输入进行卷积,输出为2828n; 再用32个55n的卷积核进行卷积,那么乘法次数为2828192n+2828n55*32 ,n= 16时,乘法次数为12Million,缩小了10倍,更多加法换乘法。

整个Inception网络结构:
在这里插入图片描述
值得注意的是隐含层中间也有softmax层,因此它可以随时提前终止来预测图像分类

2.5 迁移学习

迁移学习是站在前人的肩膀上继续摘苹果的过程,利用开源社区github上前人已有成果,继续寻找最优或应用到自己的领域。

2.5.1 应用场景

(1)训练数据太少,冻结全部隐含层,修改oftmax
如:利用imageNet等大数据集训练的模型来训练自己的数据,将softmax改为所需类别。
在这里插入图片描述

(2)训练数据够,那么冻结一部分网络层,解冻部分换成自己设定的隐含层,数据越多,解冻隐含层越多
(3)训练数据很多,解冻全部层,利用预训练参数初始化整个网络,利用自己的数据继续优化参数。

2.5.2 基于Baseline改进模型

(1)Ensembling(模型融合,集成方法)
3-15个不同的网络进行训练,得到结果进行投票或平均。(时间、资源消耗多,不适用于商业应用)
(2)在测试集上进行Muti-crop
对测试数据集进行数据增强,在多种不同版本的测试集上运行模型,取平均结果
在这里插入图片描述

2.6 数据扩充

数据扩充技巧汇总
(1)随机裁剪(很实用) random cropping
(2)翻转(最常用) reverse
(3)旋转 rotation
(4)shearing 剪切
(5)warping 弯曲变形
(6)color shifting :给予RGB 值轻微扰动,避免光线因素影响图像识别。实现算法:PCA 颜色增强算法
存在超参数,如颜色扰动值、旋转角度

reference

https://www.jiqizhixin.com/articles/2019-02-28-3
https://www.zhihu.com/question/22298352
https://blog.csdn.net/tsyccnh/article/details/87357447
Andrew NG deeplearning.aihttps://www.coursera.org/learn/neural-networks-deep-learning?specialization=deep-learning
侵删,图是copy的,文字纯属个人理解,请多指教

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值