作为NASNet的同期论文,BlockQNN同样地将目光从整体网络转换到了block-wise,整体思路大概是MetaQNN的block版,增加了一些细节地小修改。配合Early Stop Strategy,计算资源十分少,但性能较同期的NASNet差点



来源:晓飞的算法工程笔记 公众号

论文: Practical Block-wise Neural Network Architecture Generation

Introduction


  为了让网络搜索更高效,论文提出block-wise网络生成方法BlockQNN,整体的思想跟同期的NasNet十分类似,不同点在于这篇论文是基于Q-learning进行学习的,可以认为是MetaQNN的block版。BlockQNN以block为单位进行搜索,每个block包含多层,然后再将block按预设的框架堆叠成完整的网络,这样不仅能提高搜索的效率,还可以提高搜索结果的泛化能力。

  BlockQNN主要有以下有点:

  • Effective,自动生成的网络的性能与人工设计的网络相当。
  • Efficient,首个考虑block-wise的自动网络生成方法,配合Early Stop Strategy仅需要32GPU3天。
  • Transferable,CIFAR上搜索到的架构仅添加些许修改就能迁移到ImageNet上。

Methodology


Convolutional Neural Network Blocks

  现代卷积网络大都可以看成是多个相似block的堆叠,只是每个block的超参数不同。因此,针对block的精心设计不仅可以达到更高的准确率,还可以有更好的泛化能力。为此,论文主要针对block结构的自动生成。

  CNN网络的前向推理可以看成一个有向无环图,为了统一,使用网络结构编码(Network Structure Code,NSC)进行表示,如图2。每个block由一组5-D NSC向量表示,前3个值分别表示层序号,操作类型,核大小,后两个值表示输入对应的层序号,如层包含单个输入,则第二个输入序号为0。如果层的输出没有作为其它层的输入,则conate成最终的输出。这里的卷积操作指的是预激活卷积单元(a Pre-activation Convolutional Cell, PCC),包含ReLU、卷积以及BN,这样的设定能减少搜索空间并保持较好的性能。

  基于以上搜索到的block,将普通的网络转换成对应的block版本,CIFAR-10和ImageNet数据机的堆叠网络如图3所示,block内没有下采样模块,下采样直接使用池化层,每个block会重复N遍来满足不同的要求。如果特征图大小下降了一半,则权重增加两倍。

Designing Network Blocks With Q-Learning

  论文使用Q-learning加速搜索,Q-learning是强化学习的其中一种,目的是选择合适的action来最大化累计奖励,包含agent,states和actions。state \(s\in S\)代表当前层结构NSC,action \(a\in A\)为后续层结构NSC的选择,由于NSC合集是有限的,state和action空间也是有限且离散的,保证了搜索空间相对较小。

  状态转移过程\((s_t, a(s_t)) \to (s_{t+1})\)如图4a所示,\(t\)代表当前层,而图4b则是图4a的状态转移构建的实际网络。agent的主要任务是选择block的NSC结构,block的结构可以认为是action的选择轨迹\(\tau_{a_{1:T}}\),比如一连串NSCs。论文将层选择过程视为马尔科夫决策,假定在某个block中表现好的层在别的block中也可以表现得不错。

  为了找到最好的结构,agent需要最大化所有可能路径的回报期望\(R_{\tau}\),\(\mathbb{R}\)为累计回报。

  通常使用公式2的Bellman’s Equation进行公式1的优化,给予状态\(s_t \in S\)以及后续的操作\(a \in A(s_t)\),定义最大的总期望回报为\(Q^*(s_t, a)\),即state-action对的Q-value。

  由于期望很难直接求得,所以一般采取迭代式Bellman’s Equation,以经验假设的方式解决公式2。\(\alpha\)为学习率,决定新旧状态的占比,\(\gamma\)为折扣率,决定后续回报的权重,\(r_t\)为当前状态\(s_t\)得到的中间回报,\(s_T\)代表最终状态,\(r_T\)为对应网络收敛后的验证准确率。

  由于\(r_t\)不能显示地计算,这里采用reward shaping的方法加速训练,之前的方法比如MetaQNN都直接将中间奖励设为零,这会导致RL耗时,因为在刚开始的阶段,\(s_T\)的Q-value会明显高于其它状态(终止层Q-value无折扣率,直接是准确率?),导致网络偏向于构建很少层的小block(倾向于选择终止层)。

  这里对reward shaping进行了实验,可以看到使用后能显著提高收敛速度。

  完整的学习过程如图4c,agent首先采用一系列结构编码来构建block并构建完整的网络,然后训练生成的网络,将验证准确率作为reward来更新Q-value,最后,agent选择另外的结构编码来获得更好block结构。

Early Stop Strategy

  尽管block-wise的生成方式能增加搜索速度,但仍然十分耗时,这里采用early stop strategy来进一步加速。early stop strategy可能带来较低的准确率,如图6所示,early stop strategy的准确率明显低于最终的准确率,意味着early stop strategy没有完全体现block的效果。同时,论文注意到FLOPs以及block的density与最终准确率为负相关的

  基于上面的发现,论文重新定义了reward函数,\(\mu\)和\(\rho\)为平衡因子,新的reward函数能更好地关联最终准确率。基于early stop strategy和较小的搜索空间,仅需要32卡搜索3天。

Framework and Training Details


Distributed Asynchronous Framework

  论文使用分布式异步框架进行搜索,如图7所示,包含三部分:

  • master node: 采样batch block结构。
  • controller node: 使用block构建完整网络结构,分配给compute node。
  • compute node: 训练并返回网络的验证准确率。

Training Details

  • Epsilon-greedy Strategy,有\(\epsilon\)概率进行随机action选取,\(1- \epsilon\)概率选择最优action,\(\epsilon\)随训练逐步下降,有助于agent平滑地从探索模式转换为榨取模式。
  • Experience Replay,与MetaQNN一样,保存结构和对应准确率,在一定区间内直接采样存储的结构进行agent训练。

Results


Block Searching Analysis

  这里展示了Epsilon-greedy Strategy的效果,在开始榨取模式后,准确率极速提升。

  这里验证PCC的作用,可以看到,PCC的效果十分明显。

Results on CIFAR

Transfer to ImageNet

CONCLUSION


  作为NASNet的同期论文,BlockQNN同样地将目光从整体网络转换到了block-wise,整体思路大概是MetaQNN的block版,增加了一些细节地小修改。配合Early Stop Strategy,计算资源十分少,但性能较同期的NASNet差点。





如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

BlockQNN:NASNet同期,商汤提出block-wise版的MetaQNN | CVPR 2018的更多相关文章

  1. 商汤提出解偶检测中分类和定位分支的新方法TSD,COCO 51.2mAP | CVPR 2020

    目前很多研究表明目标检测中的分类分支和定位分支存在较大的偏差,论文从sibling head改造入手,跳出常规的优化方向,提出TSD方法解决混合任务带来的内在冲突,从主干的proposal中学习不同的 ...

  2. 旷视向左、商汤向右,AI一哥之名将落谁家

    编辑 | 于斌 出品 | 于见(mpyujian) AI风口历经多年洗礼之后,真正意义上的AI第一股终于要来了. 相比于聚焦在语音识别技术上的科大讯飞.立足互联网产业的百度.发力人形机器人领域的优必选 ...

  3. 商汤科技汤晓鸥:其实不存在AI行业,唯一存在的是“AI+“行业

    https://mp.weixin.qq.com/s/bU-TFh8lBAF5L0JrWEGgUQ 9 月 17 日,2018 世界人工智能大会在上海召开,在上午主论坛大会上,商汤科技联合创始人汤晓鸥 ...

  4. 2019 计蒜之道 初赛 第一场 商汤AI园区的n个路口(中等) (树形dp)

    北京市商汤科技开发有限公司建立了新的 AI 人工智能产业园,这个产业园区里有 nn 个路口,由 n - 1n−1 条道路连通.第 ii 条道路连接路口 u_iui​ 和 v_ivi​. 每个路口都布有 ...

  5. 计蒜客 第四场 C 商汤科技的行人检测(中等)平面几何好题

    商汤科技近日推出的 SenseVideo 能够对视频监控中的对象进行识别与分析,包括行人检测等.在行人检测问题中,最重要的就是对行人移动的检测.由于往往是在视频监控数据中检测行人,我们将图像上的行人抽 ...

  6. 商汤开源的mmdetection技术报告

    目录 1. 简介 2. 支持的算法 3. 框架与架构 6. 相关链接 前言:让我惊艳的几个库: ultralytics的yolov3,在一众yolov3的pytorch版本实现算法中脱颖而出,收到开发 ...

  7. 面试 | 商汤科技面试经历之Promise红绿灯的实现

    说在前面 说实话,刚开始在听到这个面试题的实话,我是诧异的,红绿灯?这不是单片机.FPGA.F28335.PLC的实验吗?! 而且还要用Promise去写,当时我确实没思路,只好硬着头皮去写,下来再r ...

  8. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 A. 地铁站

    //其实比赛的时候就想到这方法了,但看到数据太吓人,就没写//看着标程,实际上就是这方法,太坑爹…… /* 假设值为k,对于图中任意两点,圆1半径k/t1,圆2半径k/t2 圆1与圆2的交集为可以设置 ...

  9. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 D. 白色相簿

    从某一点开始,以层次遍历的方式建树若三点a.b.c互相连接,首先必先经过其中一点a,然后a可以拓展b.c两点,b.c两点的高度是相同的,若b(c)拓展时找到高度与之相同的点,则存在三点互相连接 //等 ...

  10. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 E. 疯狂计数

    1.改高精度 :float/double的精度为x位,小数部分最多x+x位(乘法和加法),整数部分<1000000*1000000/2=5 * 10^11 2.分成整数部分和小数部分分别存储,貌 ...

随机推荐

  1. tensorflow中高维数组乘法运算

    1 前言 声明:本博客里的数组乘法运算是指矩阵乘法运算,不是对应元素相乘. 在线性代数或高等代数中,我们学习了矩阵乘法,那么,什么样的高维数组才能相乘?tensorflow 又是如何定义高维数组运算规 ...

  2. An Introduction to ANYDATA

    以下内容来自Oracle FAQ writen By Kevin,关于ANYDATA类型在项目中的应用. My newest project needed to create a record kee ...

  3. 机器学习策略篇:详解为什么是ML策略?(Why ML Strategy?)

    为什么是ML策略? 从一个启发性的例子开始讲,假设正在调试的猫分类器,经过一段时间的调整,系统达到了90%准确率,但对的应用程序来说还不够好. 可能有很多想法去改善的系统,比如,可能想去收集更多的训练 ...

  4. 【小记事】如何设置vscode代码格式化时不要自动换行

    最近一格式化就给我分好多行,好气哦(`ヘ´)=3 在setting.json中添加如下代码: "vetur.format.defaultFormatter.html": " ...

  5. 项目实战:Qt+OpenCV激光射击游(识别激光、识别圆)

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  6. java图书管理系统(桌面版本)

    运行效果: 注册登陆界面 注册存在的账户时 ​ 登陆之后主界面如下 点击图书管理-图书更新界面如下 图书列表 项目说明: 由于平时工作比较忙,也没时间写,可是我在公众号后台看见好多小伙伴讨论,我就抽时 ...

  7. Ubuntu下docker部署

    使用docker进行容器化集成部署 远程服务器更新源 更新ubuntu的apt源 sudo apt-get update 安装包允许apt通过HTTPS使用仓库 sudo dpkg --configu ...

  8. 【LeetCode剑指offer#04】包含min函数的栈、栈的压入、弹出序列(辅助栈的应用)

    包含min函数的栈 https://leetcode.cn/problems/bao-han-minhan-shu-de-zhan-lcof/ 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元 ...

  9. 【Azure Redis 缓存】Redis的监控方式? 是否有API接口调用来获取监控值

    问题描述 对于PaaS的Azure Cache for Redis,Azure中有哪些监控方式?是否能有api接口调用来获取监控值? 问题答案 1) 在Redis的门户中,使用Metrics查看Red ...

  10. 【Azure 环境】Update-MgEntitlementManagementAccessPackageAssignmentPolicy 命令执行时候遇见的 No HTTP Resource was found 问题分析

    Microsoft Graph PowerShell SDK: acts as an API wrapper for the Microsoft Graph APIs, exposing the en ...