深度学习之基础模型-PolyNet
来源:互联网 发布:mysql中的sno是啥意思 编辑:程序博客网 时间:2024/06/12 19:51
On one hand, the pursuit for very deep networks is met with a diminishing return and increased training difficulty; On the other hand, widening a network would result in a quadratic growth in both computational cost and memory demand. These difficulties motivate us to explore structural diversity in designing deep networks, a new dimension beyond just depth and width.
思想
在网络结构设计的发展中,存在着几个关键的路线:
- 在网络深度/宽度上进行增强【AlexNet->VGG->GoogleNet->ResNet】
- 在卷积核上进行处理:width/height/channel解耦合【1xn,nx1,1x1,depthwise-separable conv】
- 多样性:structural diversity【Inception module】
另一种角度,可以将网络结构设计分为:
- ensemble by structure: 结构上不断改进【shortcut path,highway】
- ensemble by train: 训练过程不断改进,比如droppath等技术【Stochastic depth technique, swapout】
作者发现随着网络深度的增加,虽然模型的效果也在提升,但提升的幅度明显降低,存在着“边际效应”,而且网络的计算复杂度和内存的消耗变的巨大。
从深度学习产生开始,人们都在不断探索如何提高模型的效果:
- 模型的深度
- 模型的宽度
但是,作者提出了一个疑问:
Is increasing the depth or width the best strategy to pursue optimal performance?
通过观察模型的深度与模型的效果之间的关系:如下图
发现当模型的深度达到一定程度的时候,深度的增加对模型的提高起到的作用大大降低。从而,这也激发了作者从另外的一个角度去探索模型的结构,那就是结构多样性【structural diversity,类似于Inception modules】
模型结构
结合残差的思想,在多样性方面进行了改进
说明:
- 左侧:普通的残差模块
- 中间:Inception-ResNet-v2的模块
- 右侧:抽象的残差模块,更加有利于模型结构上上的改进,只需关注残差部分Residul F
PolyNet的基本概念
- residual unit:
- 一阶:
(I+F)∙x=x+F∙x:=x+F(x) - 二阶:
(I+F+F2)∙x:=x+F(x)+F(F(x))
- 一阶:
说明:
框架
整个网络建立在Inception-ResNet-v2的整体结构基础上,对其中的Inception模块进行了改进:
模型训练
Initialization:
Residual Scaling:
- 直接添加残差在input上,训练过程中,可能不稳定。从而增加了一个尺度因子
β - 从而,
I+F+G 变成了I+βF+βG ,令β=0.3
- 直接添加残差在input上,训练过程中,可能不稳定。从而增加了一个尺度因子
- Stochastic paths:
实验
实验1:
探索不同的PolyNet基础模块的效果
说明:
- 为了更快的训练网络,将模型结构改为IR3-6-3
- 将Inception-ResNet-v2中A,B,C模块替换为PolyNet基础模块【2-way,3-way,poly-2,poly-3,mpoly-2,mpoly-3】
- 对比了18中可能性网络结构发现:
- stage-B在整个模型的特征提取阶段是最重要的,对最终的结果影响最大
- 在stage-B阶段中,mpoly-3基础模块的效果最好
- poly-3相对于mpoly-3来说,参数只是后者的1/3,但效果非常接近,如果在内存有限的情况,非常值得考虑
实验2:
将Inception模块都换成PolyNet基础模块
说明:
- mixed基础模块要好于所有其他的模块,从而也间接证明了多样性的重要性
实验3:
更深的网络结构
说明:
- stageA:包含10个2-way的基础模块
- stageB:包含10个poly-3,2-way混合的基础模块【即,20个基础模型】
- stageC:包含5个poly-3,2-way混合的基础模块【即,10个基础模块】
效果
PolyNet在ImageNet上达到了非常高的成绩
PolyNet有效的减弱了网络深度带来的“边际效应”
参考文献
https://arxiv.org/abs/1611.05725
http://blog.csdn.net/huohu728/article/details/75168419
- 深度学习之基础模型-PolyNet
- 深度学习之基础模型---AlexNet
- 深度学习之基础模型-NIN
- 深度学习之基础模型-VGG
- 深度学习之基础模型—resNet
- 深度学习之基础模型-Inception-V3
- 深度学习之基础模型-mobileNet
- 深度学习之基础模型-Xception
- 深度学习之基础模型-FractalNet
- 深度学习之基础模型-ShuffleNet
- 深度学习之基础模型-DenseNet
- 深度学习之基础模型-SEP-Nets
- 深度学习之基础模型-总结
- 深度学习之基础模型—InceptionV1(GoogLeNet)
- 深度学习之基础模型-Inception-V2(BN)
- 深度学习之LeNet模型
- 深度学习之AlexNet模型
- 深度学习之模型finetuning
- C语言程序-将参数字符串中的字符反向排列
- 轮播图--原生js实现
- 接口-多态-动态绑定-权限修饰符-内部类
- Spring整合web项目的原理
- faster rcnn end2end 训练与测试
- 深度学习之基础模型-PolyNet
- word2vec理解
- java流程控制语句
- Math对象
- ElasticSearch多shard场景相关度打分不准确问题
- Ubuntu16.06安装opencv
- 线性代数学习1 标量、向量、矩阵和张量
- Qt 之 样式表的使用——设置样式的方法
- php 打印7天前的时间