26 research outputs found
Neural Programming by Example
Programming by Example (PBE) targets at automatically inferring a computer
program for accomplishing a certain task from sample input and output. In this
paper, we propose a deep neural networks (DNN) based PBE model called Neural
Programming by Example (NPBE), which can learn from input-output strings and
induce programs that solve the string manipulation problems. Our NPBE model has
four neural network based components: a string encoder, an input-output
analyzer, a program generator, and a symbol selector. We demonstrate the
effectiveness of NPBE by training it end-to-end to solve some common string
manipulation problems in spreadsheet systems. The results show that our model
can induce string manipulation programs effectively. Our work is one step
towards teaching DNN to generate computer programs.Comment: 7 pages, Association for the Advancement of Artificial Intelligence
(AAAI
Learning with Latent Language
The named concepts and compositional operators present in natural language
provide a rich source of information about the kinds of abstractions humans use
to navigate the world. Can this linguistic background knowledge improve the
generality and efficiency of learned classifiers and control policies? This
paper aims to show that using the space of natural language strings as a
parameter space is an effective way to capture natural task structure. In a
pretraining phase, we learn a language interpretation model that transforms
inputs (e.g. images) into outputs (e.g. labels) given natural language
descriptions. To learn a new concept (e.g. a classifier), we search directly in
the space of descriptions to minimize the interpreter's loss on training
examples. Crucially, our models do not require language data to learn these
concepts: language is used only in pretraining to impose structure on
subsequent learning. Results on image classification, text editing, and
reinforcement learning show that, in all settings, models with a linguistic
parameterization outperform those without
IRE: A Framework For Inductive Reverse Engineering
abstract: Reverse engineering is critical to reasoning about how a system behaves. While complete access to a system inherently allows for perfect analysis, partial access is inherently uncertain. This is the case foran individual agent in a distributed system. Inductive Reverse Engineering (IRE) enables analysis under
such circumstances. IRE does this by producing program spaces consistent with individual input-output examples for a given domain-specific language. Then, IRE intersects those program spaces to produce a generalized program consistent with all examples. IRE, an easy to use framework, allows this domain-specific language to be specified in the form of Theorist s, which produce Theory s, a succinct way of representing the program space.
Programs are often much more complex than simple string transformations. One of the ways in which they are more complex is in the way that they follow a conversation-like behavior, potentially following some underlying protocol. As a result, IRE represents program interactions as Conversations in order to
more correctly model a distributed system. This, for instance, enables IRE to model dynamically captured inputs received from other agents in the distributed system.
While domain-specific knowledge provided by a user is extremely valuable, such information is not always possible. IRE mitigates this by automatically inferring program grammars, allowing it to still perform efficient searches of the program space. It does this by intersecting conversations prior to synthesis in order to understand what portions of conversations are constant.
IRE exists to be a tool that can aid in automatic reverse engineering across numerous domains. Further, IRE aspires to be a centralized location and interface for implementing program synthesis and automatic black box analysis techniques.Dissertation/ThesisMasters Thesis Computer Science 201
Colored E-Graph: Equality Reasoning with Conditions
E-graphs are a prominent data structure that has been increasing in
popularity in recent years due to their expanding range of applications in
various formal reasoning tasks. Often, they are used for equality saturation, a
process of deriving consequences through repeatedly applying universally
quantified equality formulas via term rewriting. They handle equality reasoning
over a large spaces of terms, but are severely limited in their handling of
case splitting and other types of logical cuts, especially when compared to
other reasoning techniques such as sequent calculi and resolution. The main
difficulty is when equality reasoning requires multiple inconsistent
assumptions to reach a single conclusion. Ad-hoc solutions, such as duplicating
the e-graph for each assumption, are available, but they are notably
resource-intensive.
We introduce a key observation is that each duplicate e-graph (with an added
assumption) corresponds to coarsened congruence relation. Based on that, we
present an extension to e-graphs, called Colored E-Graphs, as a way to
represent all of the coarsened congruence relations in a single structure. A
colored e-graph is a memory-efficient equivalent of multiple copies of an
e-graph, with a much lower overhead. This is attained by sharing as much as
possible between different cases, while carefully tracking which conclusion is
true under which assumption. Support for multiple relations can be thought of
as adding multiple "color-coded" layers on top of the original e-graph
structure, leading to a large degree of sharing.
In our implementation, we introduce optimizations to rebuilding and
e-matching. We run experiments and demonstrate that our colored e-graphs can
support hundreds of assumptions and millions of terms with space requirements
that are an order of magnitude lower, and with similar time requirements