EfficientNet网络

一、EfficientNet:

主要是想知道NMS到底怎么弄的!
详情参考:CSDN–EfficientNet网络详解
知乎–深度学习基础入门篇:激活函数介绍:tanh、PReLU、ELU、softplus、softmax、swish等

网络结构

图2
(b):宽度!通过增加网络的width即增加卷积核的个数(增加特征矩阵的channels)来提升网络的性能
(c):深度!通过增加网络的深度即使用更多的层结构来提升网络的性能
(d):分辨率!增加输入网络的分辨率来提升网络的性能
(e):同时增加宽度,深度,分辨率(EfficientNet)

激活函数

Swish函数表达式:
在这里插入图片描述

  • Swish 的设计受到了 LSTM 和高速网络中 gating 的 sigmoid 函数使用的启发。我们使用相同的 gating 值来简化 gating机制,这称为 self-gating。

  • self-gating 的优点在于它只需要简单的标量输入,而普通的 gating则需要多个标量输入。这使得诸如 Swish 之类的 self-gated 激活函数能够轻松替换以单个标量为输入的激活函数(例如ReLU),而无需更改隐藏容量或参数数量。

    优点:

  • 「无界性」有助于防止慢速训练期间,梯度逐渐接近 0 并导致饱和;(同时,有界性也是有优势的,因为有界激活函数可以具有很强的正则化,并且较大的负输入问题也能解决);

  • 导数恒 > 0;

  • 平滑度在优化和泛化中起了重要作用。
    在这里插入图片描述
    swish激活函数的一阶和二阶导数的图形如:
    在这里插入图片描述


二、神经结构搜索(Neural Architecture Search,简称NAS)

参考:知乎–NAS(神经结构搜索)综述

(1)简介

神经结构搜索(Neural Architecture Search,简称NAS)是一种自动设计神经网络的技术,可以通过算法根据样本集自动设计出高性能的网络结构,在某些任务上甚至可以媲美人类专家的水准,甚至发现某些人类之前未曾提出的网络结构,这可以有效的降低神经网络的使用和实现成本。

NAS的原理是给定一个称为搜索空间的候选神经网络结构集合,用某种策略从中搜索出最优网络结构。神经网络结构的优劣即性能用某些指标如精度、速度来度量,称为性能评估。这一过程如下图所示。

图(1)
在搜索过程的每次迭代中,从搜索空间产生“样本”即得到一个神经网络结构,称为“子网络”。在训练样本集上训练子网络,然后在验证集上评估其性能。逐步优化网络结构,直至找到最优的子网络。

搜索空间,搜索策略,性能评估策略是NAS算法的核心要素。
(1)搜索空间定义了可以搜索的神经网络结构的集合,即解的空间。
(2)搜索策略定义了如何在搜索空间中寻找最优网络结构。
(3)性能评估策略定义了如何评估搜索出的网络结构的性能。
对这些要素的不同实现得到了各种不同的NAS算法,


(2)空间

搜索空间定义了NAS算法可以搜索的神经网络的类型,同时也定义了如何描述神经网络结构。神经网络所实现的计算可以抽象成一个无孤立节点的有向无环图(DAG),图的节点代表神经网络的层,边代表数据的流动。每个节点从其前驱节点(有边射入)接收数据,经过计算之后将数据输出到后续节点(有边射出)。理论上说,只要是无孤立节点的DAG,都是合法的神经网络结构。按照不同的尺度,神经网络的结构定义包含如下层次的信息:

(1)网络的拓扑结构。网络有多少个层,这些层的连接关系。从简单的图结构到任意的DAG也反映了整个神经网络结构的发展历程。最简单的神经网络是线性链式结构,其对应的图的每个节点最多只有一个前驱,一个后续,类似于数据结构中的链表。早期的全连接神经网络,卷积神经网络都是这种拓扑结构。Inception、ResNet、DenseNet中的节点允许有多个前驱,多个后续,从而形成了多分支、跨层连接结构,它们是更复杂的图。这些典型的拓扑结构如下图所示。
在这里插入图片描述
在描述网络的拓扑结构时,一般采用前驱节点来定义,即定义每个节点的前驱节点,一旦该信息确定,则网络拓扑结构确定。

(2)每个层的类型。除了第一个层必须为输入层,最后一个层必须为输出之外,中间的层的类型是可选的,它们代表了各种不同的运算即层的类型。典型有全连接,卷积,反卷积,空洞卷积,池化,激活函数等。但这些层的组合使用一般要符合某些规则。

(3)每个层内部的超参数。卷积层的超参数有卷积核的数量,卷积核的通道数,高度,宽度,水平方向的步长,垂直方向的步长等。全连接层的超参数有神经元的数量。激活函数层的超参数有激活函数的类型,函数的参数(如果有)等
在这里插入图片描述

如果一个节点的前驱节点只有一个,则直接以前驱节点的输出值作为本节点的输入。如果前驱节点有多个,需要将前驱节点的值汇总后输入本节点,这里有两种策略:相加和拼接,前者的典型代表是ResNet,后者的典型代表是DenseNet。由于神经网络的层数不固定,每层的超参数数量也不固定,因此描述网络结构的参数是变长的。

为了提高搜索效率,有时候会搜索空间进行限定或简化。在某些NAS实现中会把网络切分成基本单元(cell,或block),通过这些单元的堆叠形成更复杂的网络。基本单元由多个节点(神经网络的层)组成,它们在整个网络中重复出现多次,但具有不同的权重参数。另外一种做法是限定神经网络的整体拓扑结构,借鉴于人类设计神经网络的经验。这些做法虽然减少了NAS算法的计算量,但也限定了算法能够寻找的神经网络的类型。

由于描述神经网络结构的参数含有离散数据(如拓扑结构的定义,层的类型,层内的离散型超参数),因此网络结构搜索是一个离散优化问题。定义结构的参数数量一般比较大,因此属于高维优化问题。另外,对于该问题,算法不知道优化目标函数的具体形式(每种网络结构与该网络的性能的函数关系),因此属于黑盒优化问题。这些特点为NAS带来了巨大的挑战。


(3)搜索策略

搜索策略定义了如何找到最优的网络结构,通常是一个迭代优化过程,本质上是超参数优化问题。目前已知的搜索方法有随机搜索,贝叶斯优化,遗传算法,强化学习,基于梯度的算法。其中强化学习,遗传学习,基于梯度的优化是目前的主流算法。

除前面的3种主流方案之外,NAS的搜索策略还有其他实现方案,包括序列优化[23],蒙特卡洛树搜索(MCTS)[24-25],贝叶斯优化[26-27]等。


(4)性能评估策略

搜索策略的目标是找到一个神经网络结构,最大化某种性能度量指标,如在之前未见的数据集上的精度。为了指导搜索过程,NAS算法需要估计一个给定神经网络结构的性能,这称为性能评估策略。

对于搜索策略搜索出的神经网络结构,首先在一个训练集上训练,然后在验证集上测试精度值。训练和验证过程非常耗时,因此有必要采取措施以降低性能评估的成本。降低训练成本的简单做法有减少训练时间(迭代次数),在训练样本的一个子集上进行训练,在低分辨率的图像上进行训练,或者在训练时减少某些层的卷积核的数量。这些做法在降低计算成本的同时可能会导致性能评估值的偏差。虽然搜索策略只需对各种网络结构的优劣进行排序,无需知道它们准确的性能指标,但这种近似可能还是会导致排序结果的偏差。

更复杂的做法是对神经网络的性能进行预测(外推),即通过训练时前面若干次迭代时的性能表现推断其最终的性能,或者用搜索出的单元(块)的特性预测整个网络的性能。权值共享也是一种方案。以之前训练过的子网络的权重作为当前要评估的子网络的初始权重可以有效的提高训练速度,加速收敛,避免从头开始训练。ENAS和DARTS则直接让各个子网络共享同一套权重参数。

参考:知乎–AI|神经架构搜索(NAS)简要介绍

NAS的意义在于解决深度学习模型的调参问题,是结合了优化和机器学习的交叉研究。在深度学习之前,传统的机器学习模型也会遇到模型的调参问题,因为浅层模型结构相对简单,因此多数研究都将模型的结构统一为超参数来进行搜索,比如三层神经网络中隐层神经元的个数。优化这些超参数的方法主要是黑箱优化方法,比如分别为进化优化,贝叶斯优化和强化学习等。

NAS的主要研究问题可以总体上分为3个部分:构建搜索空间,优化算法以及模型评估。

对比传统网络的超参搜索,NAS主要的区别是深度网络结构搜索的重点在于如何拼接不同的结构模块和操作,以及如何降低模型评估的计算消耗

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值