© 2020 Strange Loop
In 1854 George Boole published The Laws of Thought, and established Boolean algebra. Less well known is that half of this book was devoted to probabilistic inference. Boole dreamed of a "general method in probabilities": an algorithm which given probabilities of any system of events, could determine the consequent probability of any other logically connected event. Like Boole, Alan Turing laid down the fundamentals of computer science, and also turned his attention to automated reasoning. Turing presented the "imitation game" (now, the Turing Test) - a task which could only be passed by a machine which understood the world with all its ambiguities, uncertainty and complexities; i.e., a machine with common-sense.
In this talk I present probabilistic programming as the modern realisation of Boole's general method, and a significant step towards Turing's thinking machine. I will introduce Sigma, a language in which probabilistic models are functional programs. Sigma programs can be run forward, to for example render a 3D scene (known only with uncertainty) to a 2D image. More interestingly, Sigma's inference algorithms can run functions conditionally, or in reverse; so that the most probable 3D scene can be automatically inferred from a 2D image. Through examples, I shall explain how this is possible through the combination of functional programming and methods from statistical inference, program analysis and constraint solving. And, if successful, how probabilistic programming will unify several ideas in logic, artificial intelligence and cognitive science.
Zenna is a Ph.D candidate at MIT, interested in both Human and Artificial Intelligence. He spends his days thinking about programming languages, and how to build computer programs that think as humans think (they are related!).