分享

AI | 文章解读--AutoML&NAS综述 (上)

 520jefferson 2020-04-19






『运筹OR帷幄』原创

作者:薰风

编者按

AutoML&NAS已经发展的十分迅速,本文主要翻译自一篇比较新的综述论文(AutoML: A Survey of the State-of-the-Art),文章对主要对原文的结构和主要内容进行了梳理和解读。

摘要

深度学习现在已经深入到了各行各业,然而不论是对工业界还是学术界(academia),从头对特定任务建立一个深度学习模型仍然非常耗费时间和资源,以及需要大佬们的专业经验。

为了缓解这种问题,最近越来越多的研究项目关注于自动化机器学习(Automated Machine Learning, AutoML)。

这篇文章提供了截止2019年底,AutoML领域最新成果的比较详尽和全面的介绍。

首先,本文根据其在机器学习任务管道(Pipeline)的位置详细介绍AutoML技术。

之后,还总结了现阶段AutoML最热门的话题—NAS(Neural Architecture Search)算法,并将NAS生成的模型与手工设计的模型进行比较。

最后,本文展示了几个未来研究的开放问题。

一、引言

不论是目标分类/检测这样的计算机视觉问题,还是语言模型这类的自然语言问题,深度学习已经得到了广泛的应用。而深度学习模型也愈发复杂,以VGG16为例,1亿3千万(130 million)个参数,占据了将近500MB的内存空间。

ps:说实话VGG这个模型是太大了,导致后面做网络压缩和轻量化的都爱拿它开涮。

而这些很笨重的模型,其实也都是大佬们不断试错试出来的,也就是说,就算是大佬,也要花很长时间和资源,设计一个天天被涮的模型。

于是乎,AutoML应运而生,而它有不同的定义。

比如维基百科AutoML是通过对特定问题,使用适当的数据预处理、特征工程、模型选择和模型评价,自动化这个端到端流程的过程。

还有一种定义则是,AutoML是自动化和机器学习的结合,可以在有限的计算资源下自动地构建机器学习管道。

        图1、机器学习管道

事实上,AutoML出现不止一两年了(火了三四年了)。最近突然火起来,是因为学术界和工业界发现其动态结合不同技术,已生成一个易用的端到端系统的能力。就像下图中谷歌的Cloud AutoML,一些AI公司已经开始提供这种产品了。

             图2、谷歌的Cloud AutoML

那么,为什么现在大家突然觉得有了这种可能,就是因为NAS的出现。

最早的论文中,一个强化学习训练的RNN可以自动地搜索最优的网络结构。从此之后,AutoML被带火了,而且主要就是NAS的流量,NAS(网络结构搜索)的目标是通过在一个由不同基础元件组成的预定义搜索空间中,通过某种策略自动搜索,以生成一个鲁棒且高性能的神经网络架构。

             图源:Neural architecture search: A survey

图3:NAS的工作流程

本文将从两个部分介绍NAS

1、模型结构

a. 整体结构

b. 基于cell的结构

c. 层级结构(hierarchical structure)

d. 基于形态的结构(morphism-based structure)

2、超参数优化方法(Hyperparameter Optimization,HPO)

a. 强化学习(RL)

b. 进化算法(EA)

c. 梯度下降法(GD)

d. 贝叶斯优化

当然除了NAS之外,机器学习管道的不同部分(数据准备、特征工程、模型生成以及模型评价,见图1),这么多年也涌现出很多AutoML的技术,每一个部分其实都可以单独写一篇长文,但是为了把所有管道的阶段包括进去,这里只介绍每个领域最有代表性的工作。

除此之外,不同领域之间的分界线也较模糊,模型选择(NAS)遇到的问题也可以认为是超参数选择(HPO)。

文章的贡献:

虽然已经有其他关于AutoML的survey了,但这篇文章基于机器学习任务的管道覆盖了更广的范围。此外,本文还将收集数据的步骤加到了管道里,这可以增强AutoML框架的泛化性。NAS方面介绍的更加详细,并且增加了多种NAS算法的对比,对比角度分别是:基线数据集的表现,搜索用的时间与资源,以及最优表现模型的大小。最后还讨论了一些开放问题,未来工作的前景。

二、数据准备

数据准备是机器学习任管线中最开始的部分,但对于诸如医学图像分类等问题,数据不足/不够好,因此鲁棒的AutoML也要解决数据收集问题。

2.1. 数据准备

一些常用的基线数据集:

  • MNIST(手写数字)

  • CIFAR10&CIFAR100

  • ImageNet

除此之外,更多公开的数据集可以在如下网站找到:

  • Kaggle

  • Google Dataset Search(GOODS)

  • Elsevier Data Search

不过,对于一些特殊任务,特别是医学任务或者其他涉及隐私的任务,通常是很难从上述网站找到的(不过中国医学图像数据的公开赛并不少的样子)

对于这种情况,有两种解决途径

途径一:数据合成

也可以理解为数据增广:可以使用各种办法进行数据数据增广,比如裁切,翻折,周围补零(padding),旋转,缩放(resize)等(仿射变换和透视变换也挺好用的,特别是分类数据集上)。常用python工具库有torchvision和Augmentor。(个人认为torchvision对于上述的数据增广就足够了)

《Understanding data augmentation for classification: when to warp?》

这篇论文还提出了数据翘曲(data warping)和合成过采样(synthetic over-sampling)。前者通过在数据空间上应用转换生成额外的样本,后者在特征空间中创建额外的样本。

途径二:数据仿真

除此之外,对还有一些像自动驾驶的特殊任务,这种任务不可能在一开始就直接在现实世界中进行测试和改进模型,因为成本过高且有潜在安全隐患(一辆车好贵的)。这时就要去做数据仿真,通过尽量匹配真实世界的环境生成数据。OpenAI Gym就是提供多种仿真环境的工具。

Learning to simulate

使用了基于RL的方法最优化了数据仿真器的参数以控制合成数据的分布。

生成对抗网络(GAN):GAN相对较新的技术,值得一提的是除了图片之外也可以生成文本之类的数据。

2.2 数据搜索

说白了就是给爷爬,网络上有大量的数据,但也伴随大量问题。首先,查询结果可能和关键词不太搭调……

          举个猫猫的例子

更重要的是跨标签之间的噪音,有个很简单的办法就是,如果多个标签(分类)都能检索到这张图,那就干脆把这张图扔掉,比如上图中的几张狗狗的照片。

Harnessing noisy web images for deep representation

根据关键词对搜索结果重新排序并线性提供搜索结果。

自标签:

除此之外,有些错误的标签,甚至没标签的东西,就需要基于学习的自标签方法。

Towards scalable dataset construction: An active learning approach,

提到的Active Learning就是先选出最不确定的样本,交给人标记,剩下的再由算法自己标。

而为了把人从打标签中解放,进一步加速打标签速度,半监督学习自打标签方法。这种方法由

A survey on data collection for machine learning: a big data - AI integration perspective

分成了三类:

自训练(self-training)协同训练(co-training)协同学习(co-learning)

网上图片复杂,一个标签很难描述好图片,所以就需要有多个标签。

Recognition from web data: a progressive filtering approach,

就采用了对网上的图片赋予多个标签,如果对图片中多个标签的置信度特别相近,或者预测出最高分的标签和检索图片的标签一样,就拿过来用。

此外,网络数据的分布可能和目标数据集有很大不同,所以也有的工作对网页数据进行微调(fine-tune)

Webly supervised learning of convolutional networks
Augmenting strong supervision using web data for fine-grained categorization

之前提到过多标签的论文也提出了模型训练和网络数据过滤的迭代算法。

最后,数据不平衡也是网页图片常见问题,因为有的分类图多有的图少,

Synthetic Minority Over-Sampling Technique

(SMOTE)这篇论文合成少的类别,而不是过采样or欠采样。

Learning from imbalanced data sets with boosting and data generation: the databoost-im approach,则对不均衡的样本结合了提升方法和数据生成。

2.3 数据清洗(预处理)

特征提取之前,进行数据清洗也是常规操作。比较简单的例子是表格数据中的缺失值啊,错误的数据类型之类的问题。

常见的数据清洗方法诸如规范化(standardization),放缩(scaling),定量特征的二值化(binarization of quantitative characteristic),独热编码定性特征(one-hot encoding qualitative characteristic),用平均值填充缺失值(filling missing values with mean value)等等。

而对于图片数据,类似于自标签的技术也可以解决标记错误/缺失问题。不过值得注意的是,数据清洗通常需要进行一些人为定义。下面四篇就是有关自动化数据清洗的

Alphaclean: Automatic generation of data cleaning pipelines,
Katara: A data cleaning system powered by knowledge bases and crowdsourcing,
Activeclean: An interactive data cleaning framework for modern machine learning
Sampleclean: Fast and reliable analytics on dirty data


三、 特征工程

在工业界有一个共识,数据和特征决定了机器学习的上界,而模型只是逼近上界。

特征工程有三大子话题:

特征选择,特征提取,特征构建。

特征提取/构建都是特征变换的变体,因为他们都会生成新的特征。特征提取通常是通过一些函数映射对特征降维,特征构建则是扩展特征空间。

特征提取是减少特征冗余,选取重要特征。特征工程的自动化就是动态结合上述三阶段。

3.1 特征选择

对原始数据集降低不相关和冗余的特征,创建原始特征集的子集。       

特征选择的迭代过程

上图表示了特征选择的迭代过程。


搜索策略

首先,根据搜索策略选择特征子集并进行评估。然后,实现一个验证过程来检查子集是否有效。然后重复上述步骤,直到满足停止条件。

经过总结,搜索测率可以分为以下三种:

完全(complete)搜索,启发式(heuristic)搜索,随机(random)搜索

完全搜索

涉及到穷尽(exhaustive)和非穷尽搜索。并可以细分为四种搜索方式:

广度优先搜索(Breath First Search),分支定界法(Branch and Bound),集束搜索(Beam Search)(貌似是一种常见于NLP的搜索方式呢),最优优先搜索(Best First Search)

启发式搜索

顺序正向选择(Sequential Forward Selection SFS)顺序反向选择(Sequential Backward Selection SBS)双向选择(Bidirectional Search BS)

对于前两种情况,分别从空集添加特性或从完整集删除特性,而对于BS,它同时使用SFS和SBS进行搜索,直到这两种算法获得相同的子集。

机搜方面,常用的方法有模拟退火算法Simulated Annealing (SA) 和遗传算法 Genetic Algorithms(GA)

子集评价方式

  • 过滤法先打分,然后设阈值,分数都是方差相关系数,卡方检验,互信息啥的

  • 包装法(Wrapper method,递归特征消除):直接拿特征进行分类,选效果好的

  • 嵌入法:特征选择作为学习的一部分,正则化,决策树,深度学习都属于这个方法。


3.2. 特征构建

特征构建是从基本特征空间或原始数据中构造新特征以增强模型的鲁棒性和泛化性的过程,其本质是提高原始特征的表达性。

传统上,这一过程高度依赖于人类的专业知识,最常用的方法之一是预处理转换,如规范化(standardization)、标准化(normalization)、特征离散化(feature discretization)等。

此外,转换操作可能因不同类型的特性而不同。

人工尝试所有可能的特征构建方法是不可能的,所以为了进一步提高效率,就有了自动模型构建:自动化搜索和评估运算组合的过程。据说可以达到/超过人类专家的效果。

基于树和遗传算法的搜索方法需要预定义的操作空间。而基于注释的办法,可以用训练样本使用域知识。

3.3. 特征提取

特征提取是个降维的活儿。特征提取使用一些映射函数,根据特定的度量提取信息丰富的非冗余特征。

与特征选择不同,特征提取将改变原始特征。特征提取的核心是一个映射函数,可以通过多种方式实现。

常见的传统方法:

  • 主成分分析(PCA)

  • 独立成分分析

  • 等距映射(isomap)

  • 非线性降维

  • 线性判别分析(LDA)

近年来,也有用前向神经网络做自编码器(autoencoder)的方法





文章作者:薰风

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多