What is Machine Learning?

In the beginning of January, I decided to take some coursework via MOOC's on Machine Learning and Artificial Intelligence. One sensation we hear about in the media is how much AI is going to change the world for the better and worse. Many of the staple jobs in the US are projected to be done by intelligent machines in the coming decade and cause massive structural unemployment. Some ever worry AI will take over like we have seen in Hollywood (unlikely I think). Regardless, we must acknowledge and push forward in this area because the benefits (as well as the risk of not pursuing AI) are too great to ignore.

I've been taking Andrew Ng's Intro to Machine Learning via Coursera, Udacity's Intro to AI and Linear Algebra refresher, and watching a ton of Siraj Rival videos on YouTube. Machine Learning is one the hardest things I've tried to learn in my life. It involves a ton of math, probability, and programming, but this is precisely why I like it. I love the challenge. I am, however, a lazy student. I am trying to get into a GA Tech's Online Masters in Computer Science, so I can do machine learning full time, but I also have to make up for mediocre undergraduate performance in a non-CS field. I have learned, since teaching myself to program, that this blog and using the Feynman method (teaching what you've only just learned in order to grasp it fully) will keep me accountable and push me to a deep understanding. Regardless of what my academic career looks like, I will learn machine learning because I like it.

So, the fun part: What is machine learning? Tom Mitchell, a computer science professor at Carnegie Melon, defines machine learning as this:

"A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E."

Makes perfect sense right? The definition is not as intimidating as it looks at first glance. All Dr. Mitchell is saying is: if you give a computer data about the past regarding some task and it is able to improve how that task is done, then you can say that the program has learned.

Why is is this important? Is Machine Learning AI?
This is important because machine learning is our first big step in the ultimate goal in artificial intelligence: making a machine as intelligent as a human being. It is important to remember that machine learning is a subset of artificial intelligence, not the field as a whole. Learning is only a small part of what we want artificial minds to do. Some researchers, like Monica Anderson, say machine learning is the only kind of artificial intelligence we have, though the goal is to incorporate things like abstract thinking into our machines.

So how does machine learning differ from conventional programming?

Conventional programming forces a programmer to define all the parameters and data needed to perform a task. Machine learning takes a series of rules about a task, data about the past, and the desired output and reaches the desired output by repeatedly attempting the task until reaching the desired output. For example, imagine trying to make a winning chess program. You could program all the moves and countermoves, but Chess strategy has been something that has been studied for about 2,000 years. The programming task would be monumental. However, if you supply the rules on how pieces move and what a winning scenario is, then with machine learning, a program can learn to play chess and win.

How does a computer learn to play chess? Or any task for that matter?
Well, this is where the math comes in. Machine learning has also been called "the extraction of knowledge from data." Machine learning uses advanced concepts from statistics and probability (that I will be covering in future sections) to determine patterns in datasets. Just hang in there! I will teach you this in detail. I do want to explain conceptually the different ways machines learn from data.

Supervised Learning
This is probably the most intuitive learning method. A program is supplied a well labeled dataset and a correct outcome. For instance, supplying a program images and labelling the images (e.g. "this is a cat"). With this method, when the program is supplied more data, the more it is able to learn and when it encounters unclassified data, it should be able to classify that data correctly. My next couple of posts will revolve around this and walking through a "hello world" style machine learning program. This is the most common type of machine learning.

Unsupervised Learning
This kind of learning is when a computer is given an unlabelled set of data and we tell the computer: "here is an unstructured dataset, can you give it structure?" This is a powerful algorithm and one way to think of it is how we learn something completely new. If you watch one or two YouTube videos on a complex subject, then you aren't likely to learn much. However, if you watch thousands of videos, read a hundred books, and attend network with others learning the same thing, then you will learn much more.

Reinforcement Learning
Similar to unsupervised learning, this algorithm takes data about what classifies something (e.g. what makes something a truck instead of a car?) and uses the "Nearest Neighbors" technique to determine what something is. The nearest neighbors technique takes the classification of some item that neighbors the unknown item and then uses the data from the neighbors to classify the unknown item.

Neural Nets
This is a really cool buzzword and a really cool technique! This method uses a model of the human brain, which to truly explain requires its own post. This technique uses matrix multiplication and activation functions to determine to allow a machine to interpret inputs and propagate it through a network. This technique has lost popularity in the past, but regained it in the future. This is my personal favorite type of learning!

Conclusion
My hope for my future blog posts is the go into detail on how math can help a machine learn. As always, if you are kind enough to read this post, let me know what you think. I welcome constructive criticism. I want to learn how to design learning machines and be the best at it. I don't want to just seem like I know what I'm talking about. If there's concept I didn't explain well or if you want to understand something more deeply, then let me know!


No comments:

Post a Comment