The Microsoft Artificial Intelligence Landscape – And What to use When
Artificial Intelligence (AI), at its broadest definition, is simply “a machine that can act using human-style reasoning or perception”. Of course, the technologies used to enable that definition are far from simple themselves.
Artificial Intelligence isn’t new – I worked with “Good Old Fashioned AI” (that’s a real thing) back in the late 70’s and early 80’s. The promise of AI was higher than the technology allowed in those days, and so the AI field went dormant in the public’s mind. It had a resurgence a few years later, and now has returned with far greater options than we have ever had before. Breakthrough algorithms, understandings, and technologies now allow a far deeper use of AI – I’ll cover a few of these uses in another article. The hype this time, however, is (mostly) real. You’re using AI every day, and you can embed it in your applications for your users as well.
For the general public, AI is somewhat of a “black box”, with image recognition being the same level of difficulty to understand as language translation or even interpretation. But for the technical professional, some problems are already solved, and you can simply leverage them, and others you have to write yourself. In general, the more customization you need, the more you’ll need to write for your solution.
Define the Opportunity
The first thing to do of course is to define what opportunity you are solving for. For instance, you might have a need to estimate the repair costs of a car accident, using only a photo uploaded from your client from the web. Or perhaps you want to translate between languages so that your firm can read a document sent from another country. You may have a need to analyze that document to find its sentiment or general meaning, or you may want to generate an automated response from the facts and data it contains. You may want to do route prediction for expense mileage tracking, or fill out a set of values using only an example. (You can find a few real-world examples for AI and Machine Learning here)
From No-Code to Deep Learning
Once you’ve defined the opportunity, the next step is to start at the very highest level of leveraging that you can. For instance, Microsoft Excel also has a feature (called Flash Fill) that will transform columns of data based only on an example. In the case of mileage and route tracking, that’s already built into an application – so you could simply use that.
However, if you want to recognize road signs along the way, you could move up to an image recognition service. If you need to further process that image to read the text, there’s a service for that as well. If you want to determine if the sign is overhead or on the side of the road, you may need to customize that service further. Taking this example even further, if you want to determine the speed of the vehicle using only images of road signs as you pass by them by analyzing the angle of the edge of the sign, you may need to write some Machine Learning code to do that.
The point is to follow the progression of customization that you need. If the problem is solved, use that solution. If you need to customize the solution, that’s where you start to further leverage more tools.
Another point to keep in mind is that you can combine applications, services and custom-developed AI into a much larger and more complex solution. The “Intelligent Kiosk” is one such example, combining image recognition, handwriting and voice interactions, and even bots to form a complete solution.
The AI Landscape
With that background set, let’s take a look at a few examples of the options you have for working with AI in a solution.
Embedded Artificial Intelligence
You may already be using AI in your day to day work. Office 365 applications such as Microsoft Word and PowerPoint have adaptable suggestions and critiques to make your communications clearer.
PowerPoint also has a Presentation Translator, an add-in that can bring real-time captioning to your presentations, and even allows those captions to be translated to another language. Flash-Fill in Excel is an algorithm that examines an example of what you want and makes those conversions for you. Microsoft Dynamics 365 has built-in insights to Sales, Finance, HR and Customer Relationship Management embedded within the solution.
So what is the technical professional’s responsibility here? Education. I can’t tell you how many times I’ve shown companies the features listed here when they describe what they want to accomplish – only to have them say “We had no idea it already did this”. No, you probably don’t have time to create or deliver that training, but we’ve done that for you. There are hundreds of training options built into the products, in the documentation, and in free training seminars from Microsoft – a quick web search will find them. Speaking of which, Microsoft Bing also has AI built in for searches, predictions, Autosuggest, image searches and more, and you can add those features to your applications using Bing Search as an AI API call.
Leveraging Artificial Intelligence in a Solution
Your next option is to use various Cognitive Services in your solution. These are cloud-based services that you simply call in an application (no AI algorithms to write, just use the service) using Python, Java, C#, even CuRL. Remember, you can leverage these together, using Vision to feed Language to feed Search and so on. Here’s a quick list:
- Vision – Use this service in your code to automatically tag images with descriptions, colors, captions and more. You can also use this service to read text in images, decipher handwriting, automatically recognize celebrities and landmarks, or create a thumbnail from a picture. You can even analyze video in near real-time.
- Speech – Use this service to translate speech real-time, identify and authenticate speakers using only their voice, and convert speech to text and back.
- Language – Use this service to do spell-checking, evaluate sentiments and find topic meanings, and translate text. You can also simplify complex language and parse text with this service.
- Knowledge – You can use this service to automatically extract questions and answers from text, such as FAQ’s or e-mails. Use this service to interpret natural language queries as structured query expressions, do histograms over attributes, or re-structure queries. There’s also a set of rich Academic knowledge features here, as well as linking entities within a single context.
- Search – This service contains Autosuggest, news and image searches, video searches, and an entity search that you can call from an API.
- Azure Bot Service: Use this to create conversational AI.
Customizing Artificial Intelligence for a Solution
While services like the Vision API do most of what organizations need, there are times when you need to go a bit further and train or customize a service, again without having to know a lot about various Machine Learning and Artificial Intelligence algorithms and programming. This helps you get started faster, and as we make the services better, your apps automatically get better.
Here are a few of the options when you need one step above a fully automated API call:
- Custom Vision Service – When you need to train the system to recognize certain aspects of your photos. Can be done online or in code.
- Custom Speech Service – Use this service when you need to tweak the speaking style, remove background noise, and add more vocabulary.
- Web Language Model API – Use this to leverage web-scale language trained models.
- Custom Decision Service – Create an app with contextual, adaptive decision making capabilities.
- Bing Custom Search API – This service is a commercial-grade search tool you can use over just about any data.
- Language Understanding Intelligent Service (LUIS) – Use this to add natural language understanding that will recognize intents and entities within conversation
Writing Your Own Artificial Intelligence Service
At times you’ll find there are certain requirements that a service just won’t handle on its own, nor is it customizable enough to do what you need. When I do an architecture, I start with as automated as I can, and then get “pushed” to the next level based on requirements.
When you do hit that level, there are multiple options still available. Microsoft tools and platforms support all major Data Science languages, such as Python, R, Node, Java, C++, C#, F#, SQL and more. These platforms work with TensorFlow as well as newer toolkits and integrate with Open-Source and commercial software platforms. Not only that, the offerings are tied with a formal process you can use for project creation through DevOps.
- The Team Data Science Process: Follow a fully documented, tested and extensible process for team-level end-to-end solution design, architecture and implementation. Integrates into DevOps frameworks.
- Azure Machine Learning Services: Tools, online Model Management (with automated tracking and telemetry), and Experimentation management as a service.
- Data Science Virtual Machines: Pre-configured Virtual Machines (in multiple sizes) with languages, platforms, tools, interfaces, data processing and development environments for AI. Use this system to develop and run ML and AI directly in the VM or to deploy at scale. Available in Linux and Microsoft Windows.
- Apache Spark for Azure HDInsight: Use this for fast, large AI compute on demand.
- Batch AI Training: This service provides elastic scale-out deep learning for your code. You can also run large-scale, massively parallel GPU-enabled AI development.
- Azure Machine Learning Workbench/Visual Studio Tools for AI: Use these tools with Azure Machine Learning Services to write AI code and work with deep learning toolkits.
- Azure Notebooks: A Jupyter Notebook service in the cloud. I use this quite a bit lately for data definition, experiment discussions and of course data explorations.
- AI Toolkit for Azure IoT Edge: Use this to deploy deep learning models and AI to run locally on IoT devices through pre-built models.
- Microsoft Cognitive Toolkit: Open-Source toolkit that can train deep learning algorithms at scale. Allows you to create and combine popular model types such as feed-forward DNNs, convolutional nets (CNNs), and recurrent networks (RNNs/LSTMs). It implements stochastic gradient descent (SGD, error backpropagation) learning with automatic differentiation and parallelization across multiple GPUs and servers.
- Azure AI Gallery: These are a series of templates with ready-to-implement solutions that you can deploy immediately.
There are on-premises solutions as well – and these can also be used in a Hybrid solution so that you can work with local data or for compliance reasons:
Learning and References
There’s a full whitepaper you can download here on these options. And of course, we offer learning paths, a full AI School, and Machine Learning and AI programs on EdX.