解读百度AutoDL:打破SOTA纪录的神经架构搜索是如何炼成的

近日,百度大数据实验室在 arXiv 上发布了两篇论文,一篇给出了任何深度学习网络在小学习率情况下的收敛性证明,包括用 AutoDL 搜出来的网络,另一篇则提供了一个正则化的方法,让 AutoDL 搜索到的网络的训练结果超过了之前所有公开报道的结果。基于 PaddlePaddle 框架实现的代码已经开源,相应功能也可以通过百度 EasyDL 免费使用,这是继去年 11 月 AutoDL 2.0 于 2018 百度世界大会上正式发布以来,AutoDL 的又一次重要更新。

机器之心就 AutoDL 各方向的设计思路和论文内容采访了百度大数据实验室主任浣军教授,以下为采访实录。

机器之心百度开发 AutoDL 的初衷是什么?想要实现什么目标?

AutoDL 的理念,用一句话来概括,就是「开放普惠 AI」,让广大中小企业、初创企业和个人能够更方便地应用大数据深度学习

现在,这些能力主要掌握在大公司研发中心或者高校中间,并未向中小企业和初创企业辐射,原因在于大数据分析和深度学习对硬件、软件以及工程技术人员的能力要求都比较高。

AutoDL 所做的事情,就是用深度学习来设计深度学习,从而实现让大家都能够快速用到这项能力。我们的愿景是把如今的「深度学习模型艺术品」变成「深度学习模型工业产品」,让深度学习的模型能够像工厂的产品一样被大规模地生产出来。

机器之心:这一目标具体由哪些需求组成?如何满足这些需求?

我们从三个维度思考这件事。硬件、应用场景和模态的多样化决让 AI 算法的维度空间极为庞大。想要尽可能探索这一空间,就必然要从手工设计模型,转向自动化生产模型,快速高效地产生能够适配不同硬件、支持不同场景、适应不同模态的深度学习模型。

为了实现这些需求,我们将 AutoDL 分成三个部分,分别是 AutoDL Design,AutoDL Transfer 和 AutoDL Edge。

AutoDL Design 根据用户提供的数据集从头设计全新深度学习模型。

AutoDL Transfer 支持小数据建模,利用百度拥有的大量数据预训练好的模型迁移到用户具体的应用场景上。

AutoDL Edge 将深度学习模型部署到拥有不同算力、内存资源的硬件上,满足不同的能源消耗、响应时间需求。是 AI 和 IoT 的结合,是深度学习边缘计算的完美结合。

AutoDL Design:更大的模型结构搜索空间带来更佳的效果

机器之心:从用户给出标注数据集到拿到自动设计好的模型结构,是一个什么样的过程?

现在 AutoDL Design 有多条技术路线,但总的来说仍然是一个端到端的训练过程。百度在模型结构优化方面选择了两条主要技术路线。

第一条技术路线利用深度增强学习完成设计。系统由两部分组成,第一部分是网络结构的编码器,第二部分是网络结构的评测器。

编码器通常以 RNN 的方式把网络结构进行编码,然后评测器把编码的结果拿去进行训练和评测,拿到包括准确率、模型大小在内的一些指标,反馈给编码器,编码器进行修改,再次编码,如此迭代。经过若干次迭代以后,最终得到一个设计好的模型。

为了性能考虑,迭代中用到的训练数据通常是几万张规模的数据集(比如 CIFAR-10),模型设计结束后,会用大规模数据(比如 ImageNet)重新训练一次,进一步优化参数

图:AutoDL 增强学习流程

第二条技术路线是将结构图构建为可微的结构。即,连接节点的边不再是非 0 即 1 的状态,而是变成一个可求微分的概率。

除此之外,我们还进行了超参数优化,正则化训练等其他一系列优化,最终,我们在 CIFAR-10 上取得了正确率 98% 以上,这个结果优于所有有公开报道的设计网络效果,包括人类专家设计的和机器自动设计的。

机器之心:能否更详细地解释基于深度增强学习的技术路径里编码器与评测器的工作?迭代过程中计算资源消耗情况?

编码器的可以从一个随机的模型开始,也可以从一种已知的模型出发。从性能角度考虑,通常我们会选择从一个较优的模型结构出发。

模型优化分为三个层级,分别是单元格优化,单元格连接方式优化以及超参数优化。单元格(cell)是模型的基本结构,每个单元格由几个到十几个节点(node)组成。每个节点都是一种常见的操作,例如一次卷积运算就是一个节点,常见的节点中的操作有十个左右。

图:AutoDL Design 设计的单元格,左边为普通单元格(Normal Cell),右边为缩减单元格(Reduction Cell)

奖励函数是一个正确率的函数。这里的正确率并不是说每进行一次迭代就要在全部训练数据上训练到完全收敛。而是采用了「提前终止」(early stopping)的方法,用训练到一定程度的结果来预测最终结果。

在 CIFAR-10 级别的数据集上(数万张图片),每次迭代平均需要不到 1 GPU hour,从开始搜索到找到理想的模型结构,平均需要进行 50~200 次迭代。

机器之心:AutoDL Design 设计出的模型结构与人工设计的模型结构有什么区别?

如果把图像识别的常见模型用有向无环图表示出来,我们会发现:VGG 模型的结构是线性的;ResNet 在线性结构的基础上添加了「跳层连接」;Inception 模型的结构更偏向树状。而 AutoDL Design 的不受任何现成网络结构的约束,能够在所有可能的有向无环图空间内进行探索。

图:AutoDL Design 设计的模型结构

另外,AutoDL Design 的一个特点是可以实现多目标优化:如果目标除了效果好之外,还对模型大小、运行时间有要求,系统也可以根据要求完成设计。

AutoDL Transfer:「小数据」也可以建「大模型」

机器之心:能否介绍一下 AutoDL Transfer 的优化方式?

AutoDL Transfer 是在 ResNet、DenseNet、VGG、Inception 等经典网络的基础上,进行了一些基于人工经验的组件改良,以及采用了超参优化技术进行搜索。例如,我们增加了双线性(bilinear)组件,把经过层层卷积的向量再进行两两组合,让特征更为丰富。

AutoDL Transfer 现在提供两种服务,分别是静态模型(Static Model)和动态模型(Dynamic Model)。

静态模型是在大量已有数据集上进行测试后,选出能够在大部分数据集上取得优异性能的模型结构,然后利用用户数据精调模型参数

动态模型则会根据用户数据在不同组件以及超参的组合中重新进行一次搜索。和静态模型相比,动态模型能够针对用户数据进行更加精细的优化,但也需要用户提供更多数据。

图:AutoDL Transfer 示意图

机器之心:什么样的用户场景适合选择 AutoDL Transfer?AutoDL Transfer 对用户数据规模有什么要求?

首先,数据量比较小的情景下,很难从头训练大模型,此时 AutoDL Transfer 仍然能保证一个很好的模型效果。

同时,即使用户数据量比较大,迁移学习仍然能把初始阶段从大规模数据集中习得的物体特征的知识以参数的形式带入到接下来有针对性的优化过程中,效果往往比从头训练要好。

AutoDL Transfer 还使用了一些百度自己研发的技术,包括自动数据增强、迁移过程中正则化项的优化等。这些技术都有助于在小数据条件下提升模型泛化能力,因此 AutoDL Transfer 对用户数据规模几乎没有限制,分类任务中,每个类别的数据可以只有 100 张甚至几十张。用户可以在上传数据后几分钟就拿到训练好的模型结果。关于 AutoDL Transfer 的最新进展,可以见我们在 ICLR 2019 上发表的文章。

图:AutoDL Transfer 静态模型与动态模型在不同任务中的效果示意图

AutoDL Edge:事半功倍的终端计算

机器之心:AutoDL Edge 采用了哪些优化方法?

AutoDL Edge 主要旨在对模型进行压缩,使得同等边缘算力支持更多 AI 能力,从而拓宽应用场景。

因为市面上有非常多不同的硬件配置,因此我们的团队先研究了一些设备无关的通用的模型压缩算法,这类算法能够同时减小网络规模、提升推理速度且不改变模型的性能。

滤波器剪枝(Filter Pruning)就是其中一种典型的技术。我们会估算每一个卷积核的重要程度,在每一个卷积层中,去掉那些不那么重要的卷积核。此外,我们也会对计算资源消耗最大的全连接层做矩阵低秩分解,加速矩阵乘法。

图:滤波器剪枝示意图

观察到深度卷积网络的参数主要集中在卷积核上,我们最新采用的模型压缩算法通过参数共享来压缩卷积核的参数空间。我们提出了一种新的卷积核的表示方式,使得卷积核可以在训练过程中自动进行参数共享。我们提出的参数共享模型可以从头开始训练,而不是需要先训练出一个大模型然后使用参数共享或者其他的压缩方法。配合参数量化(quantization)方法,我们的方法在 CIFAR-10 上在准确率仅降低 0.27% 的条件下将 ResNet-18 压缩了 50 多倍。在目标检测任务上,我们的方法将 Single Shot MultiBox Detector(SSD)网络进行了有效压缩,在参数数量(0.45M)明显小于 Tiny SSD(1.13M)下,在 VOC 2007 的测试集上的平均准确率(mAP)反而有大幅提升。

此外,还有一些针对性特定芯片的优化,设备提出了算力、能耗、响应时间等约束。而算法设法在这些约束之下降低运算量,压缩模型大小。一旦将模型压缩到缓存可以容纳的大小,就可以极大加速 I/O。

值得一提的是,模型压缩的过程也是自动化的。

同时,我们也在探索用 AutoDL Design 的思路,不需要针对一个大模型进行压缩,而是从头寻找一个小模型。

机器之心:关于此次公开的两篇新论文,神经网络收敛性证明有什么意义?

深度神经网络广泛使用随机梯度下降,其优化的特性,例如是否会离开局部最优,收敛到全局最优一直是大家关心的问题,最近这方面也有一些有意思的进展。我们的探索主要集中在构造一族损失函数。通过这样的构造,我们可以在即使学习率非常低的情况下,对于每一个局部最优,证明 SGD 都一定的概率逃逸出局部最优。逃逸概率不但与极值点的值有关而且我们也证明了与极值点附近的几何性质有关。如果我们跑 SGD 足够长时间,SGD 会以马氏链的方式遍历局部最优,可以大概率收敛到全局最优。基于这几点,我们期望未来对极值点附近的几何性质的研究会对深度学习有强有力的促进作用。

机器之心:第二篇论文提出,利用局部拉德马赫复杂度做正则化,从而提高网络泛化特性,能否详细介绍一下其做法?

深度学习的核心问题之一在于如何保证在有限样本上学到的分类器或者预测函数能在将来未观察到的数据,例如测试数据上,仍然有预测错误率的保证。因为在数据点上的 0-1 的离散错误很难精确优化,在通常的实践中,预测函数都是通过在训练数据上最小化一个损失函数得到,这个经验函数一般是预测错误率的一个上界。在统计中分类器在训练集和测试集之间的差,可以用预测函数族的一个被称之拉德马赫复杂度的标准来衡量。预测函数族越小,拉氏复杂度也越小,经验损失和泛化损失的差距也越小。拉氏复杂度在经典支持向量机有这广泛的应用。

目前深度神经网络成为广泛应用的预测函数。因为神经网络的多层结构,其所属的函数族可以逼近任意的连续函数,这使得许多经典的用函数族的拉德马赫复杂度作为正则化项的统计学习方法无法进行。但统计学习领域中的局部拉德马赫复杂度,即只考虑全函数族的一个子族上的拉德马赫复杂度,却可以避开全局拉德马赫复杂度的问题。

我们提出的局部拉德马赫复杂度方法借鉴了已有的局部拉德马赫复杂度方法,仅考虑在经验损失函数的极小值点附近的一个球内的拉德马赫复杂度。采用最近的拉德马赫复杂度的估计方法,我们对折页损失函数 (Hinge Loss) 和交叉熵(cross entropy)推得了这个固定值的表达式,并且将其称之为局部拉德马赫正则化项,并加在经验损失函数上。我们对提出的局部拉德马赫正则化方法在标准的网络结构(即 ResNet-18)和 CIFAR-10 上进行了实验,发现其可以有效降低损失函数在测试数据上的值并且提高预测准确率,体现了增强的泛化性能。我们进一步将该方法应用到被搜索出来的网络结构上,发现局部拉德马赫正则化方法和其他的提高泛化性能的方法,包括混合(mix-up)和模型集成(model ensemble),可以兼容。将我们的正则化方法作用在混合和模型集成之后,我们得到了 CIFAR-10 上目前最好的准确率。在我们的文章中也提供了基于PaddlePaddle框架实现的开源代码。

进化中的 AutoDL:剑指「一步到位」的深度学习模型

机器之心:从 AutoDL 1.0 到 AutoDL 2.0,系统发生了哪些变化?

主要有三方面变化。

第一,在自动设计效果上,现在的 AutoDL 设计出的神经网络已经全面超过人类专家设计的网络效果。图像识别公开数据集 CIFAR-10 上,达到了超过 98% 的正确率。这个效果优于所有有公开报道的人类专家设计的网络的效果。

第二,在模态方面,除了视觉之外,我们也增加了对语音任务的支持,包括语音模型压缩、语音模型自动建模等。

第三,在模型适配上,我们增加了一些具体的应用案例,包括对一些可以用于新零售的视觉硬件的支持。

机器之心:AutoDL 团队现在在进行哪些新方向的探索?

我们特别关心 AutoDL 三个方向的结合,换言之,能不能同时完成模型的设计、迁移和适配。

这也是我们在强化学习技术路径之外,也同时关注可微分结构路径的原因:可微分结构既可以用于自动模型搜索,也可以用于迁移学习。模型的安全性也是我们重点关注的方向。我们希望设计的网络能够抗攻击并且具有一定的可解释性。

References:

1. Wenqing Hu, Zhanxing Zhu, Haoyi Xiong, Jun Huan, Quasi-potential as an implicit regularizer for the loss function in the stochastic gradient descent, https://arxiv.org/abs/1901.06054

2. Yingzhen Yang, Xingjian Li, Jun Huan, An Empirical Study on Regularization of Deep Neural Networks by Local Rademacher Complexity, https://arxiv.org/abs/1902.00873

3. ICLR'19】 Xingjian Li, Haoyi Xiong, Hanchao Wang, Yuxuan Rao, Liping Liu, Jun Huan, DELTA: Deep Learning Transfer Using Feature Map with Attention for Convolutional Networks, the Seventh International Conference on Learning Representations (ICLR’19), New Orleans, Louisiana, USA, May 2019 https://openreview.net/forum?id=rkgbwsAcYm

4. PaddlePaddle code available at: https://github.com/PaddlePaddle/models/tree/develop/fluid/AutoDL/LRC

工程正则化AutoDL百度
1
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

数据分析技术

数据分析是一类统计方法,其主要特点是多维性和描述性。有些几何方法有助于揭示不同的数据之间存在的关系,并绘制出统计信息图,以更简洁的解释这些数据中包含的主要信息。其他一些用于收集数据,以便弄清哪些是同质的,从而更好地了解数据。 数据分析可以处理大量数据,并确定这些数据最有用的部分。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

超参数优化技术

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

剪枝技术

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

有向无环图技术

在图论中,如果一个有向图从任意顶点出发无法经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。 因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

边缘计算技术

边缘运算(英语:Edge computing),又译为边缘计算,是一种分散式运算的架构,将应用程序、数据资料与服务的运算,由网络中心节点,移往网络逻辑上的边缘节点来处理。边缘运算将原本完全由中心节点处理大型服务加以分解,切割成更小与更容易管理的部分,分散到边缘节点去处理。边缘节点更接近于用户终端装置,可以加快资料的处理与传送速度,减少延迟。在这种架构下,资料的分析与知识的产生,更接近于数据资料的来源,因此更适合处理大数据。

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

神经网络技术

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

支持向量机技术

在机器学习中,支持向量机是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独类别的实例被尽可能宽的明显的间隔分开。然后,将新的实例映射到同一空间,并基于它们落在间隔的哪一侧来预测所属类别。

大数据技术技术

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

正则化技术

当模型的复杂度增大时,训练误差会逐渐减小并趋向于0;而测试误差会先减小,达到最小值后又增大。当选择的模型复杂度过大时,过拟合现象就会发生。这样,在学习时就要防止过拟合。进行最优模型的选择,即选择复杂度适当的模型,以达到使测试误差最小的学习目的。

强化学习技术

强化学习是一种试错方法,其目标是让软件智能体在特定环境中能够采取回报最大化的行为。强化学习在马尔可夫决策过程环境中主要使用的技术是动态规划(Dynamic Programming)。流行的强化学习方法包括自适应动态规划(ADP)、时间差分(TD)学习、状态-动作-回报-状态-动作(SARSA)算法、Q 学习、深度强化学习(DQN);其应用包括下棋类游戏、机器人控制和工作调度等。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

百度机构

百度(纳斯达克:BIDU),全球最大的中文搜索引擎、最大的中文网站。1999年底,身在美国硅谷的李彦宏看到了中国互联网及中文搜索引擎服务的巨大发展潜力,抱着技术改变世界的梦想,他毅然辞掉硅谷的高薪工作,携搜索引擎专利技术,于 2000年1月1日在中关村创建了百度公司。 “百度”二字,来自于八百年前南宋词人辛弃疾的一句词:众里寻他千百度。这句话描述了词人对理想的执着追求。 百度拥有数万名研发工程师,这是中国乃至全球最为优秀的技术团队。这支队伍掌握着世界上最为先进的搜索引擎技术,使百度成为中国掌握世界尖端科学核心技术的中国高科技企业,也使中国成为美国、俄罗斯、和韩国之外,全球仅有的4个拥有搜索引擎核心技术的国家之一。

http://home.baidu.com/
推荐文章
暂无评论
暂无评论~