近日,百度大数据实验室在 arXiv 上发布了两篇论文,一篇给出了任何深度学习网络在小学习率状况下的收敛性证实,包括用 AutoDL 搜出来的网络,另外一篇则提供了一个正则化的方法,让 AutoDL 搜索到的网络的训练结果超过了以前全部公开报道的结果。基于 PaddlePaddle 框架实现的代码已经开源:node
Github地址:git
https://github.com/PaddlePaddle/models/blob/develop/fluid/AutoDL/LRC/README_cn.mdgithub
机器之心就 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 三个方向的结合,换言之,能不能同时完成模型的设计、迁移和适配。
这也是咱们在强化学习技术路径以外,也同时关注可微分结构路径的缘由:可微分结构既能够用于自动模型搜索,也能够用于迁移学习。模型的安全性也是咱们重点关注的方向。咱们但愿设计的网络可以抗攻击而且具备必定的可解释性。