Unless you're elbow-deep in machine learning, it can be a pretty daunting topic. Under the covers, there is much obscure mathematics and many mysterious algorithms. That's not to say the math isn't necessary, it is. It just makes it a little daunting...So in my (work-in-progress) machine learning report I'm trying to make things as simple as possible. When it comes down to it, there are two basic approaches to machine learning, supervised and unsupervised. With supervised learning, the data used to train the algorithm includes clear examples of the correct (or desired) result. Conversely, with an unsupervised learning approach, no such examples are included in the training data.
In the consumer world, the recommendations that Netflix generates for subscribers are largely driven by machine learning. One thing that helps to make the Netflix service “sticky” is recommendations for other movies and TV programs that the subscriber might enjoy. As each viewer watches content, the algorithm learns more about what that particular viewer likes to see. That is helped in part by asking viewers to rate how much they liked other content they have watched. As time goes by though, the need for such ratings diminishes - the viewer’s preferences become more obvious.
Whether supervised or unsupervised learning is used depends on a couple of factors. Perhaps the most critical is the data. If the training data you have – or can readily obtain – does not contain examples of the “right” answer, then supervised learning isn’t really an option. Your only choice is unsupervised learning. The other factor is the nature of the questions that you want to answer, or the task at hand.
Classification, Clustering and Regression
Machine learning algorithms are typically split into three broad groups: Clustering, classification and regression. Clustering is an unsupervised learning approach. Without training data that contains correct examples, clustering can be used to find hidden patterns in data, and group data point into clusters of “similar” data points.
Google’s machine learning algorithm that learnt to reliably identify images of cats was based on unsupervised learning. In the consumer world, clustering is often used in marketing applications. For example, clustering applied to socio-demographic data can help marketers to understand why people buy the things they buy. In industrial applications, such algorithms might be used to help detect quality issues or manufacturing defects, for example.
Classification and regression are supervised learning techniques, and hence rely on training data that includes correct examples. Classification techniques aim to categorize – to place each data point into one distinct group chosen from many. Regression techniques on the other hand aim to predict a continuous range of output values, not just a few discrete values. To put that into context, in plant maintenance both types of supervised learning technique might have a role to play. Classification might be used to help explain cause-and-effect, by finding hidden patterns in the performance of failed equipment. Conversely, regression algorithms could be used to predict when a particular piece of equipment might fail in the future.
Neural Networks and Deep Learning
The underlying architecture used by Google to train a computer to recognize cats was a neural network. Neural networks are designed to loosely mimic the human brain. The brain consists of about 100 billion very simple processors called neurons - give or take a few. Neurons are connected to each other by, approximately, 1,000 trillion synapses. That is, each neuron is richly connected to thousands of other neurons. By interconnecting processors so richly, highly parallel processing becomes possible. And that – in the brain or elsewhere – facilitates rapid computation. The concept of neural networks has been around for decades. But, to make neural networks bigger and better partly requires more and faster hardware. And although
Gordon Moore is still right, faster hardware is swimming against the tide of big data - and probably not making any headway.
So for some machine learning applications, there's a move to use Graphics Processing Units (GPUs), instead of CPUs. GPUs are specialized processors. They are designed to execute a much smaller range of simple tasks extremely rapidly. If you have a video gamer in your family, you already own at least one high-end GPU. They lie at the heart of modern gaming consoles, and the videogame industry surely would not be the same without them. In the case of games, the simple task GPU's perform is refreshing large numbers of pixels at least sixty times a second. It is mostly the GPU, not the CPU, that produces the lifelike images and motion that gamers find so compelling.
As it happens, neural networks tend to map well to GPU architectures. In a very, very, crude way – and on a much smaller scale - graphics processing units are structured in a similar way to the brain. For example the CPU in a laptop typically has four cores – essentially four distinct processors on a single chip. GPU's on the other hand might have over 2000 simple processors on a single chip. Those processors are interconnected, and inherently designed to work in parallel. In short, GPU's are inherently more like the human brain in structure than conventional CPU’s. Consequently, they can be a more natural fit for neural network applications. And that, in simple terms, leads us to deep learning - bigger, more sophisticated neural networks. I'm sure hard-core data scientists will say my definition is over-simplified, and that's OK. The definition of
deep learning on Wikipedia includes
"is a branch of machine learning based on a set of algorithms that attempt to model high-level abstractions in data by using model architectures, with complex structures or otherwise, composed of multiple non-linear transformations". Like I said in the title, don't let blah-blah get in the way...
And, in the spirit of checking that you've been paying attention, here’s a question: Does Netflix use a supervised or unsupervised approach to learning an individual’s movie preferences? Let me know your thoughts in a comment and I'll follow up there too...