码迷,mamicode.com
首页 > 其他好文 > 详细

深度学习——深卷积网络:实例探究

时间:2018-04-30 22:12:26      阅读:561      评论:0      收藏:0      [点我收藏+]

标签:路径   softmax   resid   最大   引用   复杂   sam   没有   work   

1. 三个经典网络

红色部分不重要,现在已经不再使用

这篇文章较早,比如现在常用max,而当时用avg,当时也没有softmax

技术分享图片

这篇文章让CV开始重视DL的使用,相对于LeNet-5,它的优点有两个:更大,使用ReLU

以作者名字命名

same表示使用same过滤器,也就是输入和输出维度一致

技术分享图片

16表示总共有16个CONV和FC,这篇文章指出了信道数和维度变化的规律性(随网络增加/减少),缺点是参数实在太多了

技术分享图片

阅读论文顺序:2-3-1

2. 残差网络

残差网络由残差块组成,它使得网络可以变得更深

a[l]到a[l+2]的蓝色是网络的主路径,而紫色部分称为短路/跳跃连接,直接把a[l]的信息传递到下下一层,计算a[l+2]时会加上a[l](残差),它插入的位置是线性计算后,激活前

技术分享图片

plain network是一般的网络

在plain network中随着深度增加,优化算法更难执行,所以可能会出现错误率先降后升的情况

网络越深越难训练:梯度消失/爆炸的问题

技术分享图片

3. 为什么Residual网络有用

假设对一个大型网络再增加两层(构成残差块)

计算a[l+2]时,如果w为0,b也为0,且使用ReLu函数,那么我们可以得到a[l+2] = a[l],这说明残差网络可以很容易学习恒等函数

因此,增加网络深度不会损害性能,而plain网络当深度增加时可能连恒等函数都不容易学习??

如果z[l+2]和a[l]维度一致就正好,如果不一样的话,那么可以在a[l]前乘以一个矩阵,不需要对矩阵进行处理??

技术分享图片

残差网络的结构图

技术分享图片

 4. 1x1卷积

1x1卷积做事情是:(以下面32信道为例)

对输入的32个元素(32个信道)作一个全连接,然后执行ReLU函数,得到一个实数,作为相应位置上的结果。如果有多个过滤器,则进行叠加

这个也称为网络中的网络

为什么可以用1x1来压缩?这样如果采用一样的过滤器,结果是不一样的吧????

技术分享图片

1x1卷积的作用

通过增加一个非线性函数使得信道数减少或保持不变(压缩信道的方法),以减少计算量

使用32个1x1x192的过滤器

技术分享图片

5. google Inception网络

Inception可以帮你决定应该采用什么样的过滤器,是否需要pool层等

它的做法是把各种过滤器的结果堆叠在一起

下例中的维度是自己定义的,这样最后输出的结果中会有256个信道

下图是一样Inception的一个基础块

技术分享图片

Inception的一个最大问题:计算量很大

以上例中5x5过滤器为例,就需要计算120M次乘法

技术分享图片

解决方法:加一个1x1过滤器,也称为bottleneck层(瓶颈层,是网络中是小的层)

下例中计算量就会降成12.4M

技术分享图片

 6. 一个更完整些的Inception模块

技术分享图片

论文中的网络结构

其实就是把上面的模块重复连接,另外,网络后面几层会有一些分支(绿色划圈部分),它们也是和最后的输出一样进行输出,也就是说隐藏层也参与了最后y hat的输出,这样可以避免过拟合的问题

小故事:Inception原名是googlenet,是为了向LeNet致敬,而后引用了Inception(盗梦空间),意在建议更深的网络

技术分享图片

6. 迁移学习

在CV中经常会用到迁移学习。一般推荐使用开源的网络来做,而非从0开始。根据拥有的数据量不同,有不同的处理方式,从上到下数据量递增

例:要训练一个识别猫的网络(3个转出)

当数据量很小的时候,可以把最后一层softmax替换掉,而把前面所有的层不变(一般有参数如trainable, freeze可以用于设置参数不变),只训练最后一层

另外,可以把最后的隐藏层的结果保存下来,然后直接将输入映射。这样就不用经过中间层的计算

当数据量大一些的时候,可以多训练几层,也就是把前几层freeze,而后面几层进行训练

当数据量很大时,可以对整个网络进行训练,原来训练好的结果作为初始化值, 这样就不用用随机初始化

技术分享图片

7. 数据扩充(augmentation)

对于CV应用,一般来说数据越多,网络性能越好。对于其它应用可能不一定,但是对计算机视觉,数据量是一个重要的因素。数据扩充就是对原有数据进行处理以获得更多的数据

常用的方法:mirror/random crop  其它几个可能比较复杂就比较少用

技术分享图片

第二种方法:改变颜色。有一种方法是PCA(主成分分析),根据原有的颜色比例进行调整,使得修改后的颜色和原来一致

技术分享图片

data augmentation(增强)的实现

一般是用一个线程从硬盘加载数据进行修改,再把这些数据传给其它的线程进行训练。这样数据处理与网络训练可以实现并行

超参数:颜色要改变多少,裁剪什么位置等

技术分享图片

8. 计算机视觉现状

技术分享图片

用于竞赛的tips,一般不推荐用于真实应用上

技术分享图片

技术分享图片

深度学习——深卷积网络:实例探究

标签:路径   softmax   resid   最大   引用   复杂   sam   没有   work   

原文地址:https://www.cnblogs.com/coolqiyu/p/8719746.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!