作者&编辑 | 言有三

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

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

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.

往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载黄海广老师《机器学习课程》视频课黄海广老师《机器学习课程》711页完整版课件

本站qq群554839127,加入微信群请扫码:

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

  1. 【深度学习】超越ConvNeXt!Transformer 风格的卷积网络视觉基线模型Conv2Former

    作者丨科技猛兽 编辑丨极市平台 导读 本文提出一种卷积调制模块,利用卷积来建立关系,这比注意力机制在处理高分辨率图像时更高效,称为 Conv2Former.作者在 ImageNet 分类.目标检测和语 ...

  2. 深度学习-11:神经元、神经网络、人脑和卷积神网络

    深度学习-11:神经元.神经网络.人脑和卷积神网络 深度学习原理与实践(开源图书)-总目录 在生物神经网络中,学习源自于大脑中无数神经元之间的连接.大脑接触到新的刺激后,这些神经元之间的连接改变了配置 ...

  3. 深度学习入门笔记(十八):卷积神经网络(一)

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

  4. 深度学习之循环神经网络(8)长短时记忆网络(LSTM)

    深度学习之循环神经网络(8)长短时记忆网络(LSTM) 0. LSTM原理 1. 遗忘门 2. 输入门 3. 刷新Memory 4. 输出门 5. 小结  循环神经网络除了训练困难,还有一个更严重的问 ...

  5. 深度学习笔记(35) 滑动窗口的卷积实现

    深度学习笔记(35) 滑动窗口的卷积实现 1. 卷积实现 2. 减少计算成本 1. 卷积实现 为了构建滑动窗口的卷积应用,首先要知道如何把神经网络的全连接层转化成卷积层 假设对象检测算法输入一个14× ...

  6. 深度学习之图像分类(二十五)-- S2MLPv2 网络详解

    深度学习之图像分类(二十五)S2MLPv2 网络详解 目录 深度学习之图像分类(二十五)S2MLPv2 网络详解 1. 前言 2. S2MLPv2 2.1 S2MLPv2 Block 2.2 Spat ...

  7. 【神经网络与深度学习】CIFAR10数据集介绍,并使用卷积神经网络训练图像分类模型——[附完整训练代码]

    [神经网络与深度学习]CIFAR-10数据集介绍,并使用卷积神经网络训练模型--[附完整代码] 一.CIFAR-10数据集介绍 1.1 CIFAR-10数据集的内容 1.2 CIFAR-10数据集的结 ...

  8. 都2021年了,不会还有人连深度学习都不了解吧(二)- 卷积篇

    一.前言 上篇文章详细阐述了激活函数是什么.常用的激活函数有哪些以及为什么要使用激活函数,相信大家对此有了一定的了解.在此基础上,我们趁热打铁,继续学习深度学习其它必须的知识.该篇文章讲述卷积操作及其 ...

  9. 深度学习入门笔记(十九):卷积神经网络(二)

    欢迎关注WX公众号:[程序员管小亮] 专栏--深度学习入门笔记 声明 1)该文章整理自网上的大牛和机器学习专家无私奉献的资料,具体引用的资料请看参考文献. 2)本文仅供学术交流,非商用.所以每一部分具 ...

最新文章

  1. 框架+重量级+轻量级
  2. 当心花招,关注全闪存性能
  3. jQuery学习——表单
  4. 定位的坐标原点HTML,html 定位
  5. 利用MiddleGen-hibernate-r5生成hbm文件及POJO文件
  6. 网络编程常用接口的内核实现----sys_listen()
  7. C++工作笔记-stl中map基础用法(插入,遍历,删除)
  8. 秦始皇嬴姓、赵氏,那“秦”是姓还是氏呢?
  9. 【数据分析】简介Excel数据表及设计要求
  10. Clojure 学习入门(9)- 连接redis
  11. 居家隔离的第5天,我们整了个六边形战士
  12. 【JWT】JWT+HA256加密 Token验证
  13. PHP 实现文件上传 php配置
  14. 太戈编程DEVC++教师答案库
  15. 蒲公英下载专用协议头ipa
  16. spring AspectJ的Execution表达式expression
  17. 电脑xls图标未正常显示
  18. Linux系统安全加固设置详细教程
  19. MS Outlook接收的附件显示文件损坏,真的吗?怎么办?
  20. poj:Freda的越野跑 求正序对数

热门文章

  1. ASP.NET MVC4学习笔记之Controller的激活
  2. 技术人员写blog的好处
  3. libgdx 学习笔记七 Libgdx模块概述
  4. sqlserver的四种分页方式
  5. Selenium2(WebDriver)总结(五)---元素操作进阶(常用类)
  6. SimpleAdapter的用法
  7. Quartz.Net 学习之路02 初探Quartz.Net
  8. python字符串截取拼接_Python字符串拼接、截取及替换方法总结分析
  9. 超实用资源,SCI写作到投稿全阶段模板
  10. pythonos模块介绍_Python os模块介绍