Information-theoretic User Interaction: Significant Inputs for Program Synthesis
Ashish Tiwari, Arjun Radhakrishna, Sumit Gulwani, and Daniel Perelman

TL;DR
This paper introduces an information-theoretic approach to identify the most significant user inputs in program synthesis, enabling more efficient interactive learning by asking the most informative questions.
Contribution
It develops a greedy, entropy-based algorithm for selecting significant inputs, extending passive learners to active ones that improve program synthesis efficiency.
Findings
The active learner converges quickly on real-world data.
The approach effectively balances false negatives and positives.
It enhances the efficiency of user interaction in program synthesis.
Abstract
Programming-by-example technologies are being deployed in industrial products for real-time synthesis of various kinds of data transformations. These technologies rely on the user to provide few representative examples of the transformation task. Motivated by the need to find the most pertinent question to ask the user, in this paper, we introduce the {\em significant questions problem}, and show that it is hard in general. We then develop an information-theoretic greedy approach for solving the problem. We justify the greedy algorithm using the conditional entropy result, which informally says that the question that achieves the maximum information gain is the one that we know least about. In the context of interactive program synthesis, we use the above result to develop an {\em{active program learner}} that generates the significant inputs to pose as queries to the user in each…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsMachine Learning and Algorithms · Software Engineering Research · Software Testing and Debugging Techniques
