Learning to Combine Per-Example Solutions for Neural Program Synthesis
This addresses the problem of synthesizing programs from input-output examples for AI and software engineering, offering an incremental improvement over existing methods.
The paper tackles program synthesis from examples by introducing a two-stage approach that first finds per-example solutions and then combines them using a Cross Aggregator neural network, significantly improving success rates over baselines like PCCoder under the same time budget.
The goal of program synthesis from examples is to find a computer program that is consistent with a given set of input-output examples. Most learning-based approaches try to find a program that satisfies all examples at once. Our work, by contrast, considers an approach that breaks the problem into two stages: (a) find programs that satisfy only one example, and (b) leverage these per-example solutions to yield a program that satisfies all examples. We introduce the Cross Aggregator neural network module based on a multi-head attention mechanism that learns to combine the cues present in these per-example solutions to synthesize a global solution. Evaluation across programs of different lengths and under two different experimental settings reveal that when given the same time budget, our technique significantly improves the success rate over PCCoder [Zohar et. al 2018] and other ablation baselines. The code, data and trained models for our work can be found at https://github.com/shrivastavadisha/N-PEPS.