Understanding the World Through Code

Funded through the NSF Expeditions in Computing Program

Machine learning meets programs synthesis

Main:Slide25 Our goal is to build a meta-framework that can be used to synthesize programs to predict and understand data in a range of scientific domains. In particular, this framework will synthesize neurosymbolic programs that combine both neural and program-like logical components. For example, the figure illustrates a few examples of the kinds of compositions of neural and logical components that our meta-framework will handle. We plan to explore neurosymbolic models that go beyond these specific examples and interleave neural and symbolic modules following complex hierarchical or sequential architectures. Developing a framework that facilitates the expression of such rich compositions --- an equivalent of Pytorch or Tensorflow for neurosymbolic programming, if you will --- is a central goal of this project.

More broadly, a major goal for the project is to develop a science of neurosymbolic learning. This will include developing new algorithms that specifically address the challenges in the neurosymbolic setting---e.g. how to design good domain specific languages (DSLs) to support the symbolic part of a model, the presence of uncertainty, the need to perform continuous optimization over the neural network parameters in conjunction with discrete optimization over the program structure, and the need to actively design experiments to disambiguate between candidate hypotheses/programs. It will also include developing an understanding of when to deploy different algorithms, as well as which combinations of neural and symbolic components work better for which settings. Our proposed framework will serve as a platform for exploring these algorithms and deploying them in each of our problem domains.