We are interested in the application of Machine Learning (ML) technology to improve mathematical software. It may seem that the probabilistic nature of ML tools would invalidate the exact results prized by such software, however, the algorithms which underpin the software often come with a range of choices which are good candidates for ML application. We refer to choices which have no effect on the mathematical correctness of the software, but do impact its performance. In the past we experimented with one such choice: the variable ordering to use when building a Cylindrical Algebraic Decomposition (CAD). We used the Python library Scikit-Learn (sklearn) to experiment with different ML models, and developed new techniques for feature generation and hyper-parameter selection. These techniques could easily be adapted for making decisions other than our immediate application of CAD variable ordering. Hence in this paper we present a software pipeline to use sklearn to pick the variable ordering for an algorithm that acts on a polynomial system. The code described is freely available online.
翻译:我们感兴趣的是应用机器学习技术来改进数学软件。看似ML工具的概率性会使这种软件所珍视的准确结果无效,然而,支持软件的算法往往产生一系列选择,这些选择是ML应用的好选择。我们指的是对软件的数学正确性没有影响但确实影响其性能的选择。过去,我们试验了其中一种选择:在建立Cylindrical Algebraic Decomposition(CAD)时使用变量。我们使用Python图书馆Skiit-Learn(Sklearn)对不同的ML模型进行实验,并开发了特性生成和超参数选择的新技术。这些技术可以很容易地调整,以便作出不同于我们直接应用 CAD变量排序的决定。因此,在本文中,我们提出了一个软件管道,用Sklearn来选择一个变量的排序,用于在聚氮系统上进行动作的算法。所描述的代码可以在线自由获取。