Learning to Learn Programs from Examples: Going Beyond Program Structure

  title={Learning to Learn Programs from Examples: Going Beyond Program Structure},
  author={Kevin Ellis and Sumit Gulwani},
Programming-by-example technologies let end users construct and run new programs by providing examples of the intended program behavior. But, the few provided examples seldom uniquely determine the intended program. Previous approaches to picking a program used a bias toward shorter or more naturally structured programs. Our work here gives a machine learning approach for learning to learn programs that departs from previous work by relying upon features that are independent of the program… 

Figures and Tables from this paper

Semantic programming by example with pre-trained models

This paper proposes a novel framework for integrating inductive synthesis with few-shot learning language models to combine the strength of these two popular technologies, and formalizes three semantic operators that can be integrated with inductive synthesizers.

SynGuar: guaranteeing generalization in programming by example

This paper proposes the first framework (called SynGuar) for PBE synthesizers that guarantees to achieve low generalization error with high probability, and proposes a procedure to dynamically calculate how many additional examples suffice to theoretically guarantee generalization.

Synthesizing analytical SQL queries from computation demonstration

A new end-user specification, programming by computation demonstration, is designed that allows the user to demonstrate the task using a (possibly incomplete) cell-level computation trace and is exploited in a new abstraction-based synthesis algorithm to prove that a partially formed query cannot be completed to satisfy the specification.

FlashProfile: a framework for synthesizing data profiles

S syntactic profiling is addressed, and it is shown that access to syntactic profiles may allow for more accurate synthesis of programs, i.e. using fewer examples, in programming-by-example (PBE) workflows such as Flash Fill.

The three pillars of machine programming

This position paper describes the vision of the future of machine programming through a categorical examination of three pillars of research: intention, invention, and adaptation.



A Machine Learning Framework for Programming by Example

It is shown how machine learning can be used to speed up this seemingly hopeless search problem, by learning weights that relate textual features describing the provided input-output examples to plausible sub-components of a program.

User Interaction Models for Disambiguation in Programming by Example

This work presents two novel user interaction models that communicate actionable information to the user to help resolve ambiguity in the examples of PBE systems.

BlinkFill: Semi-supervised Programming By Example for Syntactic String Transformations

A data structure InputDataGraph is developed to succinctly represent a large set of logical patterns that are shared across the input data, and used to efficiently learn substring expressions in a new PBE system BlinkFill.

Compositional Program Synthesis from Natural Language and Examples

This paper presents a domain-agnostic program synthesis algorithm and demonstrates its application to an expressive string manipulation language and evaluates the approach on complex tasks from online help forums that are beyond the scope of current state-ofthe-art methods.

Learning Programs: A Hierarchical Bayesian Approach

A nonparametric hierarchical Bayesian prior over programs which shares statistical strength across multiple tasks is introduced and an MCMC algorithm is provided that can perform safe program transformations on this representation to reveal shared inter-program substructures.

Unsupervised Learning by Program Synthesis

An unsupervised learning algorithm is introduced that combines probabilistic modeling with solver-based techniques for program synthesis and can learn many visual concepts from only a few examples and recover some English inflectional morphology.

Learning Dependency-Based Compositional Semantics

A new semantic formalism, dependency-based compositional semantics (DCS) is developed and a log-linear distribution over DCS logical forms is defined and it is shown that the system obtains comparable accuracies to even state-of-the-art systems that do require annotated logical forms.

Learning Semantic String Transformations from Examples

An expressive transformation language for semantic manipulation that combines table lookup operations and syntactic manipulations is described and a synthesis algorithm that can learn all transformations in the language that are consistent with the user-provided set of input-output examples is presented.

Meta-interpretive learning of higher-order dyadic datalog: predicate invention revisited

This paper shows that with an infinite signature the higher-order dyadic datalog class H22 has universal Turing expressivity though H^2_2$$H22 is decidable given a finite signature, and generalises the approach of meta-interpretive learning (MIL) to that of learning higher- order dyadicdatalog programs.

Automating string processing in spreadsheets using input-output examples

The design of a string programming/expression language that supports restricted forms of regular expressions, conditionals and loops is described and an algorithm based on several novel concepts for synthesizing a desired program in this language is described from input-output examples.