查看原文
其他

微软开源NAS算法Petridish,提高神经网络迁移能力

CSDN App AI科技大本营 2020-02-17



作者 | Jesus Rodriguez
译者 | Rachel
编辑 | 夕颜
出品 | AI科技大本营(ID:rgznai100)               

【导读】神经架构搜索(Neural architecture search, NAS)是深度学习中最热门的趋势之一。NAS方法针对特定问题和数据集,尝试找出最合适的神经网络架构。NAS 通过机器学习方法来解决机器学习问题。在近几年,尝试将 NAS 技术嵌入主流深度学习框架和平台的算法数量呈爆发式增长,但最初的NAS模型遇到了很多的挑战,尤其是在将 NAS 生成的神经网络由一个领域迁移到另一领域时。因此,在 NAS 领域,仍然有很多创新的潜力。 最近,微软研究团队发布了一个名为 Petridish 的算法,该算法可用于神经网络架构选择的优化。 
NAS 出现的主要原因是设计神经网络的代价非常高昂。在现有的深度学习生态系统中,很多知名且效果良好的神经网络都存在迁移上的困难,尤其在用户的数据集和神经网络原始测试数据集差异较大时。在现有的 NAS 方法中,很多都需要使用数百个 GPU 时间来寻找良好的网络架构,然而其效果仅稍稍优于随机搜索。另外,特征选择问题对于 NAS 技术也是一个不小的挑战。
 
特征选择算法需要从数据集中抽取出相关特征以用于神经网络模型搭建,这一点和 NAS 非常相似。很显然,选择特征比选择神经网络架构要简单得多,这也成为了 Petridish 团队的灵感来源:从特征选择技术的原则中获得借鉴。


NAS 简史

考虑到 NAS 方法最近的流行程度,可能有很多人会认为 NAS 是最近才出现的学科。2016年,谷歌关于强化学习的著名论文(https://arxiv.org/abs/1611.01578)的发表使得 NAS 重新回到人们的视野。而事实上, NAS 的研究可以追溯到20世纪80年代。最早关于 NAS 的论文之一发表于 1988年,标题为“Self Organizing Neural Networks for the Identification Problem”(https://papers.nips.cc/paper/149-self-organizing-neural-networks-for-the-identification-problem). 从那之后,关于 NAS 的研究陆续发表,但直到谷歌关于 NAS 论文的发表,NAS 技术才真正得到肿瘤机器学习社区的重视。如果您对 NAS 方法的研究历史感兴趣,可以参阅 AutoML Freiburg-Hannover(https://www.automl.org/automl/literature-on-neural-architecture-search/) 网站上的相关介绍。



NAS 的两个类型:前向搜索 vs. 后向搜索


NAS 技术中主要有两个类型:后向搜索(vackward-search)和前向搜索(foward-search)。后向搜索在 NAS 技术中更为常见,该方法首先以图结构构建一个所有可能的神经网络架构的集合,之后通过梯度下降或强化学习逐步降低不需要的边的权重。尽管该方法能够有效降低 NAS 的搜索时间,其存在一个主要的缺陷:在构建初始的图结构时需要人类的领域知识。
 
采用前向搜索的 NAS 尝试通过对规模较小的神经网络结构进行扩展以得到更大的神经网络。这种方法继承了深度学习模型特征选择方法的很多原则。该方法和后向搜索的不同之处在于,前向搜索不需要设计一个有限的搜索空间,因此前向搜索更加普遍化且易于使用,尤其是在基于已有模型进行热启动时,或是进行长时间持续的学习时。



Petridish

Petridish 是一个前向搜索 NAS ,其借鉴了特征选择和梯度提升技术。该算法首先创建一个模型集合以作为搜索输出,之后通过多个 stop-forward 层和 stop-gradient 层来高效识别加入模型集合的最佳候选模型,并使用异步方法进行训练。
 
Petridish 的算法可以分为三个阶段:
  • 阶段0: Petridish 首先输入一个规模较小的母模型,该模型一般为人为定义的仅包含一到两层的简单模型,或是已经由领域专家基于数据集构建的成熟的神经网络模型。
  • 阶段1: Petridish 将候选层、 stop-gradient 和 stop-forward 层与母模型连接,并对构建出的模型的一部分进行训练。候选层可以是搜索空间中任何操作的组合。通过使用 stop-gradient 和 stop-forward 层,该算法能使得候选层的梯度在进行积累的同时不影响前向的操作和后向的梯度。如果没有 stop-gradient 和 stop-forward 层,算法将很难明确候选层对母模型效果的贡献如何,且可能导致更多的训练花销。
  • 阶段2: 如果一个特定的候选层或候选层的集合对模型的效果提升有所贡献,则将 stop-gradient 层、stop-forward 层和其他候选层一处,并对模型进行整体训练以进行融合。之后,使用散点图对训练结果进行绘制,以得到一个对帕累托边界的估计。
 
             
将帕累托边界添加到 Petridish 算法中是一个很有趣的想法,通过使用该边界,研究者能够更容易地决定针对特定任务达到最优效果的神经网络架构。另外,对帕累托边界的估计也使得多个标准间的权衡更加易于观察,包括准确率、FLOPS 、内存、时延,等等。在下图中,帕累托边界附近的点构成了搜索结果的集合,该集合包含多个模型以供研究者和工程师进行选择。
          
微软研究团队通过多个 NAS 基线对 Petridish 的效果进行了评估。特别地,团队使用 CIFAR-10 数据集对图片分类模型进行了评估,并将所得模型在 ImageNet 数据集上进行了测试。在 CIFAR-10 数据集上,Petridish 的平均测试错误率降低至百分之 2.75 ± 0.21,最低测试错误率达到百分之 2.51 ,且仅使用 3.2M 参数,搜索时间为五天 GPU 时间。在将模型从 CIFAR-10 迁移至 ImageNet 时, Petridish 最优时的测试错误率降低到百分之 28.7 ± 0.15 ,最低测试错误率达到百分之 28.5,且仅使用 4.3M 参数。初始的测试结果甚至超越了已有的最优 NAS 模型,且同时将计算花销控制在了合理的范围内。
              
对于快速成长的 NAS 技术生态系统而言, Petridish 是一个非常有趣的尝试,尤其是其使用的前向搜索方法,因为大部分流行的 NAS 技术均基于后向搜索搭建。微软已经在其 Azure ML 平台增加了 NAS 模块, Petridish 算法的增加必将使得该平台具有更加丰富的功能。
 
原文链接:
https://towardsdatascience.com/microsoft-introduces-project-petridish-to-find-the-best-neural-network-for-your-problem-f3022bee5fce

(*本文为AI科技大本营翻译文章,转载请微信联系1092722531)



精彩推荐



2020年,由 CSDN 主办的「Python开发者日」活动(Python Day)正式启动。我们将与 PyCon 官方授权的 PyCon中国社区合作,联手顶尖企业、行业与技术专家,通过精彩的技术干货内容、有趣多元化的活动等诸多体验,共同为中国 IT 技术开发者搭建专业、开放的技术交流与成长的家园。未来,我们和中国万千开发者一起分享技术、践行技术,铸就中国原创技术力量。


【Python Day——北京站】现已正式启动,「新春早鸟票」火热开抢!2020年,我们还将在全国多个城市举办巡回活动,敬请期待!
活动咨询,可扫描下方二维码加入官方交流群~

CSDN「Python Day」咨询群 🔽
来~一起聊聊Python

如果群满100人,无法自动进入,可添加会议小助手微信:婷婷,151 0101 4297(电话同微信)


推荐阅读

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存