The sharing of Microsoft’s toys continued today with the open-sourcing of its model-based machine-learning framework, Infer.NET.
A team at Microsoft’s research centre in Cambridge, UK, kicked off development of the framework in 2004, and it was released for academic use in 2008. In Microsoft’s brave new world of AI, the technology has found itself evolving into a machine-learning engine and creeping into Office and Azure as well as gaming applications on Xbox.
Infer.NET, which is on GitHub right now, takes a model-based approach to machine learning. The developer gives the framework a model, and the framework then develops a machine-learning algorithm directly from the model provided.
You’d be forgiven for thinking it all sounds a bit back-to-front – many learning models require the programmer maps their model to a pre-existing learning algorithm, however, the Infer.NET engineers insist that their framework’s approach has the added advantage of interpretability. It should be possible for the user to work out why the system has behaved in a certain way having given it a model. As AI software become ever more prevalent, explaining its behavior becomes ever more important.
Since the code is on GitHub (under the MIT license for free use in commercial applications) we obviously fired up Visual Studio and took the framework for a spin. Pulling the packages down via nuget proved problematic, however, simply cloning the source from GitHub and loading up the solution was enough to get the framework running. Eschewing the C# samples, we dived into the F# examples because hey, that’s the way we roll.
The thing is cross platform and supports .NET Framework 4.6.1, .NET Core 2.0, and Mono 5.0. Windows users get to use Visual Studio 2017, while macOS and Linux folks have command-line options – which could be massaged into the code wrangler of your choice.
Models for Infer.NET are setup using a probabilistic program. The framework compiles this into what the team itself describes as something “cryptically called deterministic approximate Bayesian inference.” This is highly scalable, with Microsoft using it in a system that slurps knowledge from billions of web pages.
Sounding a little bit like the introduction to an old episode of the A-Team, the system can be summarized as: if you have a problem, and you can describe the model, and want to know why it just did that weird thing, or need it to learn when new data rolls in, then if you can download it, maybe you can use Infer.NET. ®