机器学习论文笔记—如何利用高效的搜索算法来搜索网络的拓扑结构

作者: 陈 扬

编辑:赵一帆

简 介

分层表示高效的架构搜索(HIERARCHICAL REPRESENTATIONS FOR EFFICIENT ARCHITECTURE SEARCH)这篇文章讲的是如何利用高效的搜索算法来搜索网络的拓扑结构。用一个简单但功能强大的演化算法。 这个方法可以发现具有卓越性能的新架构。它这篇文章很大程度上借鉴了GECNN的一些东西,或者说,我之前写了GECNN的论文笔记,里面也是讲演化算法的:https://zhuanlan.zhihu.com/p/36758195 。

github:https://github.com/markdtw/awesome-architecture-search(还没开源代码)

arxiv:https://arxiv.org/abs/1711.00436

章节目录

  • 优点摘要
  • 抛砖
  • 引玉
  • 定义部分
  • 元操作
  • 进化
  • 初始化
  • 算法
  • 训练结果

01

优点摘要

  1. 通过分层图学习的方法,大大减少了冗余的搜索空间
  2. 引入分层表示来描述神经网络体系结构。
  3. 通过堆叠简单的基元(比如conv,maxpooling),实现了复杂的结构,使用简单的随机搜索,也可以获得用于图像分类的竞争架构,这体现了 搜索空间构建的重要性。
  4. 可以通过跳跃链接实现resnet,densenet等深层次的网络(为resnet引用都快破万了,你现在用不上残差块的思想你好意思发论文吗……)。

02

抛砖

首先一个问题,我们为什么要想办法设计出一个自动生成的网络架构,因为我最近发现一个问题啊,你一个神经网络特别那种实验室做出来的,效果估计也就是退cifar-10啊,mnist这些效果好一点点,但是一碰到真实环境,效果就菜的一批(可能会),可能这种机器生成的神经网络效果不一定有专业人员做的好,但是他在针对其他真实条件下的数据集,他的效果可能会反超那些定下来的网络结构,因为这个东西他上自适应调整的。

03

引玉

这篇文章,他提出来用邻接矩阵去表示一个有向无环图,然后用点表示feature map,用边表示一种操作(其实就只有conv, max_pooling, average-pooling, identity, 开心不,意外不)。

04

定义部分

我们先定义一个邻接矩阵,然后leval-1的矩阵的值的意思就是集合option{}。

The architecture is obtained by assembling operations o according to the adjacency matrix G: 结构 = assemble(G, o)

mrge是合并

o1(1)在这里是1 1的卷积,o2(1)是3 3的卷积,o3(1)是33的最大池化(不是2 2因为他要保证feature map一样大),他们统称为元操作(相当于tf.nn里面一个函数啊)。

我大概画一下leval-2 G1(2)=[0 3 2; 0 0 1; 0 0 1] 然后我们把这个生成的子图当成一个新的子图 ,是不是很6

所以我们就这样定义了一个level-2的子图了,接下来我们如法炮制的搞出了3个leval-2的子图,just like this:

你发现了吗,每一层的piont的个数是一样的,是固定的,这个就是他这个算法不太好的地方一

然后我们就得到了一个level-3的网络结构(简直就是insecption加resnet的样子)到此为止,我们就算是搞出来一种可以表示这个网络的方法了。

05

元操作

作者在实验中发现啊,3*3的conv只要搞多几次,就可有搞出很大的感受野什么的,所以他就搞的元操作其实很少(6):

• 1 × 1 convolution of C channels(调整特征图的维度)
• 3 × 3 depthwise convolution(不解释了吧)
• 3 × 3 separable convolution of C channels 
• 3 × 3 max-pooling(最大池化)
• 3 × 3 average-pooling (平均池化)
• identity

对于每一个feature map,他都用了RELU激活函数和批次正则化(-.-)。channels固定为常数C(可以通过1*1卷积)。 如果option(i,j)==0的话就说明i,j之间没有边。 concat就是之间把feature map加到一起。

06

进化

首先,我们要实现3个基本操作:增加add,修改alter,删除remove。

07

初始化

  1. 创建很小的元操作的DNA(类似GECNN上面有链接),为每个DNA创建一个映射,相当于是下一层的元操作
  2. 通过大量随机突变产生变异样本(类似蒙特卡洛方法随机)

08

算法

异步锦标赛进化(相当于生物学里面的达尔文进化论)

part 1:

part 2:

什么是锦标赛算法?

假设种群规模为n,该法的步骤为:

  1. 随机产生n个个体作为第一代(其实这步准确的说不是属于选择操作的,但每个算子并没有绝对的界限,这个是在选择操作之前的必做之事) 。
  2. 从这n个个体中随机(注意是随机)选择k(k< n)个个体,k的取值小,效率就高(节省运行时间),但不宜太小,一般取为n/2(取整)。
  3. 从这k个个体中选择最大的一个个体(涉及到排序的方法),作为下一代n个个体中的一个个体 。
  4. 重复2-4步,至得到新的n个个体。
  5. 进行这新的n个个体之间的交叉操作。

09

训练结果

  1. 对于不同大小的数据集,我们要输入不同大小的level层数和节点k数,总共最多会产生k^l个feature map,所以初始化的时候应该是有非常多的0元素才对(猜测)。
  2. 随机梯度下降,学习率的调整细节等……不想说了

我个人认为的改进点:可以看得出这个架构其实不是线性的,网络是可以比较复杂的,肯定是有resnet在里面的,应该是越深层越适应大的训练集,不过从我的实际工作来看,最好是再加一个网络结构预判器,因为针对点多且深的网络结构来说,没有做够的resnet到了深层肯定会梯度爆炸或者消失,那种明显不合格的网络是可以被检查出来的,可以极大的减少冗余计算,因为越好的网络训练应该是越快的,反而是大部分都是垃圾结构牺牲了大部分的时间(二八定律),具体是实现方法我自己留着发论文了。

具体的训练细节太复杂了,DEEPMIND也没开源代码,我就不好瞎说了。

在CIFAR-10上的训练效果

我想吐槽的是:

真的好有钱啊,200个p100,我算了一下在阿里云上面竞价的话要10*200*24*1.5=7200RMB,???????

说实话这个效果来说还是非常值这个价的,在CIFAR-10上这个被p过几百万次的数据集上还能和那些老p客难分伯仲,要是换的真实数据集的话效果应该会跟好一些吧。

10

总结

目前网络结构生成的两种方法强化学习和演化学习都在发paper,从难度来说我其实更喜欢演化学习,因为治疗都是现成的,但是长远的看我觉得强化学习会赢,这个元学习也一直是我觉得很有意思的一个方向,可能是迈向强人工智能的一个阶梯吧,百尺竿头更进一步。

题外话,这个全屏模式啊,一不小心就搞到1点了,哎明天上课是不是又要迟到了……

END

原文发布于微信公众号 - 机器学习算法工程师(Jeemy110)

原文发表时间:2018-06-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程

用Python进行速度预测

这次分享一段数据特征挖掘准备工作的套路~ 数据格式是这样的: ? task 预测值:速度 特征值: Region 区域 Length 长度Volume 流...

3289
来自专栏决胜机器学习

机器学习(五) ——k-近邻算法进一步探究

机器学习(五)——k-近邻算法进一步探究 (原创内容,转载请注明来源,谢谢) 一、概述 现采用k-近邻算法,进行分类应用。数据源采用《机器学习实战》提供的数...

3384
来自专栏织云平台团队的专栏

【干货分享】AIOps之根因分析

本文将给出基于决策树的智能根因分析方法,针对多维找出导致问题的根因。做数据、搞AI一定要基于具体业务,不可脱离业务谈数据、算法,否则将得不偿失。

1.9K10
来自专栏大数据文摘

剑桥大学研究院总结:26条深度学习经验

2856
来自专栏人工智能

机器学习(五)——k-近邻算法进一步探究

机器学习(五) ——k-近邻算法进一步探究 (原创内容,转载请注明来源,谢谢) 一、概述 现采用k-近邻算法,进行分类应用。数据源采用《机器学习实战》提供的数据...

20210
来自专栏Python中文社区

Python机器学习工具:Scikit-Learn介绍与实践

Scikit-learn 简介 官方的解释很简单: Machine Learning in Python, 用python来玩机器学习。 什么是机器学习 机...

2137
来自专栏人工智能

长时间序贯任务结构的演示学习方法及其在手术机器人中的应用

本文总结了最近三篇论文的结果,这些论文提出了一些可以将更长的任务分解成更短子任务的学习算法。

35210
来自专栏大数据文摘

论文Express | 自然语言十项全能:转化为问答的多任务学习

Salesforce最新论文提出了一个可处理多项自然语言处理的通用模型:decaNLP,处理机器翻译、文本分类等NLP任务统统不在话下!

1392
来自专栏ATYUN订阅号

TensorFlow团队:TensorFlow Probability的简单介绍

在2018年TensorFlow开发者峰会上,我们(TensorFlow团队)宣布发布TensorFlow Probability:一种使机器学习研究人员及相关...

1305
来自专栏数据派THU

教你用机器学习匹配导师 !(附代码)

作者:Zipporah Polinsky-Nagel, Gregory Brucchieri, Marissa Joy, William Kye, Nan Li...

1172

扫码关注云+社区

领取腾讯云代金券