场地。该平台基于TensorFlow构建,非常灵活,可以为给定的数据集和问题找出最佳架构,并最大限度地减少编程时间和计算资源。神经网络的成功通常取决于对各种任务的泛化性能。然而,设计这样的神经网络很困难,因为研究界仍然对神经网络如何泛化没有很好的理解:什么样的神经网络适合给定的问题?它有多深?应该使用哪一层?LSTM层可以,还是用Transformer好?还是两者的结合?集成或蒸馏会提高模型性能吗?近年来出现的AutoML算法可以帮助研究人员自动找到合适的神经网络,无需人工实验。神经架构搜索(NAS)等技术使用强化学习、进化算法和组合搜索等算法来构建基于给定搜索空间的神经网络。在正确的设置下,这些技术可以找到优于手动设计的神经网络架构。然而,这些算法计算量大,需要训练数千个模型才能收敛。此外,他们探索的搜索空间是特定领域的,包含大量人类先验知识,无法很好地跨领域迁移。例如,在图像分类领域,传统的NAS技术搜索两个好的构建块(卷积和下采样),然后按照惯例创建一个完整的网络。为了克服这些缺点并将AutoML解决方案扩展到更广泛的研究社区,Google最近开源了ModelSearch,这是一个自动高效地构建最佳ML模型的平台。该平台与领域无关,使其足够灵活,可以为给定的数据集和问题找出最佳架构,同时最大限度地减少编程时间和计算资源。该平台基于TensorFlow框架构建,可以在单机或分布式机器设置上运行。GitHub地址:https://github.com/google/model_searchModelSearchPlatformOverviewModelSearch系统包括多个训练器、一个搜索算法、一个迁移学习算法和一个存储多个评估模型的数据库。该系统能够以自适应和异步的方式运行多种机器学习模型(具有不同架构和训练方法)的训练和评估实验。虽然每个培训师独立进行培训,但所有培训师共享从实验中获得的知识。在每个时期的开始,搜索算法找到所有已完成的试验,并使用波束搜索来决定接下来要尝试哪些试验。然后,搜索算法对迄今为止发现的最佳架构之一调用变异,并将生成的模型分发回训练器。显示分布式搜索和集成过程的模型搜索图。该系统使用一组预定义块构建神经网络模型,其中每个块代表一个已知的微体系结构,例如LSTM、ResNet或Transformer层。通过使用这些预先存在的架构组件,模型搜索利用了跨域NAS研究中最好的现有知识。这种方法更有效,因为它探索结构而不是更基本和更细粒度的组件,从而减少了搜索空间的大小。各种神经网络架构模块运行良好,例如ResNet模块。此外,由于模型搜索框架是基于TensorFlow构建的,因此各个块可以实现将张量作为输入的任意函数。例如,如果我们想在一组微架构上提出一个新的搜索空间,模型搜索框架将采用新定义的块并将它们合并到搜索过程中,确保算法能够构建最佳的神经网络。这里的构建块甚至可以是能够解决某些特定问题的完全定义的神经网络。在这种情况下,模型搜索可以作为一个强大的集成机器。ModelSearch中实现的搜索算法是自适应的、贪婪的和增量的,因此这些算法比强化学习算法收敛得更快。然而,这些算法也模仿了强化学习算法的“探索和利用”性质,首先分离搜索以找到好的候选者(即探索步骤),然后通过整合这些发现的候选者来提高准确性(即使用步骤)。在对体系结构或训练方法进行随机更改(例如增加体系结构的深度)后,主搜索算法进行自适应修改以执行k个最佳性能实验之一(其中k由用户指定)。网络在多个实验中演变的动态表示。为了进一步提高效率和准确性,还可以在不同的内部实验之间使用迁移学习。模型搜索通过知识蒸馏和权重共享两种方式实现迁移学习。知识蒸馏通过添加与有效模型的预测相匹配的损失项来提高候选准确性。然后,权重共享通过从先前训练的模型中复制适当的权重并随机初始化其余参数,从(变异的)先前训练的候选人中引导一些参数。这种方法不仅可以加快训练过程,而且有可能发现更多更好的架构。实验结果模型搜索以最少的迭代次数改进了生产模型。在最近的一篇论文《Improving Keyword Spotting and Language Identification via Neural Architecture Search at Scale》中,谷歌研究人员展示了模型搜索在语音领域的性能,可以发现关键字检测和语言识别模型。在不到200次迭代中,模型搜索的性能优于专家设计的内部SOTA生产模型,训练参数减少了约130,000个(184K参数对比315K参数)。模型搜索在给定迭代次数后得到的模型的准确率与之前的关键词检测生产模型的性能进行比较。谷歌研究人员还使用模型搜索在CIFAR-10图像数据集上寻找合适的图像分类架构。使用一组已知的卷积块(包括卷积、resnet模块、NAS-A单元、全连接层等),模型搜索能够在209次试验后快速达到基线精度(即仅探索了209个模型)—91.83.以前的顶级架构需要更多的试验才能达到相同的精度,例如NASNet算法需要5807次试验,PNAS需要1160次试验。目前,ModelSearch的代码已经开源,研究人员可以使用这个灵活且领域无关的框架来发现ML模型。
