社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【深度学习】总有些哪些大胆又新奇的卷积网络结构设计

机器学习初学者 • 3 年前 • 429 次点击  

作者&编辑 | 言有三


你大概已经见惯了基本的卷积结构,对残差网络也了如指掌,对分组卷积也烂熟于心,也知道模型压缩的一些技巧,不过今天这里要说的,大部分同学可未必知道噢。


大众的模型结构咱们不讲,今天从卷积方式,通道变化,拓扑结构等各方面给大家介绍几个模型,立志于在这个方向发文章的同学,可要看仔细了。


1 渐变的宽度-金字塔结构

这是一个通道数的变化方式相关的网络结构。

有三AI知识星球-网络结构1000变



Pyramidal Residual Networks

通常来说,网络结构的通道数量变化是突变的,那有没有网络的增加是缓慢变化的呢?这就是金字塔结构了,名为Pyramidal Residual Networks。

作者/编辑 言有三

大家都知道,CNN等结构在特征图尺度减小的时候,通常会随之增加特征图的通道数目来增加高层的表达能力,这是模型性能的保证,大部分的模型其特征图通道数的增加是跳变的,比如从128增加到256。


之前我们讲述过随机删减深度的残差网络证明了深度残差网络的深度其实没有想象中那么深,在文章“Residual networks behave like ensembles of relatively shallow networks[C]”中的研究也表明删除掉一些block并不会显著降低性能,但是降采样的网络层除外。


本篇文章基于这个现象,认为要降低降采样的敏感性,必须要让通道的变化是缓慢的,即随着层数增加,每一层都慢慢增加宽度,命名为金字塔结构,如下。

这里a图是线性增加,b图是指数级增加。


那么到底性能如何呢?首先看下训练曲线对比:

这里两个网络的参数差不多,都是1.7M左右,从曲线上看,性能也相当。


另一个要关注的问题是,金字塔ResNet有没有实现它的初衷,即改善降低分辨率的网络层被删除时带来的性能下降,结果如下:

从结果看来,错误率确实降低了。更加具体的实验结果,大家自己去看论文吧。


[1] Han D, Kim J, Kim J. Deep pyramidal residual networks[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 5927-5935.

2 分支众多-分形结构

这是一个多分支结构相关的网络结构。

有三AI知识星球-网络结构1000变



FractalNet

残差网络可以使得上千层的网络结构设计成为可能,但并不是只有残差网络可以做到,FractalNet(分形网络)便是如此。

作者/编辑 言有三

分形是一个数学概念,指的是具有以非整数维形式填充空间的形态特征,也就是说它的有效维度不是整数。不过我们这里可以不用关注它的数学定义,而是关注它的,分形几何结构的一部分具有和整体相似的结构,即自相似,如下图形:

分形网络,顾名思义也是这样的特点了,局部的结构和全局相似,如下图:

可以看到包含了各种长度不同的子路径,从左到右:

第一列路径只有一条,长度l。

第二列路径两条,长度l/2。

第三列路径四条,长度l/4。

第二列路径八条,长度l/8。


它与残差网络的不同之处在于,绿色模块表示的非线性变换,即下一层不可能直接得到上一层的信号,而是经过了变换。


这样的一种包含了不同深度的子网络,与之前提过的stochastic depth有异曲同工之妙,它也可以被看作是不同深度的网络的ensemble。


作者们通过随机丢弃某些深度的方法也做了实验,丢弃的样例如下:

上面展示了两种路径,训练时混合使用。

Global: 只选择一条路径,且是同一列,这条路径就是独立的强预测路径。

Local:包含多个路径,但是保证每一层至少要有一个输入。


那么结果如何呢?

如上,与各种网络进行了对比,性能很好。在添加了drop-path技术后,还有极大提升,并且单独只拿出其中最深的一条路径所得的网络,都有接近最好的模型的性能。


与残差网络的相关研究一样,分形网络的研究也表明路径的有效长度才是训练深度网络的真正影响因素,不论是分形网络,还是残差网络,都拥有更短的有效的梯度传播路径,从而使得深层网络训练更不容易过拟合。


[1] Larsson G, Maire M, Shakhnarovich G. Fractalnet: Ultra-deep neural networks without residuals[J]. arXiv preprint arXiv:1605.07648, 2016.

3 一切可连-环形网络

这是一个基于跳层的复杂拓扑网络结构。

有三AI知识星球-网络结构1000变



CliqueNet

DenseNet通过复用不同层级的特征图,提高了通道的利用率,不过它的连接是前向的,即信息只能从浅层向深层传递,而CliqueNet则更进一步,信息的传递是双向的。

作者/编辑 言有三

结构如上图所示,CliqueNet不仅有前传的部分,还有后传,这种网络架构同时受到了RNN等循环网络和注意力机制的启发,使得特征图重复使用而且更加精炼。


CliqueNet的训练包含两个阶段。第一个阶段与 DenseNet 相同,即图中的Stage-1,此时浅层特征向深层进行传递,这可以视为初始化过程。


第二个阶段中每一层不仅接受前面所有层的特征图,也接受后面层级的特征图反馈。可以看出这是一种循环的反馈结构,可以利用更高级视觉信息来精炼前面层级的特征,实现空间注意力的效果。实验结果表明,它有效地抑制了背景和噪声的激活。

整体的网络架构如上:网络由很多的block组成,每一个block的stage II的特征通过global pool串接生成最终的特征。与DenseNet的不同之处在于,随着网络架构,每一个block的输入输出特征图不需要增加,从而更加高效,结果如下:

从上表可以看出,参数量和精度是非常具有优势的。


[1] Yang Y, Zhong Z, Shen T, et al. Convolutional neural networks with alternately updated clique[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 2413-2422.

4 不规则的卷积核-可变形网络

这是一个卷积核的形状相关的网络结构。

有三AI知识星球-网络结构1000变



Deformable Convolution

卷积操作本身具有非常固定的几何结构,标准的卷积操作是一个非常规矩的采样,通常是正方形,如果卷积核采用非规矩的采样,即它的形状不再是标准的方形,而是任意形状,则称之为可形变卷积(Deformable Convolution)。

作者/编辑 言有三

要描述上面的卷积核,不仅仅需要权重系数,还需要每一个点的偏移量,可变形卷积的思想最早以Active Convolution的形式被提出。


在Active Convolution中,卷积核的各个分量都有自己的偏移量,对于一个3*3的卷积,就包含了18个系数,其中X方向和Y方向的偏移量各9个。不过各个通道共享该系数,所以与输入输出通道数无关。


对于输入通道为M,输出通道为N,使用3*3的卷积的Active Convolution,权重参数量为M*N*3*3,偏移参数量为2*3*3,远远小于权重参数量,所以增加的参数量几乎可以忽略不计。


在Deformable convolutional networks,每一个通道不共享偏移量,偏移参数量为2*M*3*3,增加的参数量比Active Convolution更多,但是相比卷积核权重参数量M*N*3*3,仍然小很多,所以不会大幅度增加模型的大小,而且实际实现时可以对输出通道进行分组。

从上图就可以看出可变形卷积有更灵活的感受野。


可变形卷积的实现只需要增加偏移量的学习,实际就是多了一个offset层,给offset输出通道数变量,我们还可以对输出进行分组,控制要学习的变形的种类。

最后看一下参数对比和性能。

实验了各个网络层的结果,参数量的增加很小,性能也是提升的。具体的效果如何,大家不妨用自己的实验结果来验证。


[1] Jeon Y , Kim J . Active Convolution: Learning the Shape of Convolution for Image Classification[J]. 2017.

[2] Dai J, Qi H, Xiong Y, et al. Deformable Convolutional Networks[J]. 2017.

5 测试可变的网络-可分叉网络

这是一个推理时动态变化的网络结构。

有三AI知识星球-网络结构1000变



BranchyNet

通常来说模型训练完之后结构就是固定的,测试时图片沿着固定的通路进行计算。然而测试样本本身有不同的难度,简单的样本只需要少量的计算量就可以完成任务,困难的样本则需要更多的计算量。

作者/编辑 言有三

如上图所示,它在正常网络通道上包含了多个旁路分支,这样的思想是基于观察到随着网络的加深,表征能力越来越强,大部分简单的图片可以在较浅层时学习到足以识别的特征,如上图中的Exit 1通道。一些更难的样本需要进一步的学习,如上图中的Exit 2通道,而只有极少数样本需要整个网络,如Exit3通道。这样的思想可以实现精度和计算量的平衡,对于大部分样本,可以用更小的计算量完成任务。


那么如何判断是否可以提前结束呢?在提出该网络的论文中,作者采用分类信息熵,一旦该通道的分类信息熵低于某一个阈值,说明已经以很高的置信度获得了分类的结果,直到最终的通道。


在训练的时候,每一个通道都会对损失有贡献,越靠近浅层的网络权重越大。多通道的损失不仅增强了梯度信息,也在一定程度上实现了正则化。


将BranchyNet的设计思想用于LeNet,AlexNet,ResNet结构后,在维持性能的前提下,加速效果明显。

对于拥有N个分支的网络,需要的就是N-1个阈值,因为最后一个分支不需要阈值。


LeNet系列网络可以让超过90%的样本在第一个分支提前终止,AlexNet提前终止样本比例也超过一半,ResNet提前终止样本比例超过了40%。


[1] Teerapittayanon S, McDanel B, Kung H T. Branchynet: Fast inference via early exiting from deep neural networks[C]//2016 23rd International Conference on Pattern Recognition (ICPR). IEEE, 2016: 2464-2469.


往期精彩回顾




站qq群554839127,加入微信群请 扫码:
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/121895
 
429 次点击