Volume 34 Number 1
By Michael Desmond | January 2019
If you’ve been reading MSDN Magazine the past couple years, you know we’ve aggressively pursued artificial intelligence (AI) and machine learning (ML) as topics of inquiry. From early introductions to Cognitive Services in 2016, to in-depth explorations of the ML.NET framework and Automated Machine Learning in the Connect(); special issue of MSDN Magazine last month, our coverage mirrors the urgency Microsoft has shown in advancing the state of the art in AI and ML.
In this month’s issue, we present a package of three feature articles focused on AI/ML. James McCaffrey’s “Introduction to PyTorch on Windows” offers a glimpse at a promising neural network library that operates at a lower level than others like Microsoft Cognitive Services Toolkit, Google TensorFlow and scikit-learn. Yordan Zaykov, meanwhile, writes “Machine Learning Through Probabilistic Programming,” which shows how the Microsoft Infer.NET framework provides algorithms to make probabilistic inferences from data—useful for building statistical models that solve ML problems. Finally, Arnaldo Peréz Castaño authors “Leveraging the Beliefs-Desires-Intentions Agent Architecture,” where he walks through applying the ML architecture to a real-life scenario—specifically, implementing a travel assistant agent in C#.
The sustained focus on AI and ML reflects both the profound impact the technology is having on software development, and the speed with which it’s evolving. McCaffrey is a senior contributing editor at MSDN Magazine, and a senior developer at Microsoft Research where he’s deeply engaged in ML development. He says there are currently dozens of significant ML projects under development at Microsoft or strongly supported by Microsoft as open source. McCaffrey rattles off a list of projects he’s engaged with, including ML.NET, Infer.NET, PyTorch, Project Brainwave and Azure Batch AI and Azure Automated ML.
How can developers stay ahead of this broad waterfront? It’s an open question, says McCaffrey. “Developers have a limited amount of time that can be used for forward-looking activities. And because the field of AI/ML is so big and is increasing so rapidly, there’s no clear learning roadmap, and everyone, including me, has to roll the dice a bit when making choices about where to focus.”
So how do you tilt the odds in your favor? McCaffrey offers a few tips:
- Choose a Library: The major deep neural libraries are so different that it’s not feasible to learn them all. He advises developers to pick one or two at most, for instance Keras, PyTorch or scikit-learn.
- Pick up Python: Don’t burn time learning Python, instead pick it up as you go. McCaffrey says most of his developer colleagues—like MSDN Magazine subscribers—are primarily C# programmers, and they pick up Python quickly on the fly.
- Focus on Fundamentals:Start your ML education by learning four fundamental techniques: binary classification using logistic regression, multiclass classification using a single hidden layer neural network (preferably on the Iris dataset), regression using a single hidden layer neural network (preferably on the Boston Housing dataset) and k-means data clustering.
- Commit to Learning: Mastering ML is not a sequential process. McCaffrey describes it as “a huge graph” that requires you to repeatedly examine topics, learning a bit more each time and understanding how topics are interrelated. For instance, most first neural network examples use uniform random initialization. There are many alternatives, but McCaffrey says you should avoid going deep on such topics immediately.
- Be Wary of Workshops: Many ML training programs are very expensive and can suffer from low technical quality. Make sure the instructor has a solid background and reputation before committing.
Michael Desmond is the Editor-in-Chief of MSDN Magazine. Questions, comments or suggestions? Send them to the editor.