104,163 research outputs found
Data Generation for Neural Programming by Example
Programming by example is the problem of synthesizing a program from a small
set of input / output pairs. Recent works applying machine learning methods to
this task show promise, but are typically reliant on generating synthetic
examples for training. A particular challenge lies in generating meaningful
sets of inputs and outputs, which well-characterize a given program and
accurately demonstrate its behavior. Where examples used for testing are
generated by the same method as training data then the performance of a model
may be partly reliant on this similarity. In this paper we introduce a novel
approach using an SMT solver to synthesize inputs which cover a diverse set of
behaviors for a given program. We carry out a case study comparing this method
to existing synthetic data generation procedures in the literature, and find
that data generated using our approach improves both the discriminatory power
of example sets and the ability of trained machine learning models to
generalize to unfamiliar data
Extending Stan for Deep Probabilistic Programming
Stan is a popular declarative probabilistic programming language with a
high-level syntax for expressing graphical models and beyond. Stan differs by
nature from generative probabilistic programming languages like Church,
Anglican, or Pyro. This paper presents a comprehensive compilation scheme to
compile any Stan model to a generative language and proves its correctness.
This sheds a clearer light on the relative expressiveness of different kinds of
probabilistic languages and opens the door to combining their mutual strengths.
Specifically, we use our compilation scheme to build a compiler from Stan to
Pyro and extend Stan with support for explicit variational inference guides and
deep probabilistic models. That way, users familiar with Stan get access to new
features without having to learn a fundamentally new language. Overall, our
paper clarifies the relationship between declarative and generative
probabilistic programming languages and is a step towards making deep
probabilistic programming easier
- …