【论文笔记系列】AutoML:A Survey of State-of-the-art (上)

2023-11-19

之前已经发过一篇文章来介绍我写的AutoML综述,最近把文章内容做了更新,所以这篇稍微细致地介绍一下。由于篇幅有限,下面介绍的方法中涉及到的细节感兴趣的可以移步到论文中查看。
论文地址:https://arxiv.org/abs/1908.00709

1. Introduction

以往的模型都是靠大佬们不断试错和调参炼丹炼出来的,而且不同场景或者不同类型的数据集又得设计不同的网络模型,而我等穷&菜鸡在设计模型的天赋计算资源上都比不过大佬们。幸运的是终于有体恤民意的大佬提出了Neural Architecture Search with Reinforcement Learning这篇论文,它旨在让算法自己针对不同的数据找到合适的模型,实验结果表明算法找到的模型可以和大佬们设计的模型媲美,这篇论文也让NAS技术成为当今的一个热点研究问题。而AutoML则是进一步希望机器学习的pipeline(如下图)完全实现自动化。

可以看到一个完整的pipeline包括了数据准备(data preparation),特征工程(feature engineering),模型生成(model generation),模型评估(model estimation)。以上pipeline中的每个流程其实都可以写一篇综述,但是该论文是希望让大家能对AutoML整个流程有一个全面的了解,所以会对选择各个流程中会比较经典和具有代表性的算法进行介绍。

相信你也看到了已经有好几篇关于AutoML的综述,本篇综述与它们的区别在于本篇论文是第一篇从pipeline角度来进行介绍的,这样能让大家从一个全局的角度来了解和认识AutoML,而不会陷入某个技术脱离了轨道。另外我们还特意将数据准备纳入了AutoML的pipeline中,目的也是希望我们以后能够从繁琐的数据收集、整理过程中摆脱出来。

另外,由于NAS是AutoML中最热门的一个子话题,所以我们还单独写了一节来总结了目前的各种NAS算法比较,同时也基于CIFAR10和PTB两个数据集,将NAS生成的模型和人类设计的模型做了比较。

最后我们提出了几个开放性问题以及未来的可行的研究方向。

2. Data Preparation

数据准备可以细分为两个步骤:Data CollectionData Cleaning

2.1 Data Collection

最简单的数据收集其实就是用目前开源的数据集,比如说分类中常用的就是CIFAR10,ImageNet这种,当然我们也可以用搜索引擎来找我们需要的数据集:

2.1.1 Data Synthesis

当然其实很多时候你想要的并不一定搜得到,而你看着你手上那少得可怜的数据集暗自呻吟。此时Data Synthesis神仙下凡来到你身边,告诉你如下几种办法来扩充你现有的数据集:

第一种方法是数据增强(data augmentation),这个在处理图像的时候用的特别多,比如torchvisionAugmentor这些python库都提供了各种数据增强操作。当然数据增强操作有很多种,通过组合又可以得到更多种,完全靠人工设计数据增强操作会发疯的,所以谷歌,没错有时谷歌率先提出了AutoAugment【1】,他们在CIFAR10, ImageNet等数据集上找到了各种数据增强策略(即一组增强操作的组合),而后又有人提出了FastAugment【2】,来进一步提高搜索效率。NLP也有数据增强,具体的可以阅读论文。

第二种方法是使用数据模拟器,这种是用于像自动驾驶这种场景,因为我们不可能真的在真实世界中做测试。比较流行的模拟器有OpenAI Gym,Unreal Engine。我们实验室的大佬们就用Unreal Engine生成了一个用于视差和表面法向估计的大型合成室内机器人立体数据集(IRS dataset)【3】。

第三种就是使用现在很火的GAN技术来生成数据。

2.1.2 Data Searching

前面提到了几个搜索引擎可以搜索别人开源的数据,但是有时候我们也可以用通过Google或者爬虫的方式来爬取数据,但是这样会遇到若干种问题。第一种问题是搜索结果和搜索关键字不匹配,例如你想搜索水果-Apple,但是搜出来的结果可能包含伟大的苹果公司的logo以及他们的产品。还有一个问题就是网络数据的分布和你想构造的数据集分布可能差别很大,比如说A疾病的图像随便一搜到处都是,而B疾病的图像可能寥寥无几,这样搜索出来的数据集会非常的imbalanced。而如何解决这些问题欢迎阅读论文,这里不做展开。

2.2 Data Cleaning

这里主要介绍了需要做数据清洗的情况,另外也介绍了一些自动化清洗的算法,同样不作展开,具体详见论文。

3. Feature Engineering

这一章主要介绍了特征工程的三个方法:feature selection,feature construction和feature extraction。这里更多的是基于传统机器学习方法介绍的,这里不作展开,具体详见论文。

4. Model Generation

为方便说明把最开始的pipeline图再搬过来。
AutoML Pipeline_www.wityx.com

模型生成(model generation)可以分为模型选择和超参数优化两部分。如上图示模型选择又可以划分为两种,一种是对传统的模型做选择,比如是选择SVM啊还是选择KNN等。我们会更加关注第二种,即NAS技术。可以看到NAS技术横跨三个流程,文本会从model structure和hyperparameters optimization(HPO)以及model estimation三个方面进行介绍,其中model estimation会单独做一章进行介绍。

另外这里的HPO和以往我们说的超参数优化本质上是一样的,即都是优化问题,但是不同的是这里还包括了对模型结构进行优化。

4.1 Model Structure

这一节会以一种非常直观和好理解的方式进行介绍,不同模型结构之间的差异和优劣涉及到的比较多的细节,所以感兴趣的还是请移步到论文。

4.1.1 Entire structure

Entire structure简单理解就是我们假设模型深度是\(L\)层,然后每一层被指定一个操作,上层可以连接到其后所有层,如下图示:左边是最简单设计方法,右边则加入了skip-connection

4.1.2 Cell-based Structure

这一结构的提出是为了解决Entire structure的缺点:搜索非常耗时。

示意图如下,可以看到最终的模型是由两种cell组成的:normal 和 reduction cell。两者其实是差不多的,只不过前者的输入和输出大小,维度都保持一致,而reduction会把特征图大小减半,通道数翻倍。

cell内部结构如上图右边所示,很多论文后面都是参考了这种设计方式:

一个cell由\(B\)个block组成,一个block又由2个node组成,可以看到:

  • 每个node会被分配一个operation(如conv 3x3等),这个operation是从预定义的search space中选择的,常见的主要就是卷积操作和池化操作,或者一个类似于ResBlock的自定义的模块。
  • Node还被分配一个输入数据,可以看到block是有序号的,也就是说block1可以接收block 0的输出,但是不能接收block 2.另外block 0只能接收前面两个cell的输出作为输入。

上面介绍的normal-reduction方式有一个问题就是特征图的大小和通道数变化是固定的,所以在Auto-Deeplab【4】中将这个也纳入了搜索过程,使得模型更加灵活。

normal-reduction方式的另一个问题是每一层的cell结构是固定的,ProxylessNAS【5】通过使用BinaryConnection方法使得每层的cell结构可以不一样。

4.1.3 Progressive Structure

前面的Cell-based structure中cell内部的block数量需要预先设定好,而且在找到一个合适的cell结构后,通过堆叠固定数量的cell构造最后的网络模型。所以有一些论文则通过渐进式的方法来构造网络结构。

这篇论文【6】提出了Hierarchical structure,示意图如下:

可以看到这里的cell是有不同的level的,level-1就是最基本的操作,例如3x3卷积等,第二层就是用第一层的cell连接而成,更高层的cell类似。

P-DARTS则是从layer level的角度来实现渐进式,如下图示。可以看到之前的方法DARTS先是在训练集上搜索一个网络,这个网络由8个cell组成,搜索完毕后,直接堆叠更多的cell,然后直接训练这个更大的网络。而P-DARTS则是不断增加cell的数量。这里面还涉及到不少细节,更多的可以参阅论文。

4.1.4 Network Morphism based Structure (NM)

牛顿曾经说过:“if I have seen further it is by standing on the shoulders of Giants"。Net2Net【7】则是使用了这个思想,它可以直接基于现有的模型进行修改,使得模型变得更宽更深从而提高模型的性能。示意图如下,使得模型更深的方法其实就是插入一个等幂操作,也就是蓝色的结构,用数学公式表示就等价于\(f(x)=x\),乍看起来加了等于没加,但是后面参数会不断更新的呀,而且选择等幂操作也是为了保证模型至少不会比原来的差。

让模型变得更宽其实就是在某一层插入新的节点,这个节点其实是前一个节点的复制,所以通道数会被减半,这样也是为了等幂。

而后微软团队正式提出了Network Morphism (NM) 这一概念,相比于Net2Net,它的改进的地方有两点:1)可以插入non-identity的层,而且可以处理任意的非线性激活函数;2)Net2Net只能单独地执行加深或者加宽操作,而NM可以同时对深度,宽度,和卷积核大小做修改。

谷歌团队后面提出的EfficientNet【8】发现如果能很好地平衡模型深度,宽度以及分辨率的话可以有效提高模型性能。

参考文献

  • 【1】Autoaugment: Learning augmentation strategies from data
  • 【2】Fast autoaugment
  • 【3】Q. Wang, S. Zheng, Q. Yan, F. Deng, K. Zhao, and X. Chu, “Irs: A large synthetic indoor robotics stereo dataset for disparity and surface normal estimation,” arXiv preprint arXiv:1912.09678, 2019.
  • 【4】Auto-deeplab: Hierarchical neural architecture search for semantic image segmentation
  • 【5】Proxylessnas: Direct neural architecture search on target task and hardware
  • 【6】Hierarchical representations for efficient architecture search
  • 【7】Net2net: Accelerating learning via knowledge transfer
  • 【8】Efficientnet: Rethinking model scaling for convolutional neural networks


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【论文笔记系列】AutoML:A Survey of State-of-the-art (上) 的相关文章

  • SQL SERVER2008存储过程加密与解密

    前言 我们在设置数据库存储过程时经常会用到加密 如果遇到版本更新需要修改存储过程时 如果设计数据库时的存储过程没有留存 所以就必须用到存储过程的解密了 原来自己有个解密存储过程在SQL2000下应用无问题 后来升级到SQL2008后不好用了
  • 4.网络爬虫—Post请求(实战演示)

    网络爬虫 Post请求实战演示 POST请求 GET请求 POST请求和GET请求的区别 获取二进制数据 爬 百度官网 https www baidu com logo实战 发送post请求 百度翻译实战 使用session发送请求 模拟登
  • 微信小程序部署到线上环境

    微信小程序部署到线上环境 一 微信小程序申请 申请 并认证 未认证不能发布 认证需要300元 目前只支持企业认证 详细见官网说明 https mp weixin qq com cgi bin registermidpage action i
  • mac os mysql忘记root密码_mac上mysql报错以及root密码忘记解决办法

    1 对于前者ERROR 2002 HY000 Can t connect to local MySQL server through socket tmp mysql sock 2 这个错误 一般是mysql服务没开 命令行下执行sudo
  • java8的时期和时间

    文章目录 旧版日期时间的问题 新版日期时间介绍 Java util date java sql date SimpleDateFormatter calendar java8日期 DateTimeFormatter 计算 java8之前 j
  • Python学习 第五章 图形界面设计

    第五章 图形界面设计 1 常用的 Python GUI 库 1 1 Tkinter 1 2 wxPython 1 3 创建GUI程序 2 创建Windows窗口 3 几何布局管理器 3 1 pack 包装 3 2 grid 网格 3 3 p
  • leetcode移动零c++

    给定一个数组 nums 编写一个函数将所有 0 移动到数组的末尾 同时保持非零元素的相对顺序 示例 输入 0 1 0 3 12 输出 1 3 12 0 0 说明 必须在原数组上操作 不能拷贝额外的数组 尽量减少操作次数 整体思路 题目中都出
  • 软件项目经理的基本职责

    软件项目经理的基本职责 1 制定项目计划 并根据各种变化修改项目计划2 实施 项目的管理 开发 质量保证过程 确保客户的成本 进度 绩效和质量目标 3 制定有效的项目决策过程4 确保在项目生命周期中遵循是实施公司的管理和质量政策5 选择一个
  • VC++ CComboBox自绘(选择下拉列表框)

    效果图 头文件定义 CSWCheckComboBox h pragma once class CSWCheckComboBox public CComboBox DECLARE DYNAMIC CSWCheckComboBox 成员私有结构
  • gdal解析tif

    bool HandleTif ReadTif tif文件读取 std string name D XX xx tif const char charName name c str 注册 GDALAllRegister 以防中文名不能正常读取
  • Docker本地镜像推送到私有库

    Docker Registry是官方提供的工具 可以用于构建私有镜像仓库 1 下载镜像Docker Registry docker pull registy 2 运行私有库Registry 相当于本地有个私有Docker hub docke
  • 计算机基础——Excel 2010

    天软备考交流群 365218976 1 Excel 2010的基本操作 1 1 Excel的窗口界面 1 2 工作簿与工作表 1 3 单元格区域的管理 1 4 工作表的管理 1 5 输入和编辑数据 1 6 行 列和单元格的管理 1 7 批注
  • java代码引用jar包中文件的方法

    jar是一个单独的文件 里面的文件称之为资源 有两种方法获取 里面的资源文件 一般将资源文件放到resources文件夹中 1 推荐 静态和非静态方法中都能用 ClassName class getClassLoader getResour
  • 刷脸支付服务商抓住机会迎头赶上

    科技改变未来并不是一句口号 就拿买东西来讲 以前人们都是一手交钱一手交货 拿到大额的纸币 还要验真假 而现在移动支付成为主要付款方式 只要一部手机 扫一扫就能付款 一开始也有很多人不习惯手机支付 因为觉得没有现金实在 整天就是一堆数字转来转
  • 前端手写(正则、字符串、函数)

    1 实现千位分隔符 保留三位小数 parseToMoney 1234 56 return 1 234 56 parseToMoney 123456789 return 123 456 789 parseToMoney 1087654 321
  • ajax 传回underfined,$.jquery ajax返回的数据(json)显示为’undefined’

    这里我有一个简单的 PHP脚本 它以json格式显示数据库中的一些值 source GET source query MysqL query SELECT FROM images WHERE big thumb source results
  • Anaconda安装教程及numpy环境配置

    一 下载Anaconda 下载地址 https www anaconda com 二 安装Anaconda 1 进入官网后 看不懂英文可以先将网页翻译成中文 然后点击产品 gt 个人版 如图进入下载页面 2 可以直接点击下载 也可以滚动到页
  • 并发编程----4.java并发包中线程池的原理研究

    并发编程 4 java并发包中线程池的原理研究 java并发包中线程池ThreadPoolExecutor的原理研究 线程池的优点 线程的复用 减少线程创建和销毁带来的消耗 提供了一种资源限制和线程管理的手段 比如限制线程的个数和动态新增线
  • 数据库常用工具

    定期对你的MYSQL数据库进行一个体检 是保证数据库安全运行的重要手段 因为 好的工具是使你的工作效率倍增 常用工具 1 mysql 该mysql不是指mysql服务 而是指mysql的客户端工具 语法 mysql options data
  • 官方系统镜像烧写(windows下使用OTG)

    目录 OTG系统烧写 为什么能通过VBS将系统烧写进去呢 OTG系统烧写 选择对应的烧写工具 USB OTG线连接好 双击即可进行烧写 注意 当然也可以烧写到SD卡里面 前面我们烧写裸机代码都是选择从SD卡启动 Mfgtool这个工具先向板

随机推荐

  • unity官方demo学习之Stealth(二)警报灯设定

    为light alarm directional添加脚本DoneAlarmLight AlarmLight cs using UnityEngine using System Collections public class DoneAla
  • 设计模式-2--工厂模式(Factory Pattern)

    一 什么是工厂模式 工厂模式 Factory Pattern 是一种创建型设计模式 它提供了一种创建对象的接口 但是将对象的实例化过程推迟到子类中 工厂模式允许通过调用一个共同的接口方法来创建不同类型的对象 而无需暴露对象的实例化逻辑 工厂
  • java word转pdf 后通过 PdfReader 和 PdfStamper对pdf添加水印 通过poi等组件实现

    所需jar包地址
  • javah用法

    正确做法 进入到包com所在的目录 是java文件所在的包 不是class javah classpath jni com jnitest MainActivity 如果执行这个 javah jni com example zndktest
  • Git中添加文件.gitignore作用

    添加文件 gitignore作用 作用 我们使用Git时 经常看到 gitignore文件 具体有什么作用呢 作用 该文件用来描述Git仓库中不需要管理的文件和目录 一般可以在初始化时自动生成 gitignore文件 如果初始化是忘记加入此
  • 虚拟化、虚拟机等概念理解

    虚拟化 定义 是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机 在一台计算机上同时运行多个逻辑计算机 每个逻辑计算机可运行不同的操作系统 并且应用程序都可以在相互独立的空间内运行而不受影响 从而显著提高计算机的工作效率 软件 完全虚拟 V
  • Qt表格分页,跳转,首尾页

    简介 1 使用QTableWidget实现了首页 上下页切换 尾页 以及跳转 上代码 widget h ifndef WIDGET H define WIDGET H include
  • unity 使用vrtk4的插件 打包htv vive VR客户端包,手柄不生效

    背景 目的 u3d使用vrtk开发pico应用 vrtk是为了到时候无缝衔接后续要买的htc vive pro 2 先导入了tilia importer 也就是vrtk4 0 根据教程模块化使用功能 和pico官网下的 PICO Unity
  • Dom事件

    1 onclick 点击事件 2 ondbclick 双击事件 3 onmousedown 鼠标按下事件 4 onmouseup 鼠标松开事件 5 onmouseenter 鼠标移入事件 不支持冒泡 只触发一次 6 onmouseover
  • Linux 磁盘与文件系统管理(鸟哥私房菜)

    本文来自 http vbird dic ksu edu tw linux basic 0230filesystem php 第八章 Linux 磁盘与文件系统管理 系统管理员很重要的任务之一就是管理好自己的磁盘文件系统 每个分割槽不可太大也
  • JAVA用到的环境变量,JAVA_HOME、CLASSPATH、PATH

    Windows下JAVA用到的环境变量主要有3个 JAVA HOME CLASSPATH PATH JAVA HOME指向的是JDK的安装路径 如C JDK 1 4 2 在这路径下你应该能够找到bin lib等目录 值得一提的是 JDK的安
  • vue3学习笔记(1)script引入vue3实现简单应用

    Vue3专栏入口 目录 一 脚本引入简单使用 二 双向绑定的基本表现 一 脚本引入简单使用 script引入 简单使用实现数据渲染 div h1 counter num h1 div
  • 人工智能学习(一)newff函数介绍

    以下是matlab中的newff函数说明 不是neurolab中的newff 两者的参数不同 newff函数 指的是训练前馈网络的第一步是建立网络对象 实质是newff函数的参数 newff函数的格式为 net newff PR S1 S2
  • Linux服务器装mysql数据库并且连接数据库(详细教程)(阿里云)

    废话不多说 直接上教程 1 首先执行如下命令 更新YUM源 rpm Uvh http dev mysql com get mysql57 community release el7 9 noarch rpm 执行完上面命令后如果出现Peer
  • Verilog学习记录4——Verilog +: / -:语法

    Verilog 语法 看到这个语法的时候是在分析 IP AXI4 STREAM DATA FIFO的example时碰见的 然后查阅了资料 做出如下理解 变量的定义可以分为大端和小端 由于实际使用中变量常定义成大端 所以这里对小端不进行分析
  • 【华为OD机试】分糖果【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 小明从糖果盒中随意抓一把糖果 每次小明会取出一半的糖果分给同学们 当糖果不能平均分配时 小明可以选择从糖果盒中 假设盒中糖果足够 取出一个糖果或放回一个糖果 小明最少
  • VS-code出现注释乱码以及VS调试过程中出现汉字乱码问题

    文章目录 VS VS code 1 前言 2 方法 VS Notepad 方法 VS VS code 1 前言 Visual Studio Code 简称VS code 是如今我们常用的一款编辑器 但是可能一些用户会需要其他软件进行调试等
  • 一次线上生产系统内存泄漏排查与优化实践

    今天给大家分享一个我们之前基于dubbo开发一个线上系统时候遇到的内存泄漏生产问题的排查与优化实践经验 相信对于大家多看一些类似的案例 以后对于大家自己在线上系统遇到各种生产问题的时候 进行排查和优化的思路会有很大的启发 内存泄漏问题发生背
  • begin to drop messages due to rate-limiting

    对于syslog保存的日志会有很多重要信息 但是一旦打印的日志数量超过设置的阈值 就会丢掉 imuxsock pid 48 begin to drop messages due to rate limiting 这是在调试时不愿看到的 可以
  • 【论文笔记系列】AutoML:A Survey of State-of-the-art (上)

    之前已经发过一篇文章来介绍我写的AutoML综述 最近把文章内容做了更新 所以这篇稍微细致地介绍一下 由于篇幅有限 下面介绍的方法中涉及到的细节感兴趣的可以移步到论文中查看 论文地址 https arxiv org abs 1908 007