Merlin

Many real-world problems in artificial intelligence, computer vision, robotics, computer systems, computational biology, and natural language processing require systems to reason about highly uncertain, structured or unstructured data, and draw global insights from local observations.

Probabilistic graphical models (or graphical models for short) allow systems and businesses to address these challenges in a unified framework. These models use graphs (directed or undirected) to capture the structure of extremely complex problems often involving hundreds or even many thousands of interacting variables.

Calculating the relevant probabilities (also known as inference) in a graphical model involves challenging computational problems of optimization and estimation in highly dimensional spaces and, therefore, becomes a practical issue in many situations. To tackle these problems in the future, we must accelerate the quest for more efficient, scalable inference algorithms capable of exploiting the underlying structure of the problem and of harnessing the computational power of the cloud.

Merlin is an extensible C++ library that implements state-of-the-art exact and approximate algorithms for inference over probabilistic graphical models. It supports the most common inference tasks such as computing the partition function or probability of evidence (PR), posterior marginals (MAR), as well as finding MAP (maximum a posteriori or most probable explanation) and Marginal MAP configurations.

Merlin implements the classic Loopy Belief Propagation (LBP) algorithm as well as more advanced generalized belief propagation algorithms, such as Iterative Join-Graph Propagation (IJGP) and Weighted Mini-Bucket Elimination (WMB). For MAP and Marginal MAP inference, Merlin employs advanced, search-based algorithms that exploit problem decomposition by traversing the AND/OR search space associated with graphical models.

Why should I contribute?

The long-term objective of this project is to develop an open, easy-to-use, extensible framework to facilitate efficient exact and approximate probabilistic inference over graphical models. We expect this framework could be regarded as the gold standard in the artificial intelligence research community. Have contributors create new algorithms implementations or improve existing ones is paramount to achieving this goal.

What technology problem will I help solve?

Inference, such as making predictions or decisions, is perhaps the most fundamental issue for any graphical model. Getting accurate inference from data typically involves challenging computational problems of optimization or estimation in highly dimensional spaces. These include combinatorial optimization tasks such as maximum aposteriori (MAP) which finds the most likely configuration of the variables, or marginalization tasks that compute the normalization constants or marginal probabilities. Even more challenging tasks such as Marginal MAP inference which calls for finding an optimal MAP prediction while marginalizing over missing information of latent variables, require a hybrid of both the optimization and marginalization operations. All these problems are generally very difficult (NP-hard) to solve, thus creating a tremendous and continuous demand for efficient inference algorithms.

How will Merlin help my business?

Rapid advances in the field of artificial intelligence have started to change the way humans interact with technology. AI problems that seemed nearly unassailable a decade ago are now being solved.

The IBM Watson cognitive system has recently emerged as the embodiment of this new era of computing systems. These cognitive systems will understand the world in the way humans do: through senses, learning, and experience. Any cognitive application or solution must reason about highly uncertain, structured or unstructured data, and draw global insights from local observations. By enabling efficient probabilistic inference, Merlin enables cognitive systems to make better, more informed decisions.