Learning, transferring, and recommending performance knowledge with
  Monte Carlo tree search and neural networks
  Making changes to a program to optimize its performance is an unscalable task
that relies entirely upon human intuition and experience. In addition,
companies operating at large scale are at a stage where no single individual
understands the code controlling its systems, and for this reason, making
changes to improve performance can become intractably difficult. In this paper,
a learning system is introduced that provides AI assistance for finding
recommended changes to a program. Specifically, it is shown how the evaluative
feedback, delayed-reward performance programming domain can be effectively
formulated via the Monte Carlo tree search (MCTS) framework. It is then shown
that established methods from computational games for using learning to
expedite tree-search computation can be adapted to speed up computing
recommended program alterations. Estimates of expected utility from MCTS trees
built for previous problems are used to learn a sampling policy that remains
effective across new problems, thus demonstrating transferability of
optimization knowledge. This formulation is applied to the Apache Spark
distributed computing environment, and a preliminary result is observed that
the time required to build a search tree for finding recommendations is reduced
by up to a factor of 10x.
