Learning Fitness Functions for Machine Programming
arXiv:1908.08783
Abstract
The problem of automatic software generation is known as Machine Programming. In this work, we propose a framework based on genetic algorithms to solve this problem. Although genetic algorithms have been used successfully for many problems, one criticism is that hand-crafting its fitness function, the test that aims to effectively guide its evolution, can be notably challenging. Our framework presents a novel approach to learn the fitness function using neural networks to predict values of ideal fitness functions. We also augment the evolutionary process with a minimally intrusive search heuristic. This heuristic improves the framework's ability to discover correct programs from ones that are approximately correct and does so with negligible computational overhead. We compare our approach with several state-of-the-art program synthesis methods and demonstrate that it finds more correct programs with fewer candidate program generations.
References in corpus (13)
- Evolution Strategies as a Scalable Alternative to Reinforcement Learning
- Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternative for Training Deep Neural Networks for Reinforcement Learning
- DeepCoder: Learning to Write Programs
- Neural Programmer-Interpreters
- RobustFill: Neural Program Learning under Noisy I/O
- Neuro-Symbolic Program Synthesis
- Making Neural Programming Architectures Generalize via Recursion
- Leveraging Grammar and Reinforcement Learning for Neural Program Synthesis
- Towards Synthesizing Complex Programs from Input-Output Examples
- MLSys: The New Frontier of Machine Learning Systems
- AI Programmer: Autonomously Creating Software Programs Using Genetic Algorithms
- Using Program Synthesis for Social Recommendations
- The Three Pillars of Machine Programming