![]() |
Infer.NET |
![]() |
Tom Minka, John Winn, John Guiver, Anitha Kannan
Infer.NET is our proposal for a comprehensive Microsoft-owned library of statistical algorithms, so that Microsoft researchers do not have to code them from scratch for each project. Statistical algorithms and models are increasingly important to our research, but they are also growing increasingly complex to implement. By concentrating our coding efforts into one place, we can include algorithms of greater sophistication and efficiency than those of individual efforts.
The library will be object-oriented, including types for common distributions, matrices, and their associated operations like sampling and linear algebra. It will also support high-level model specifications in the form of Bayesian networks and factor graphs, along with operations for computing probabilities and parameter estimates. The library will be extensible so that the user can not only add new inference algorithms but can also plug in new variable types and distribution types into existing algorithms.

Compared to previous statistical libraries, Infer.NET will support models of much greater generality. Rather than limited to directed Bayesian networks, it will support arbitrary factor graphs with discrete and continuous variables of any data type. It will also provide state-of-the-art algorithms such as Generalized Belief Propagation, Expectation Propagation, and our own novel message-passing methods. Rather than treating parameter estimation as a separate step of inference, Infer.NET allows parameters to be specified directly as variables in the model and inferred using Bayesian methods. In this way, "learning" happens automatically in Infer.NET.
We call the library Infer.NET because it crucially depends on features of the .NET framework. Specifically, the reflection and code-generation capabilities of .NET allow us to provide generality, extensibility, and high performance at the same time. The user provides a high-level model specification with their own data types, and the library uses reflection to generate low-level code with no abstraction overhead. Our goal is to reach efficiency comparable to code written by hand for that particular model. Because code generation is integrated into .NET, all of this happens behind the scenes when the user asks for model probabilities.
CSOFT is dedicated programming for using the functionality offered by Infer.NET
Machine Learning and Perception —Machine Learning—Infer.Net