网络结构搜索致力于用发现能够与专家涉及相聘美的网络结构。目前在图像识别、语音识别、机器翻译等领域已经取得了非常好的进展,但是仍然有两个问题。
1、目前的网络结构搜索只能进行单目标优化
2、大多数架构搜索方法需要大量的计算资源,通常需要千个GPU/天。
为了解决第一个缺点,我们提出了LEMONADE,这是一种用于多目标架构搜索的进化算法,它允许在一次运行中逼近多个目标(例如预测性能和参数数量)下的整个架构的Pareto前沿。
为了解决第二个缺点,我们提出了一种LEMONADE的Lamarckian继承机制,该机制可以生成由受过良好训练的父母热启孩子网络。 这是通过使用(近似)网络态射算子生成子代来完成的。
这两种贡献的结合使您可以找到与手工制作和自动设计的网络同等甚至超越其性能的模型。
1、介绍
这篇论文中我们的主要贡献:
为了克服千个GPU/天的资源消耗,我们利用网络态射(network morphisms)避免了从头开始的训练,从而大幅减少了每个网络所需的训练时间。
我们利用运算符作用于保留网络功能的神经网络架构空间 表示,被称为网络态射(Chen等人,2015; Wei等人,2016),【避免了从头开始的训练,从而大幅减少了每个网络所需的训练时间。】
在进化算法的背景下,该机制可以解释为Lamarckian继承,其中Lamarckism指的是一种机制,该机制允许通过继承将个体一生中获得的技能(例如,通过学习)传递给孩子。 由于网络态射被限制为仅增加网络的大小(因此也可能会消耗资源),因此我们引入近似网络形态(第3.2节)以允许网络收缩,这在多目标搜索的背景下至关重要。 原则上,建议的Lamarckian继承机制可以与用于架构搜索的任何进化算法结合,也可以与使用架构空间局部变化(的组合)的任何其他方法结合。-
我们提出了一种用于多目标神经架构设计的Lamarckian进化算法,称为LEMONADE,第4节,适用于多个目标的联合优化,例如性能,预测时间或参数数量等方面。 (LEMONADE在接近多个目标的Pareto峰的情况下维持着大量的网络。与通用的多目标算法相比,LEMONADE利用评估特定目标(例如体系结构的参数数量)的成本较低,而评估验证数据的预测性能的成本较高【因为首先需要训练模型】。)
因此,LEMONADE以不同的方式处理其各种目标:首先选择一个架构子集,为架构分配较高的可能性,以填补Pareto前沿空白。
“便宜”的目标; 然后,它仅训练和评估该子集,从而进一步减少了架构搜索期间的计算资源需求。 与其他多目标体系结构搜索方法相比,LEMONADE(i)不需要先定义性能与其他目标之间的折衷(例如,使用标量化方法时通过加权目标),而是返回一组体系结构 ,这允许用户选择合适的后验模型; (ii)LEMONADE不需要使用性能良好的架构进行初始化; 可以使用琐碎的架构对其进行初始化,因此需要的先验知识较少。 此外,LEMONADE可以处理各种搜索空间,包括具有多个分支和跳过连接的复杂拓扑。
在16个GPU上仅用5天的时间,LEMONADE就发现了与手动设计的网络在预测性能和资源消耗方面具有竞争力的架构,例如MobileNet V2(Sandler等人,2018),以及使用 资源增加40倍(Zoph等人,2018)和其他多目标方法(Dong等人,2018)。
2、背景
多目标优化
多目标优化(Miettinen,1999年)处理的问题是具有多个互补的目标函数f1...fn。 令N为可行解N的空间(在本例中为可行神经体系结构的空间)。 通常,多目标优化处理寻找一个N ∗∈N使得所有的f1...fn最小。 但是,通常没有单个N *同时使所有目标最小化。 相反,存在多个帕累托最优解,它们是在不增加至少一个fj的情况下无法降低任何fi。 更正式地讲,如果∀i∈1,...,n:fi(N(1))≤fi(N(2))并且∃j∈1,则解N(1)帕累托支配另一个解N(2)。 ,...,n:fj(N(1))<fj(N(2))。 帕累托最优解N ∗就是那些不受其他N∈N支配的解。 帕累托最优N ∗的集合就是所谓的帕累托锋。
神经网络结构搜索(NAS)
one-shot搜索是提高性能评估的另一种有前途的方法,该方法视所有的子图在一个超大的图上),并在架构之间共享权重。 只需要训练一个超大的one-shot图的的权重,然后无需任何单独的训练就可以评估体系结构(只是单发模型的子图)。 但是,one-shot NAS的一般限制是,先定义的supergraph将搜索空间限制为其子图。 此外,在架构搜索期间要求整个supergraph驻留在GPU内存中的方法将限于相对supergraph的大小。
Elsken et al. (2017); Cai et al. (2018a)提出网络态射的概念(请参阅第3.1节)。 其基本思想是基于已训练的相似体系结构的权重来初始化新生成的神经体系结构的权重,以使它们具有相同的准确性。 这种预训练的初始化可以减少从头开始训练所有体系结构的巨额成本。 我们的工作进一步引入近似网络态射(approximate network morphisms),使此类算子适用于多目标优化。
多目标网络结构搜索
LEMONADE(i)不需要复杂的宏体系结构,而是可以从琐碎的初始网络开始,(ii)可以处理任意搜索空间,(iii)不需要定义对先验目标的硬约束或权重。
3、网络操作
网络映射的含义,类似于函数的映射,区别在于他表示的是网络到网络的映射关系。
3.1 、网络态射
网络态射表达的意思是指
现在,我们描述LEMONADE中使用的运算符,以及如何将其表示为网络态射。 有关详细信息,请参阅附录A.1.1。
1、插入一个 Conv-BatchNorm-Relu块。我们把卷积初始化为一个单位块(identity mapping恒等变化)。(在前传过程中消除梯度弥散)
2、增加卷积的过滤器数量。
3、添加skip connection(能在后传过程中更好地把梯度传到更浅的层次中)
3.2 Approximate Network Morphisms
网络态射的公共属性是他们增加网络的大小,如果人们只想找到一种具有最大准确性的神经体系结构,这可能是一个合理的属性,如果仅以找到最大精度的神经体系结构为目标,而不是以资源需求较低的神经体系结构为目标,则这可能是一个合理的属性。 同样,一旦做出的决定将无法恢复。 像删除图层这样的操作员可能会大大减少模型所需的资源,同时(可能)保留其性能。
因此,我们现在对网络态射的概念进行概括,以涵盖降低神经体系结构能力的运算符。 我们说如果每个x∈X的Nw(x)≈(TN)w ̃(x),则算子T相对于神经网络Nw具有参数w的近似网络态射(ANM)。我们参考附录A.1.2。 进行正式定义。 在实践中,我们简单地确定w ̃,以便使用知识蒸馏法使N distillation近似于N(Hinton等人,2015)。
在我们的实验中,我们采用以下ANM:(i)删除随机选择的层或跳过连接,(ii)修剪随机选择的卷积层(即,删除其过滤器的1/2或1/4),以及( iii)用深度可分离卷积代替随机选择的卷积。 请注意,这些运算符可以通过用于压缩神经网络的复杂方法轻松扩展(Han等人,2016; Cheng等人,2018)。
- LEMONADE
在本节中,我们提出一个Lamarckian多目标进化算法神经架构,命名为LEMONADE。
LEMONADE旨在最小化多个目标f(N)=(fexp(N),fcheap(N))⊤∈Rm×Rn,其第一分量fexp(N)∈Rm
表示要进行昂贵评估的目标(例如作为验证错误或某种措施
仅可通过昂贵的模拟获得)及其其他成分fcheap(N)∈Rn
表示要廉价评估的目标(例如型号尺寸)。
LEMONADE维持一定种群的父亲网络,我们选择包括所有关于f的非支配网络,即Pareto front2的当前近似值。
在LEMONADE的每个迭代中,我们首先根据便宜的目标针对某些概率分布对父级网络进行采样,然后通过应用网络态射来生成子网络。在第二个采样阶段,我们再次根据便宜的目标对儿童子集进行采样,并且仅根据昂贵的目标对子集进行评估。因此,我们利用fcheap的评估成本低廉,以便将两个采样过程都偏向人口稀少的fcheap区域。因此,我们多次评估fcheap,以便最终在目标空间的人口稀少区域中找到一组不同的孩子,但仅评估fexp几次。
更具体地说,LEMONADE首先根据当前总体的便宜目标值{fcheap(N)| N∈P}计算密度估算器pKDE(例如,在我们的示例中为内核密度估算器)。 请注意,我们仅针对fcheap而不是f明确地计算KDE,因为这可以非常快速地评估pKDE(fcheap(N))。然后,提议孩子的更大数量npc Ncpc = {N c,...。 。 。 ,N c}是通过应用网络态射生成的,其中每个孩子的父N是1 npc根据与pKDE成反比的分布采样,
appendix
1、Batch Normalization, 批标准化, 和普通的数据标准化类似, 是将分散的数据统一的一种做法, 也是优化神经网络的一种方法. 具有统一规格的数据, 能让机器学习更容易学习到数据之中的规律.
我们引入一些 batch normalization 的公式. 这三步就是我们在刚刚一直说的 normalization 工序, 但是公式的后面还有一个反向操作, 将 normalize 后的数据再扩展和平移. 原来这是为了让神经网络自己去学着使用和修改这个扩展参数 gamma, 和 平移参数 β, 这样神经网络就能自己慢慢琢磨出前面的 normalization 操作到底有没有起到优化的作用, 如果没有起到作用, 我就使用 gamma 和 belt 来抵消一些 normalization 的操作
学习链接:https://morvanzhou.github.io/tutorials/machine-learning/ML-intro/3-08-batch-normalization/
我的几点疑问
问题一:网络态射之后的网络需要训练么?
答案:需要,网络态射后的网络只是相当于热启,热启完之后仍然需要训练,这就是为什么说看模型在验证集上的表现是"昂贵的",因为首先得对模型进行训练