With the development of the internet and technology, data availability is rarely a problem - it's what you do with the data that actually matters. As a matter of fact, analyzing huge data sets and looking for patterns is a big part of what programmers do today. In what promises to be a huge change, computer scientists have developed so-called probabilistic programming languages, which let researchers mix and match different machine-learning techniques.
With the development of the internet, data availability is often times not a problem – it’s what you do with the data that actually matters. As a matter of fact, analyzing huge data sets and looking for patterns is a big part of what programmers do today. In what promises to be a huge game changer, computer scientists have developed so-called probabilistic programming languages, which let researchers mix and match different machine-learning techniques.
Using this newly developed technique of probabilistic computing, MIT researchers have demonstrated short programs (about 50 lines of code) which are competitive with conventional systems with thousands of lines of code. The development might be hugely important for facial recognition and reconstruction software, among many others.
“This is the first time that we’re introducing probabilistic programming in the vision area,” says Tejas Kulkarni, an MIT graduate student in brain and cognitive sciences and first author on the new paper. “The whole hope is to write very flexible models, both generative and discriminative models, as short probabilistic code, and then not do anything else. General-purpose inference schemes solve the problems.”
For many programmers, the probabilistic approach might seem like blasphemy – it’s so vague that it goes against some of the very cores of traditional programming. It’s basically straying away from mathematical thinking, and moving onto a more intuitive approach.
“When you think about probabilistic programs, you think very intuitively when you’re modeling,” Kulkarni says. “You don’t think mathematically. It’s a very different style of modeling.”
Just like the name says, probabilistic programming is… probabilistic; well, sort of. The difference maker is something called the inference algorithm – an algorithm that continuously readjusts probabilities on the basis of new pieces of data. It constantly changes, but it’s probabilistic, not deterministic – hence the not-so-mathematical thinking.
Among the tasks they tackled was reconstructing a 3D image of a face using only 2D images. This new work is basically a new take on inverse graphics, which is one of the oldest issues associated with machine learning. For their experiments, they created a probabilistic programming language they call Picture, which is an extension of Julia, another language developed at MIT.
“Picture provides a general framework that aims to solve nearly all tasks in computer vision,” says Jianxiong Xiao, an assistant professor of computer science at Princeton University, who was not involved in the work. “It goes beyond image classification—the most popular task in computer vision—and tries to answer one of the most fundamental questions in computer vision: What is the right representation of visual scenes? It is the beginning of modern revisit for inverse-graphics reasoning.”
Kulkarni says, Picture is designed so that its inference algorithms can themselves benefit from machine learning, modifying themselves as they go to emphasize strategies that seem to lead to good results.
“Using learning to improve inference will be task-specific, but probabilistic programming may alleviate re-writing code across different problems,” he says. “The code can be generic if the learning machinery is powerful enough to learn different strategies for different tasks.”