0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

神经架构搜索详解

WpOh_rgznai100 来源:陈翠 2019-07-07 10:49 次阅读

近期谷歌大脑团队发布了一项新研究:只靠神经网络架构搜索出的网络,不训练,不调参,就能直接执行任务。

这样的网络叫做WANN,权重不可知神经网络。前一阵子在业内引起了不小轰动。

很多同学对其中的关键方法“神经网络架构搜索(NAS)“表现出了极大兴趣。那么什么是NAS呢?

谷歌CEO Sundar Pichai曾表示:“设计神经网络非常耗时,需要具有专门背景知识的人,并且,对专业知识的高要求限制了创业公司和小的社区使用它。

而使用“神经网络设计神经网络”的方法被称为神经结构搜索(NAS),通常使用强化学习或进化算法来设计新的神经网络结构。

关于NAS,原理是什么?初学者又该如何入门?

图灵君对下面这篇选自medium技术博客进行了编译,该文章全面介绍NAS的原理和三种不同方法,希望大家有所帮助。

以下是博文内容:

我们大多数人可能都对ResNet耳熟能详,它是ILSVRC 2015在图像分类、检测和本地化方面的赢家,也是MS COCO 2015检测和分割的赢家。ResNet是一个巨大的架构,遍布各种跳跃连接。当我使用这个ResNet作为自己机器学习项目的预训练网络时,我想的是“怎么会有人提出这样的体系结构呢?”'

大型人类工程图像分类体系机构

不久之后,我了解到许多工程师和科学家用他们多年的经验构建了这种架构后。并且还有更多的直觉而不是完整的数学将告诉你“我们现在需要一个5x5过滤器以达到最佳精度”。我们有很好的图像分类任务架构,但像我这样的许多年轻学习者通常花费数小时的时间来修复体系结构,同时处理那些不是Image的数据集。我们当然希望别人能为我们做这件事。

因此神经架构搜索(NAS),自动化架构工程的过程就出现了。我们只需要为NAS系统提供数据集,它将为我们提供该数据集的最佳架构。NAS可以被视为AutoML的子域,并且与超参数优化具有明显的重叠。要了解NAS,我们需要深入研究它在做什么。它通过遵循最大化性能的搜索策略,从所有可能的架构中找到架构。下图总结了NAS算法。

NAS方法的维度

它有3个独立的维度:搜索空间、搜索策略和性能评估。

搜索空间定义了NAS方法原则上可能发现的神经架构。它可以是链状结构,其中层(n-1)的输出作为层(n)的输入馈送。或者它可以是具有跳跃连接(多分支网络)的现代复杂架构。

链状网络和多分支网络

有时人们确实想要使用具有重复主题或单元的手工制作的外部架构(宏观架构)。在这种情况下,外部结构是固定的,NAS仅搜索单元体系结构。这种类型的搜索称为微搜索或单元搜索。

左:单元结构 右:单元放入手工制作的外部结构中

在许多NAS方法中,以分层方式搜索微观和宏观结构; 它由几个层次的主题组成。第一级由原始操作组成,第二级是不同的主题,通过有向无环图连接原始操作,第三级是编码如何连接二级图案的主题,依此类推。

为了解释搜索策略和性能估计,下面将讨论三种不同的NAS方法。

强化学习

我们了解强化学习; 其中根据θ参数化的一些策略执行某些操作。然后,代理从所采取的操作的奖励更新策略θ。在NAS的情况下,代理生成模型体系结构,子网络(动作)。然后在数据集上训练模型,并将模型对验证数据的性能作为奖励。

控制器扮演代理的角色,准确性被作为奖励

通常,递归神经网络(RNN)被视为控制器或代理。它产生字符串,模型是随机构建的字符串形式。

RNN用于创建模型的字符串示例

例如,在图5中,连续的RNN输出用于构建滤波器; 从过滤器高度开始到步宽。输出锚点用于指示跳跃连接。在第N层,锚点将包含N-1个基于内容的sigmoids,以指示需要连接的先前层。

通过策略梯度方法训练RNN以迭代地更新策略θ。这里省略了详细的计算,可以在原始论文的第3.2节中找到。

论文地址:

https://openreview.net/pdf?id=r1Ue8Hcxg

渐进式神经架构搜索(PNAS)

PNAS执行本教程的搜索空间部分中讨论的单元搜索。他们通过以预定义的方式添加单元来构建来自块的单元并构建完整网络。

单元以预定数量串联连接以形成网络。并且每个单元由几个块(原文中使用的5个)形成。

这些块由预定义的操作组成。

块的结构。组合函数只是逐元素相加

操作结果表明,图中所示为原论文所使用的图形,可以进行扩展。

上图显示了完整的示例。即使在这种单元胞或微搜索中,也有10¹⁴个有效组合来检查以找到最佳单元结构。

因此,为了降低复杂性,首先仅构建仅具有1个块的单元。这很容易,因为通过上述操作,只有256个不同的单元是可能的。然后选择顶部K表现最佳的单元以扩展2个块单元,并重复最多5个块。

但是,对于一个合理的K,太多的2块候选来训练。作为这个问题的解决方案,我们训练了仅通过读取字符串(单元被编码成字符串)来预测最终性能的“廉价”代理模型。这种训练的数据是在单元构建、训练和验证时收集的。

例如,我们可以构造所有256个单块单元并测量它们的性能。并使用这些数据训练代理模型。然后使用此模型预测2个块单元的性能,而无需实际训练和测试它们。当然,代理模型应该能够处理可变大小的输入。

然后选择由模型预测的顶部K表现最佳的2个块单元。然后对这2个块单元进行实际训练,对“替代”模型进行微调,并将这些单元扩展为3个块并对其进行迭代

PNAS的步骤

差异化架构搜索(DARTS)

用于神经架构的搜索空间是离散的,即一种架构与另一种架构的不同之处至少在于该架构中有一层或一些参数,例如,5x5滤波器对7x7滤波器。在该方法中,采用连续松弛法进行离散搜索,以实现基于梯度的直接优化。

我们搜索的单元可以是有向无环图,其中每个节点x是潜在表示(例如卷积网络中的特征映射),并且每个有向边(i,j)与某些操作o(i,j)相关联( 卷积,最大池化等,转换x(i)并在节点x(j)处存储潜在表示。

每个节点的输出可以通过上述的等式计算。以这样的方式枚举节点,即从节点x(i)到x(j)存在边(i,j),然后i

在连续松弛法中,不是在两个节点之间进行单个操作。使用每种可能操作的凸组合。为了在图中对此进行建模,保持两个节点之间的多个边缘,每个边缘对应于特定操作。并且每个边缘也具有权重α。

离散问题的连续松弛

现在O(i,j)节点x(i)和x(j)之间的操作是一组操作o(i,j)的凸组合,其中o(.)εS,其中S是所有的集合可能的操作。

O(i,j)的输出由上述方程计算。

L_train和L_val分别表示训练和验证损失。两种损失不仅由架构参数α确定,而且还由网络中的权重“w”确定。架构搜索的目标是找到最小化验证损失L_val(w *,α*)的α*,其中通过最小化训练损失来获得与架构相关联的权重'w *'。

w∗= argminL_train(w, α∗ ).

这意味着一个双层优化问题,α作为上层变量,w作为下层变量:

α *= argminL_val(w ∗ (α), α)

s.t.w ∗ (α)= argminL_train(w, α)

训练后,某些边的α变得比其他边大得多。为了得到这个连续模型的离散架构,在两个节点之间保留唯一具有最大权重的边。

a)上的操作最初是未知的。b)通过在每个边上放置候选操作的混合来连续放松搜索空间c)在双层优化期间一些权重增加并且一些权重下降d)最终体系结构仅通过采用具有两个节点之间的最大权重的边来构建。

当找到单元时,这些单元然后用于构建更大的网络。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4762

    浏览量

    100534
  • NAS
    NAS
    +关注

    关注

    11

    文章

    280

    浏览量

    112362

原文标题:入门必备 | 一文读懂神经架构搜索

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机程序架构详解

    本帖最后由 eehome 于 2013-1-5 09:44 编辑 单片机程序架构详解
    发表于 08-17 15:55

    AutoML和神经架构搜索介绍

    AutoMl及NAS概述:更有效地设计神经网络模型工具
    发表于 09-04 06:37

    华人团队打造专为GAN量身定制架构搜索方案AutoGAN

    生成对抗网络(GAN)自其诞生以来一直盛行。它的一个最显著的成功在于是用各种各样的卷积结构生成逼真的自然图像。 近年来,人们对自动设计复杂的神经网络架构产生了浓厚的兴趣。神经架构
    发表于 11-30 07:29

    ARM Cortex-M系列芯片神经网络推理库CMSIS-NN详解

    1、ARM Cortex-M系列芯片神经网络推理库CMSIS-NN详解CMSIS-NN是用于ARM Cortex-M系列的芯片的神经网络推理库,用于低性能芯片/架构
    发表于 08-19 16:06

    人肉搜索详解

    人肉搜索详解 1. 引言
    发表于 08-06 10:19 3319次阅读

    OpenStack Swift架构详解

    OpenStack Swift是OpenStack开源云计算项目的子项目,被称为对象存储,本内容深入详解了OpenStack Swift架构
    发表于 09-11 11:19 1.2w次阅读
    OpenStack Swift<b class='flag-5'>架构</b><b class='flag-5'>详解</b>

    关于Instgram的搜索架构简要分析

    Instagram的优势在于:虽然公司规模小,却拥有相对大得多的基础设施架构,在恰当的时候还能利用资源以借助Facebook十年来积累的经验。Facebook的Unicorn搜索架构是一款以社交图
    发表于 10-10 16:17 0次下载
    关于Instgram的<b class='flag-5'>搜索</b><b class='flag-5'>架构</b>简要分析

    什么是神经架构搜索?机器学习自动化真能普及大众吗?

    到底什么是神经架构搜索?这是让机器学习普及的关键吗?这篇文章将重点解决这一问题。而在下篇文章中,我们会详细了解谷歌的AutoML。神经架构
    的头像 发表于 07-19 15:36 5613次阅读
    什么是<b class='flag-5'>神经</b><b class='flag-5'>架构</b><b class='flag-5'>搜索</b>?机器学习自动化真能普及大众吗?

    一种新的高效神经架构搜索方法,解决了当前网络变换方法的局限性

    不从头开始进行神经架构搜索,而是使用现有的网络作为起点,通过网络变换(Network Transformation)的方式来探索架构空间。具体的,他们使用了Net2Net操作(一类 f
    的头像 发表于 07-24 10:06 7136次阅读

    一种利用强化学习来设计mobile CNN模型的自动神经结构搜索方法

    具体来说,我们提出一种用于设计移动端的CNN模型的自动神经结构搜索方法,称之为Platform-Aware神经结构搜索。图1是Platform-Aware
    的头像 发表于 08-07 14:10 3812次阅读

    自动神经结构搜索方法实现高效率卷积神经网络设计

    一种自动神经结构搜索方法,用于设计资源有限的移动端CNN模型
    的头像 发表于 08-07 14:12 5233次阅读

    神经架构搜索的算法,可以使被AI优化过的AI设计过程加速240多倍

    首先,他们减少了运行神经架构搜索的GPU内存负载。标准神经架构搜索可以同时检查网络中
    的头像 发表于 04-10 14:20 3017次阅读

    MIT研发“神经架构搜索”算法,将AI优化的AI设计过程加速240倍或更多

    麻省理工学院(MIT)的一个研究小组将展示一种所谓的“ 神经架构搜索”算法 ,该算法可以将AI优化的AI设计过程加速240倍或更多。
    的头像 发表于 04-15 16:49 3278次阅读

    以进化算法为搜索策略实现神经架构搜索的方法

    自动化深度学习是目前深度学习领域的研究热点,神经架构搜索算法是实现自动化深度学习的主要方法之一,该类算法可以通过对搜索空间、搜索策略或优化策
    发表于 03-22 14:37 15次下载
    以进化算法为<b class='flag-5'>搜索</b>策略实现<b class='flag-5'>神经</b><b class='flag-5'>架构</b><b class='flag-5'>搜索</b>的方法

    神经网络架构有哪些

    神经网络架构是机器学习领域中的核心组成部分,它们模仿了生物神经网络的运作方式,通过复杂的网络结构实现信息的处理、存储和传递。随着深度学习技术的不断发展,各种神经网络
    的头像 发表于 07-01 14:16 604次阅读