首页 > 编程知识 正文

uber数据(uber用二十年收集数据)

时间:2023-05-04 01:28:54 阅读:92931 作者:1020

作者

编译

我们现在所处的人工智能浪潮是数据驱动的。 在这个“数据为王”的时代,数据壁垒给研究者们的研究开展带来了很多障碍。 但是,我们真的只有利用这些“真实”的数据才能训练出性能优良的模型吗?

最近,Uber的研究者提出了通过生成不现实的训练数据,可以看到GTN生成的数字的生成型教育网络(GTN ),但我们几乎没有能够识别的东西:

如果将这些数据用于神经网络架构的搜索(NAS ),则可以得到9倍的高速化,计算量会下降几个数量级。

这项工作非常有意义,正如作者所说,“GTN开辟了新的研究方向”,另外,GTN并不仅仅适用于NAS,它是可以用于机器学习所有领域的通用工具。

为此,作者写了一篇解读博客,内容详细有趣,由AI科技评论翻译,稍作修改——

9倍的速度

虽然通过使用人类标记的大量数据推动了机器学习技术的发展,但是制作这样的带标签的数据需要花费大量的时间和金钱。

在Uber人工智能实验室中,研究了建立学习算法,通过在学习代理所处的环境和“课堂”(curricula )中自动生成训练数据,人工智能能否迅速学习的非常有趣的问题。

对这个问题的回答是我们最近的论文“generativeteachingnetworks 3360 acceleratingneuralarchitecturesearchbylearningtogeneratesynthetictrainingdd”

我们通过“生成式教育网络”(GTN )实现了这种算法。

GTN是能够生成数据和训练环境的深度神经网络,学习器(例如,刚初始化的神经网络)在接受目标任务(例如,识别图中的物体)之前,能够生成GTN

该方法的一个优点是GTN可以生成“合成”的数据。 其他神经网络使用由GTN生成的数据进行训练,可以获得比在实际数据上进行训练更快的训练速度。 这样,检索新的神经网络体系结构的速度比使用实际数据进行训练的速度快了9倍。 基于GTN的神经网络架构搜索(GTN-NAS )可以与目前最先进的神经网络架构搜索(NAS )方法相媲美,并使用比经典的NAS方法少几个数量级的计算量来获得当前最佳的性能而且,实现这个最高性能的新技术很有趣!

神经网络的体系结构与其几种设计选择有关。 例如,应该有多少层,每个层应该有多少神经元,层与层间应该有什么样的连接关系等。 不断改进的神经网络体系结构使机器学习在计算机视觉、自然语言处理、语音到文本的转换等许多领域取得了很大的进展。 但是,搜索高性能网络体系结构的工作通常由科学家手动完成,所以非常耗时。

接着,进行神经网络体系结构搜索(NAS,http://www.cs.ucf.edu/~ kstanley/neat.html ) ) ) ) ) ) ) ) ) )算法自动化) 许多人类科学家已经试图为ImageNet和CIFAR等流行的计算机视觉比较基准寻找最佳的模型架构,但NAS给出了目前性能最好的实验结果。 (https://arxiv.org/abs/1802.01548 )。 如果我们能提高NAS的效率,整个机器学习社区的员工就会受益匪浅。

挑 战

NAS需要大量的计算资源。 的NAS算法使用完整的数据集训练每个神经网络,直到模型性能不再提高为止。

对于NAS过程中需要考虑的几千个或更多网络体系结构,重复此过程会产生很高的计算开销和很慢的速度。

NAS算法通过进行短暂的时间训练,将得到的性能作为真实性能的估计值,避免了如此高昂的计算开销。 进一步加快这个过程的方法可能是从完整的数据集中仔细选择信息量大的培训样本。 论文“learning active learning from data”(https://arxiv.org/ABS/1703.03365 ) )中记载的方法被证明能够加速训练(这篇论文的主题超出了NAS的范畴。)

但是,我想知道机器学习模式能否以允许自己制作训练数据的更激进的想法来加速这个过程。 该算法不仅可以创建逼真的图像,还可以创建对学习有帮助的非现实的数据。 就像在篮球训练中学习同时运两个球会加快学习速度一样(即使它和实际比赛完全不同)。 因此,GTN可以自由地生成不现实的数据,使模型多于一个真正的数量

据更快地学习。例如,GTN 可以融合许多不同类型的对象的信息,并且集中利用最困难的示例进行训练。

方 法

这个过程的工作流程如图 1 所示。

图1:生成式教学网络(GTN)示意图。生成器(一个深度神经网络)生成合成数据,一个新创建的学习器会使用这些数据进行训练。使用 GTN 生成的数据集进行训练后,该学习器可以在目标任务上取得很好的性能(尽管它们从未见过真实的数据)。

GTN 就好比生成对抗网络(GAN,http://papers.nips.cc/paper/5423-generative-adversarial-nets)中的生成器,只是它没有生成逼真数据的压力。

相反,它产生的是完全人造的数据,一个之前没有见到过的学习器神经网络(具有随机采样的架构和权值初始化结果)会使用这些数据训练少量的学习步(例如,可以通过随机梯度下降实现这些学习步)。

然后,我们会使用真实的数据评估学习器网络(到目前为止还没有见过真实的数据),例如评估该网络是否能识别经典 MNIST 数据集中的手写数字图像,该过程可以得到正在被优化的元损失目标函数(meta-loss objective)。

接着,我们通过元梯度(https://arxiv.org/abs/1502.03492)对整个学习过程进行微分,更新GTN 的参数,从而提高目标任务上的性能。之后,我们会弃用该学习器,并重复这个过程。另一个细节是,我们发现学习一个「课程」(一组按照特定顺序排列的训练示例)相较于训练一个生成无序随机示例分布的生成器更加能够提高模型性能。

GTN 涉及到了一种被称为「元学习」的令人激动的机器学习类型。在这里,元学习被用于网络架构搜索。过去的研究者们(https://arxiv.org/abs/1502.03492)已经使用元学习直接(逐像素地)优化了「合成」数据。

在这里,通过训练一个生成器,我们可以重用更多的抽象信息(例如,关于数字「3」的形态特征)来编码各种各样的样本(例如,许多不同的「3」)。

我们进行的实验证明了,GTN 生成器比直接优化数据的性能更好。

更多关于 GTN 与之前相关工作比较的细节讨论,请参阅我们的论文。

在对 GTN 进行元训练后,当学习仅限于少量的随机梯度下降学习步时(例如,32),新的学习器可以使用合成数据比使用真实数据学习得更快(如图 2 中红色的曲线代表使用合成数据,蓝色曲线代表使用真实数据)

图 2:使用 GTN 生成的合成数据进行训练比使用数据训练更快,当仅仅经过少量随机梯度下降步训练时,可以得到更高的 MNIST 性能。

在 MNIST 数据集上获得 98.9% 准确率本身并没有多么经验,但是能够使用这么少的样本做到的一点是:使用 GTN 合成数据训练的学习器可以在仅仅 32 个随机梯度下降步(约 0.5 秒)的训练后达到这个水平。同时,学习器仅仅在「课程」中「看」过了一次 4,096 个合成数据,这个数据规模还不到 MNIST 训练数据集的十分之一。

有趣的是,尽管我们可以使用这些合成图片训练神经网络,并且学着识别真正的手写数字,但许多由 GTN 生成的图片实际上在我们人类看来是十分奇怪的,我们并不能将它们识别为数字,如图 3:

图 3:GTN 生成的具有「课程」性质的 MNIST 图像。课程的顺序从左到右排列(每一列是 32 批数据中的一批)。

这些非真实的图片可能对神经网络产生有意义的影响,这种现象反过来也会让人不禁想起深度神经网络很容易被「愚弄」(https://arxiv.org/abs/1412.1897)。同样非常有趣的是,在课程的末期,当模型性能达到平稳期之后,手写数字的可识别性会急剧提升(详见图 2 中的第 32 步)。关于「为什么图片大部分是非真实的」,以及「为什么在课程的末期它们的真实性会提升」的假设的讨论,请参阅我们的论文。

在确定 GTN 可以加速在 MNIST 数据集上的训练后,我们在 CIFAR-10 数据集上进行了测试,这同样也是一个常用的 NAS 对比基准。和在 MNIST 数据集上训练的情况相似,在这里,学习器使用 GTN 生成的数据学习的速率要快于使用真实数据学习的速率。具体而言,即使与高度优化的使用真实数据的学习算法相比,使用合成数据训练的学习器在性能水平相同的情况下,学习的速率也要比前者快四倍(详见图 4)。

图 4:在 CIFAR 数据集上,使用 GTN 生成的合成数据进行训练的速率比使用真实数据也更快一些,在性能水平相同的情况下,速率提升了 4 倍。

GTN-NAS

为了搜索网络架构,我们采用了来自许多论文(https://arxiv.org/abs/1611.01578,https://arxiv.org/abs/1802.03268,https://arxiv.org/abs/1808.07233)的思想。我们先搜索一个小型的架构模块,然后通过一个预先确定的「蓝图」重复组合这样的模块,从而创建不同规模的架构。一旦我们发现了一个高质量的模块,它就可以被用来创建一个更大的网络,然后用真实的数据训练这个网络,在目标任务上收敛。

在GTN-NAS中,最终目标是找到一种经过在真实数据上训练许多步(即直到收敛)后,能够取得很好的性能表现的神经网络架构。

因此,测量在使用 GTN 生成的数据训练少量的学习步后得到的任何模型的性能,都只是一种估计当我们最终使用真实数据训练时,哪些架构会表现良好的手段。

我们发现,使用 GTN 数据训练得到的模型性能可以被用来预测真实情况下的模型性能(使用 GTN 估计的排名前 50% 的架构与真实情况的 Spearman 等级相关系数为 0.56)。

例如,根据 GTN 非常快的估计,排名前 10% 的架构实际上性能非常高(详见图 5 中的蓝色方块)。

图 5:针对根据 GTN 估计得到的前 50% 的架构,使用 GTN 合成数据训练 30 秒后最终得到的性能与使用真实数据训练 4 小时后取得性能的相关系数图。图中的相关系数足够高(Spearman 等级相关系数为 0.5582),当我们选用根据 GTN 估计得到的性能最好的架构时,我们也会选择出真实性能最好的架构。根据 GTN 估计的结果,蓝色方块代表性能前 10% 的架构。

这意味着我们可以通过 GTN 生成的数据快速地评估许多网络架构,从而识别出一些看起来有潜力的架构,然后使用真实数据训练这些架构,最终确定哪些架构在目标任务上真正性能优异。

有趣的是,我们发现,要实现与使用 GTN 生成的数据仅仅在 128 个随机梯度下降训练步上取得的相同的预测能力(等级相关系数),你需要使用真实数据训练 1,200 个梯度下降训练步。这说明,使用 GTN 生成的数据比使用真实数据进行网络架构搜索要快 9 倍!

因此,GTN 生成的数据在 NAS 算法中可以更快地替代真实数据。

为了说明该过程,我们选用了最简单的 NAS 方法:随机搜索。该算法非常简单,我们可以确定不存在复杂的算法组件和使用 GTN 生成的数据之间特殊的、yqdqz相互作用。

在随机搜索过程中,该算法随机采样得到网络架构,并且在给定计算资源预算的情况下尽可能多地进行估计。在我们的实验中,这些估计要么是针对使用 GTN 生成的数据训练 128 个随机梯度下降训练步后的架构,要么是针对使用真实数据训练的架构。接着,对于每一种方法,根据估计得到的最佳架构会使用真实数据训练很长的时间。在真实数据上最终取得的性能才是我们真正关心的结果。

由于 GTN 能够更快地评估每个架构,它们能够在给定一定的计算资源的情况下,对更多整体框架进行估计。在我们实验的每一种情况下,我们都证明了:使用 GTN 生成的数据比使用真实数据更快,并取得了更好的性能(详见表 1)。甚至,当我们将使用真实数据训练 10 天的结果与使用 GTN 生成数据训练 2/3 天的结果进行比较时,这个结论也成立(详见表 1)。

表 1:GTN 可以直接替代真实数据,加速 NAS 的过程。在上表中,实验结果是使用简单的随机搜索 NAS 策略实现的,但是 GTN 应该也可以加速任意的 NAS 方法。参数的个数指的是学习器神经网络中权重的个数。

此外,采用随机搜索策略(以及表 1 中列出的一些附加功能)的 GTN-NAS 也可以与采用了比随机搜索复杂得多的策略的 NAS 方法相抗衡。重要的是,GTN 生成的数据也可以直接被这些算法使用,我们期望这将同时在这两种场景下取得最佳的效果,提升目前最佳模型的性能。

未 来

生成式教学网络(GTN)生成了合成数据,这种数据使新的学习器网络能够迅速地针对某种任务进行学习。这使得研究者们可以快速地评估一种新提出的候选网络架构的学习潜力,这促进了对新的、更强大的神经网络架构的搜索。

通过我们的研究,我们说明了:GTN 生成的训练数据创建了一种更快的 NAS方法,它与目前最先进的 NAS 算法旗鼓相当(但实现的方式完全不同)。在我们的 NAS 工具箱中加入这种额外的 GTN 工具,对 Uber、所有的公司,以及全世界的所有科学家大有助益,可以帮助它们提升深度学习在每个应用领域的性能。

除了我们的直接成果,我们对 GTN 开辟的新的研究方向也感到十分兴奋。当算法可以生成他们自己的问题和解决方案时,我们就可以解决比以前更难的问题。然而,生成问题需要定义一个环境搜索空间,这意味着我们需要编码一个丰富的环境空间来进行搜索。

GTN 有一种很好的特性,那就是它们可以生成几乎任意类型的数据或训练环境,这使其具有巨大的潜在影响力。然而,虽然能够生成任意的环境令人十分激动,但仍然需要通过更多的研究充分利用这种表达能力,从而不会迷失在 GTN 产生的各种各样的可能性的海洋中。

从更宏观的角度来说,我们认为 GTN 是一种通用的工具,它可以被用于机器学习的所有领域。我们这份工作中展示出了其潜力,但是我们也相信它们可以在无监督学习、半监督学习,以及强化学习中得到有效的应用(我们的论文已经得到了强化学习方面的初步结果)。

如果把目标定得更大一些,GTN 可以通过以下方式帮助我们朝着能够自动创建强大的人工智能形式的「人工智能生成算法」迈进:

1)对网络架构进行元学习;

2)对学习算法本身进行元学习;

3)自动生成训练环境.

本文说明了,GTN 有助于这三种方法中的第一种(对网络架构进行元学习),但它们也可以通过生成复杂的训练环境、成功地训练智能体,来促进第三个方面的发展(自动生成训练环境)。

更多细节,请参阅我们的论文。我们计划在未来几周内发布这项研究的源代码:敬请期待!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。