文章目录
深度学习图像分类(八):FractalNet
前言
一、Fractal
二、Drop-path
三、 Teacher-student
四、Result
五、Compared with DenseNet
总结
前言
FractalNet(分型网络),2016年Gustav Larsson首次提出,为了证明Residual对于极深网络并不是必须的,通过一种分形的结构,达到了类似于教师-学生机制、深度监督的效果。提出了drop-path,对子路径进行随机丢弃。剧透一下,这个网络跟DenseNet非常之像,详见文章。

提示:以下是本篇文章正文内容,下面案例可供参考

一、Fractal
分形网络不像resNet那样连一条捷径,而是通过不同长度的子路径组合,网络选择合适的子路径集合提升模型表现

分形网络体现的一种特性为:浅层子网提供更迅速的回答,深层子网提供更准确的回答。
在这里插入图片描述

图中以粉红色的卷积层Convolution为基础层,实际上可以为其它类型的层或者子网络;
绿色的Join层一般可以用相加或concat,这里采取了相加然后取平均,因此所有基础层可以使用一样的channel数量
fC(z) 中C表示列数,z表示输入,C=1表示一个基础层
fC+1(z) 则如图所示,在右边叠加两个fC(z) ,左边接一个基础层
以此类推,当C等于4的时候,可以得到图中的f4(z)
f4(z)作为一个block中,如图中最右边的网络所示,完整的网络接了5个block,block之间用Pool层连接,最后是预测层
令block个数为B,每个block中的列数为C,网络的总深度为B⋅2C−1
二、Drop-path
路径舍弃,新的正则化规则
ResNet收敛快,但还是要经过基本的卷积结构,卷积通用的问题是缺少有效的正则化方法。对于深的如ResNet采用BN,对于宽的如WideResNet采用Dropout。而FractalNet是基于路径,舍弃一些路径,是一种新的正则化方法(与Stochastic Depth Net中的随机失活几乎一样,好奇的可以翻我之前的博文)。

对路径舍弃采用了 50% 局部以及 50% 全局的混合采样
局部:连接层以固定几率舍弃每个输入,但我们保证至少一个输入保留。如第1、3个
全局:为了整个网络选出每条路径,并限制其为单列结构,激励每列成为有力的预测器,每列只做卷积。如第2、4个
在这里插入图片描述

实验训练的时候,mini-batch之间交叉使用Local和Global

三、 Teacher-student
teacher-student网络,模型裁剪时会用到,原来庞大的网络是teacher,剪裁的小网络是student,训练时可以将它们两个的loss连接,在训练大网络时它会反馈一定的信息给小网络,就像是大网络教小网络怎么学。

分形网络中也有这种思想,在进行BP时随机舍弃一些路径,就会导致原先的路径不同了,计算出来的梯度不能作用在原先的路径上,要作用在其他路径上。用原先的网络去学,优化的时候优化其他路径。

这个想法与知识蒸馏非常相似,好奇的小伙伴可以去搜一下。

四、Result
在cifar10和cifar100上效果较好,ImageNet上一般。对于超分形网络在cifar100++,增加深度可以极大地提高精度,直到最终的收益递减(160层左右),而普通网络如果太深就无法训练。
在这里插入图片描述

+表示使用了水平镜像翻转和平移,++表示使用了更多的数据增强,实验主要和ResNet对比
用drop-path训练,可以从网络提取最深的单独列,在表格数据中可以看出也取得了不错的表现
不使用数据增强时,分形网络的表现超过了ResNet,可以看出分形网络更不容易过拟合
使用数据增强时,分形网络取得了和ResNet变种差不多的表现
不使用数据增强的时候,drop-path提升了表现
使用数据增强的时候,drop-path提升或者没有下降太大的表现
五、Compared with DenseNet
重新回顾一下Fractal结构图:
在这里插入图片描述

先看看左图,描述的是网络的单个模块(block)的结构。注意,这里的fC不是CNN中常用到的全连接层, 而是指分形次数为 C 的模块。fC 模块的表达式如下:

在这里插入图片描述

其中, ‘圆圈加号’ 是一个聚合(join)操作,本文推荐使用均值,而非常见的concat 或 addition。

中间图就是一个典型的 C=4 的block。把这些block堆叠起来,加上pooling和prediction层,就是完整的分类网络了,也就是右图。

网络结构看完了,FratalNet并不存在像ResNet那样skip connect的结构。但是,实际上如果把fC模块改成:

在这里插入图片描述

这就变成一个类似DenseNet的结构了。。。
而众所皆知,DenseNet某种意义上是ResNet的改进版。。。所以个人感觉其实FratalNet也算是ResNet的近亲,这大概也是为什么业界还是ResNet用得多的原因吧——反正都差不多,不如挑个结构最简单的。为了方便大家理解,这里以Fractal的画图方式画一下Dense Block(包含4层):
在这里插入图片描述

怎么样, 是不是很神奇~ 对DenseNet不了解的可以翻我之前的博文。

总结
论文的实验说明了路径长度才是训练深度网络的需要的基本组件,而不单单是残差块
分形网络和残差网络都有很大的网络深度,但是在训练的时候都具有更短的有效的梯度传播路径
分形网络简化了对这种需求(更短的有效的梯度传播路径)的满足,可以防止网络过深
多余的深度可能会减慢训练速度,但不会损害准确性