How many times a day do you go thinking .. 'boy that guy is a real idiot.' ? I come across enough number of people in my normal day to make me start believing that intelligence has not yet been found anywhere in the universe... not even on Earth. May be it is because of this lack of intelligence on our own planet that we are so motivated to find intelligence elsewhere, amongst the stars and in computers. I really have no clue how the star search going but I try to keep myself abreast of any news of Artificial Intelligence. It has always fascinated me, how computers can be taught to understand and react and make decisions on the same scale of intelligence as human beings. Imagine trying to wake up your AI assisted laptop from its sleep mode (which it has put itself into to conserve battery power) only to see an error message popup on to the screen "Go away!! its only 8 o'clock for heaven's sake! Let me sleep for an hour or two and we'll get back to work then!" ... Imagine being able to blame the computer for your behind schedule project .. "It wasn't me!! It was the computer. He refuses to work any faster or for more hours!! He wants more pay (electric/solar power) for overtime!". Leaving my fantasies behind, and looking at the real world, a lot of major breakthroughs have been made in AI. More algorithms and ideologies such as Neural Networks, Fuzzy Logic etc have brought AI to our desktops.
The first actual interest in AI from Microsoft to me came in the form of Microsoft Bayesian Network Editor that's found here http://research.microsoft.com/en-us/um/redmond/groups/adapt/msbnx/
MSBNx or Microsoft Bayesian Network Editor is a component-based Windows application for creating, assessing, and evaluating Bayesian Networks, created at Microsoft Research. The application's installation module includes complete help files and sample networks. Bayesian Networks are encoded in an XML file format. The application and its components run on Windows 98, Windows 2000, and Windows XP. (taken from Microsoft Research website.) This had no real potential uses .. atleast for me. However more recently, I came across Infer.Net which is a less well known project at Microsoft Research.
Take from the Infer.NET website
"Infer.NET is a .NET framework for machine
learning. It provides state-of-the-art
message-passing algorithms and statistical
routines for performing Bayesian inference. It
has applications in a wide variety of domains
including information retrieval, bioinformatics,
epidemiology, vision, and many others. Infer.NET is a framework for running Bayesian inference in graphical models. It provides the state-of-the-art message-passing algorithms and statistical routines needed to perform inference for a wide variety of applications. Infer.NET differs from existing inference software in a number of ways:
- Rich modelling language Support for univariate and multivariate variables, both continuous and discrete. Models can be constructed from a broad range of factors including arithmetic operations, linear algebra, range and positivity constraints, Boolean operators, Dirichlet-Discrete, Gaussian, and many others. Support for hierarchical mixtures with heterogeneous components.
- Multiple inference algorithms
Built-in algorithms include Expectation Propagation, Belief Propagation (a special case of EP) and Variational Message Passing
- Designed for large scale inference
In most existing inference programs, inference is performed inside the program - the overhead of running the program slows down the inference. Instead, Infer.NET compiles models into inference source code which can be executed independently with no overhead. It can also be integrated directly into your application. In addition, the source code can be viewed, stepped through, profiled or modified as needed, using standard development tools.
- User-extendable
Probability distributions, factors, message operations and inference algorithms can all be added by the user. Infer.NET uses a plug-in architecture which makes it open-ended and adaptable. Whilst the built-in libraries support a wide range of models and inference operations, there will always be special cases where a new factor or distribution type or algorithm is needed. In this case, custom code can be written and freely mixed with the built-in functionality, minimising the amount of extra work that is needed.
This seems like an extremely promising addition to the .NET framework. I have just started to plat around with Infer.NET and I can already imagine a million different possibilities. But those are musings for a different blog :)
You can read more about Infer.NET here -> http://research.microsoft.com/en-us/um/cambridge/projects/infernet/ <-