This tutorial will give an overview of recent advances in Neurosymbolic Programming. The objective in this emerging area is to learn neurosymbolic programs, which incorporate latent representations computed by neural networks and symbols that explicitly capture pre-existing human knowledge, and connect these elements using rich architectures that mirror classical models of computation. One benefit of such programmatic models is that they can naturally incorporate rich inductive biases expressed in symbolic form. Other benefits include modularity, interpretability, and amenability to symbolic analysis. From the point of view of techniques, learning algorithms in this literature bring together gradient-based optimization, probabilistic methods, and symbolic techniques, and represent an exciting new contact point between the machine learning, symbolic AI, programming languages, and formal methods communities.
This tutorial will cover a broad range of basic concepts in the area, including neurosymbolic architectures, domain-specific languages, architecture/program search algorithms, meta-learning algorithms such as library learning, and applications to science and autonomy.