Monday, November 16, 2020

Machine Learning Introduction

When I start a new subject, I usually begin at a high level before getting into the nitty gritty of the subject. I know as Software Engineers, we are often eager to dive under the hood and get straight to coding but we'll start with a bird's eye view.  Let's begin with defining what Machine Learning (ML) is. First, let's clear up the confusion surrounding the interchangeable use of the terms Artificial Intelligence and Machine Learning, the drivers behind the rise of ML implementation, and the types of Machine Learning

The terms Artificial Intelligence (AI) and Machine Learning are thrown around as if they were the same thing. There really isn't a formal definition of AI or at least a consensus on one. Most data scientist, ML engineers, and academics will agree that ML is a subset of AI. Thus, all ML is AI but not all AI is ML. The big thing Machine Learning algorithms lack is Artificial General Intelligence (AGI). AGI is the idea that if a computer could read a bunch of high school textbooks and, without knowing anything about tests or essay questions, it could apply that data to pass an SAT. There are several theoretical tests like the Turing Test (If you're not familiar with Alan Turing, please stop everything you're doing and read about this great mind). Turing posed a thought experiment where a computer and person were each behind a curtain. If someone conversing with them is unable to discern between the computer and the person, then that computer has attained AIG. Steve Wozniak said if a machine could go into an average home and figure out how to make a cup of coffee (find the machine and the coffee, add water, locate a cup, and work the coffee machine) it could be defined as AIG. From a human point of view, these tasks aren't particularly difficult; from a software engineering perspective, these tasks are impossibly complex. Currently, there are no machines that are capable of passing these, or any similar, tests. Now that we know the difference between AI and ML, lets dive deeper into Machine Learning.

Machine Learning is a set of learning algorithms that can be further divided into three subsets - Reinforcement Learning, Supervised, and Unsupervised. 

Reinforcement Learning takes signals as input, chooses an action based on those signals, and then tries to improve the choice of action based on the reward or punishment that results from that action. Imagine a rat running a maze; a signal is seeing a place to go right or left. Go right, get a treat, go left, get a shock. The next time the mouse is presented with a right/left decision, it will use prior experience to go right. OpenAI has some great resources on Reinforcement training that even include video games upon which your model can be trained. Reinforcement training was used by Google to create their AlphaGO model that beat a top GO master. There is a great article in Nature that documents the development of this game paying AI.

Supervised Learning is probably the most common of all the ML types. It involves the use of labeled data. For example, we want to predict the price for which a house will sell. Suppose we have a spreadsheet that contains housing price data and it contains columns named: "Total Square Feet," "Number of bedrooms, " "Number of bathrooms," and "Selling Price." The first three columns are referred to as Features and the last as the Label. Providing that the spreadsheet is sufficiently large, we can use it to train one of many ML algorithms to predict the selling price for a house not on the spreadsheet. The Supervised name comes from the idea that we have a large set of examples in which we know the outcome that we are trying to predict. We use that labeled data to train an algorithm. There are so many different applications of Supervised Learning that it has become the most used subset of ML. Our labeled data could be a collection of pictures of cats and dogs. In reality, the pictures are m X n matrices of pixel data and the feature set. The label would be the corresponding Cat or Dog identifier. Supervised Learning will be the main focus of upcoming posts.

Unsupervised Learning is used on data that has features but lacks labels. Perhaps we have a bunch of data about customers who have purchased something from our website. Normal demographic data (location, age, income bracket) are so varied among our customers that we are having a tough time marketing to them. We could use a Clustering algorithm to identify different groups that comprise our customer base. Unsupervised learning is also a rapidly expanding area of not only academic research, but also real world ML implementations.
 
Hopefully, this clears up any confusion surrounding the difference between Artificial Intelligence and Machine Learning as well as the types of Machine Learning that are currently being researched and implemented.


Supervised Learning Introduction

In the last post, I discussed the distinction between Artificial Intelligence(AI) and Machine Learning (ML). I also wrote about the main cat...