arXivDaily arXiv每日学术速递 周一至周五更新
arXiv 2101.08809cs.LGcs.PL
收藏

PyGlove:用于自动化机器学习的符号编程

PyGlove: Symbolic Programming for Automated Machine Learning

Google(谷歌);Google Research(谷歌研究院)

Daiyi Peng, Xuanyi Dong, Esteban Real, Mingxing Tan, Yifeng Lu, Hanxiao Liu, Gabriel Bender, Adam Kraft, Chen Liang, Quoc V. Le

摘要:

神经网络对超参数和结构选择敏感。自动化机器学习(AutoML)是自动化这些选择的一个很有前途的范例。然而,当前的ML软件库在处理AutoML组件之间的动态交互方面非常有限。例如,高效的NAS算法(如ENAS和DARTS)通常需要在搜索空间和搜索算法(AutoML中的两个关键组件)之间实现耦合。此外,实现复杂的搜索流程(诸如在搜索硬件配置的循环内搜索架构)是困难的。总之,在当前ML库中更改搜索空间、搜索算法或搜索流程通常需要对程序逻辑进行重大更改。本文介绍了一种基于符号编程的AutoML编程方法。在这种范式下,ML程序是可变的,因此可以很容易地被另一个程序操纵。因此,AutoML可以重新表述为符号操作的自动化过程。利用这个公式,我们解耦了搜索算法的三角形、搜索空间和子程序。这种解耦使得更改搜索空间和搜索算法(不使用和使用权重共享)以及向现有代码添加搜索功能和实现复杂的搜索流变得容易。然后,我们介绍PyGlove,一个实现这种范式的新Python库。通过对ImageNet和NAS-Bench-101的案例研究,我们证明了使用PyGlove用户可以轻松地将静态程序转换为搜索空间,快速搜索搜索空间和搜索算法,并制作复杂的搜索流程以获得更好的结果。

英文摘要:

Neural networks are sensitive to hyper-parameter and architecture choices. Automated Machine Learning (AutoML) is a promising paradigm for automating these choices. Current ML software libraries, however, are quite limited in handling the dynamic interactions among the components of AutoML. For example, efficientNAS algorithms, such as ENAS and DARTS, typically require an implementation coupling between the search space and search algorithm, the two key components in AutoML. Furthermore, implementing a complex search flow, such as searching architectures within a loop of searching hardware configurations, is difficult. To summarize, changing the search space, search algorithm, or search flow in current ML libraries usually requires a significant change in the program logic. In this paper, we introduce a new way of programming AutoML based on symbolic programming. Under this paradigm, ML programs are mutable, thus can be manipulated easily by another program. As a result, AutoML can be reformulated as an automated process of symbolic manipulation. With this formulation, we decouple the triangle of the search algorithm, the search space and the child program. This decoupling makes it easy to change the search space and search algorithm (without and with weight sharing), as well as to add search capabilities to existing code and implement complex search flows. We then introduce PyGlove, a new Python library that implements this paradigm. Through case studies on ImageNet and NAS-Bench-101, we show that with PyGlove users can easily convert a static program into a search space, quickly iterate on the search spaces and search algorithms, and craft complex search flows to achieve better results.

机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。

↑