It seems Microsoft has become addicted to open source. After open-sourcing the cross-platform machine learning framework ML.NET, Microsoft has open-sourced another very important machine learning framework: infer.NET, and it's even using the MIT license.
The news was met with widespread approval, with Twitter buzzing with positive feedback.
So, what is infer.NET? What are its advantages? What are its applications? How do I download and use it?
Let's answer these questions now~
About infer.NET
In short, Infer.NET is a model-based machine learning framework.
According to the official description, Infer.NET is a framework for running Bayesian inference in a graphical model. It can be used for probabilistic programming and to solve many different types of machine learning problems, including standard problems such as classification, recommendation, or clustering, and can provide customized solutions for specific domain problems.
Generally, when performing machine learning, after developers provide a model for the framework, they need to map their model to a pre-existing learning algorithm.
Infer.NET reverses this process, allowing you to directly generate a custom machine learning algorithm from the model, enabling you to incorporate domain knowledge into the model. This "reverse approach" brings many advantages to the framework.
In its official blog post, Microsoft outlined four advantages of the infer.NET framework:
1. Highly interpretable.
If you design a model and generate algorithms from it, you can understand why the system behaves in a particular way or makes certain predictions. As machine learning applications become increasingly integrated into daily life, understanding and interpreting their behavior becomes increasingly important.
2. The data is highly applicable.
Model-based machine learning frameworks are highly applicable to data with certain characteristics, enabling them to better utilize such data to complete machine learning tasks. Examples include real-time data, heterogeneous data, insufficient data, unlabeled data, data with missing components, and data collected with known biases.
3. Use probabilistic procedures to describe the model.
Infer.NET can compile probabilistic programs into high-performance code for implementing something called deterministic approximate Bayesian inference. This approach offers significant scalability; for example, using Infer.NET in a system, the system can automatically extract knowledge from billions of web pages, including massive amounts of data.
4. Supports online Bayesian inference.
A key feature of Infer.NET is its support for online Bayesian inference, which is the system's ability to learn as new data arrives. This is essential for commercial and consumer products that involve real-time interaction with users.
With so many advantages, Infer.NET is widely used in real-world applications.
In addition to being widely used in various academic research fields such as information retrieval, epidemiology, and bioinformatics, Infer.NET has evolved into a machine learning engine in Microsoft's core products such as Microsoft Office, Xbox, and Azure.
Recently, it has also been applied to game rating systems. Microsoft's research team developed TrueSkill2 based on TrueSkill using the Infer.NET framework. In Halo 5, its application showed that player matchmaking accuracy improved from 52% to 68% compared to TrueSkill.
User Guide
After the Infer.NET framework was open-sourced, it will become part of ML.NET. This is a machine learning framework for .NET developers, which Microsoft open-sourced at this year's Build conference.
According to the blog post, Microsoft has already taken significant steps to integrate ML.NET. For example, it has set up repositories under .NET Foundation and moved packages and namespaces to Microsoft.ML.Probabilistic. Infer.NET will also enhance ML.NET's capabilities in statistical modeling and online learning.
Furthermore, Infer.NET is cross-platform. According to the official Readme documentation, Infer.NET supports .NET Framework 4.6.1, .NET Core 2.0, and Mono 5.0.
Windows users need to use Visual Studio 2017, while macOS and Linux developers can use the .NET Core 2.0 SDK to build and run .NET Standard and .NET Core projects.