深度学习之基础模型-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?

通过观察模型的深度与模型的效果之间的关系:如下图


ResNet

发现当模型的深度达到一定程度的时候,深度的增加对模型的提高起到的作用大大降低。从而,这也激发了作者从另外的一个角度去探索模型的结构,那就是结构多样性【structural diversity,类似于Inception modules】


这里写图片描述

模型结构

结合残差的思想,在多样性方面进行了改进


这里写图片描述

说明:

  • 左侧:普通的残差模块
  • 中间:Inception-ResNet-v2的模块
  • 右侧:抽象的残差模块,更加有利于模型结构上上的改进,只需关注残差部分Residul F

PolyNet的基本概念

  • residual unit:
    • 一阶: (I+F)x=x+Fx:=x+F(x)
    • 二阶:(I+F+F2)x:=x+F(x)+F(F(x))


这里写图片描述

说明:

名称 公式 说明 poly-2模块 I+F+F2 共享权值 mpoly-2模块 I+F+GF 共享一阶权值,二阶不共享 2-way模块 I+F+G 一阶多项式网络结构 poly-3模块 I+F+F2+F3 mpoly-3模块 I+F+GF+HGF 3-way模块 I+F+G+H

框架

整个网络建立在Inception-ResNet-v2的整体结构基础上,对其中的Inception模块进行了改进:


这里写图片描述

模型训练

  • Initialization:


    这里写图片描述

  • Residual Scaling:

    • 直接添加残差在input上,训练过程中,可能不稳定。从而增加了一个尺度因子β
    • 从而,I+F+G变成了I+βF+βG,令β=0.3
  • 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

原创粉丝点击