Attempts to design machines smarter than humans aren’t new.
One of the very early attacks that computer science made on human “intelligence” was through the game of chess. Chess is (or should we say, was?) assumed by many as the ultimate test of human intellect and creativity, and back in the 1960-the 70s, there were different schools of thought within computer science.
Some held that it was just a matter of time before computers overtook humans in playing chess, while others believed this would never happen.
Kasparov vs. Deep Blue
The most sensational event featuring man vs. machine in the battle of thought was the 1996 chess match between the then world champion Garry Kasparov (and arguably, the best chess player ever) and Deep Blue, a supercomputer the IBM designed for this very event.
To cut a long story short, Kasparov won the 1996 match convincingly (4-2) but lost the 1997 rematch (4.5-3.5) amid much controversy and Kasparov’s direct cheating allegations against IBM.
Regardless, an era in chess and computer science was over. Computers were entitled smarter than any living human possible. IBM, happy with the revenge, dismantled Deep Blue and moved on.
Today, it’s impossible for any grandmaster to beat any regular chess engine running on commodity hardware.
What isn’t Machine Learning?
Before we take a more in-depth look at Machine Learning, let’s get some misconceptions out of the way. Machine Learning is not, by any stretch of the imagination, an attempt at replicating the human brain. Despite sensationalist beliefs held by the likes of Elon Musk, computer science researchers maintain that they’re not in search of this holy grain and certainly not anywhere close to it.
Simply put, machine learning is the practice of applying learning-by-example processes to computers. This contrasts with the traditional approach of relying on a human programmer to think up all the possible scenarios and hard-code rules for them into a system.
Honestly, that’s about what machine learning is: feeding tons and tons and tons of data to a computer so that it can learn from examples (trial → error → comparison → improvement) rather than relying on the source code.
Applications of Machine Learning
So, if Machine Learning isn’t black magic and is neither something going to spawn Terminators, what is it useful for?
Machine Learning helps in cases where traditional programming falls flat, and these cases generally fall into one of the two categories.
As the name implies, Classification concerns labeling things correctly, while Prediction aims to correct future projections, given a large enough data set of past values.
Some interesting applications of Machine Learning are:
Email spam is pervasive, but trying to stop it can be a nightmare. Just how is spam defined? Is it the presence of specific keywords? Or maybe the way it’s written? It’s tough to think up an exhaustive set of rules, program-wise.
This is why we use Machine Learning. We show the system millions of spam messages and non-spam messages and let it figure out the rest. This was the secret behind Gmail’s excellent spam filters that rocked personal email in the early 2000s!
All major e-commerce companies today have powerful recommendation systems. At times, their ability to recommend things we “might” find useful is incredibly accurate, despite our having never clicked on that item before.
Coincidence? Not at all!
Machine Learning is hard at work here, gobbling up terabytes after terabytes of data and trying to predict our volatile moods and preferences.
Have you come across first-level customer support that seemed oddly robotic and yet was able to make interesting small talk?
Well, then you’ve been pwned by Machine Learning!
Learning from conversations and determining what to say when is an upcoming and exciting area of chatbot application.
In agriculture, robots powered by Machine Learning are used to spray weeds and other unwanted plants amidst crops selectively.
This would otherwise have to be done by hand or would be wildly wasteful as the system would spray the product as well with the killer liquid!
Voice-based interaction with computer systems is not science fiction anymore. Today we have digital assistants like Alexa, Siri, and Google Home that can take commands verbally and not mess up (well, almost!).
Some might argue that it’s an invention best avoided as it’s making the human race lazier than ever, but you can’t argue with the effectiveness.
We’re on the verge of a revolution in medical diagnosis, as Machine Learning based systems are beginning to outperform experienced doctors in diagnosis through x-rays, etc.
Please note that this does not mean doctors will soon not be needed, but that the quality of medical care will go up dramatically, while costs will take a plunge (unless business cartels dictate otherwise!).
This was just a sample of what Machine Learning is being used for. Self-driving cars, strategy game-playing bots, t-shirt folding machines, captcha breaking, and coloring black-and-white photos are happening these days.
Types of Machine Learning
Machine Learning techniques are of two kinds.
Supervised Learning, in which the system is directed by human judgment, and Unsupervised Learning, in which the system is left to learn all by itself. Another way of saying the same thing would be that in Supervised Learning, we have a data set containing both the inputs and the expected output, which the system uses to compare and self-correct. In Unsupervised Learning, though, there’s no existing output to measure against, so the results may vary wildly.
An exciting and bone-chilling application of Unsupervised Machine Learning?
That would be bots playing board games, wherein the program is taught the game rules and winning conditions and then left to its own devices. The program then plays millions of games against itself, learning from its mistakes and reinforcing the advantageous decisions.
If you’re on a powerful enough computer, a world-beating playing AI can be prepared in a matter of a few hours!
The following images illustrate these ideas succinctly (source: Medium):
Resources for getting started in Machine Learning
So, now that you’re all fired up about Machine Learning and how it can help you conquer the world, where to begin?
Below I’ve listed some fantastic resources on the Web that can help you achieve fluency in Machine Learning without obtaining a Ph.D. in computer science! If you’re not a Machine Learning researcher, you’ll find the domain of Machine Learning as practical and enjoyable as programming in general.
So, don’t worry, no matter what your level currently, you can, like a good Machine Learning program, teach yourself and get better. 😛
The first requirement for getting into Machine Learning is learning to program. That’s because Machine Learning systems come in the form of libraries for various programming languages.
Python is the most recommended one, partly because it’s incredibly pleasant to learn and partly because it has a massive ecosystem of libraries and resources.
#2. Think Stats
Once you’ve finished with the basics of Python, my second recommendation would be to go through two outstanding books. They are 100% free and available as a PDF for download. Think Stats and Think Bayes are two modern classics that every aspiring Machine Learning engineer should internalize.
At this point, I’d recommend you take a couple of courses from Udemy. The interactive, self-paced format will help you get into the nitty-gritty and build confidence.
Ensure you check out the course preview, reviews (especially the negative ones!), and overall feel of the course before you get started.
You can also come across amazing tutorials on YouTube for free. Sentdex is one such channel I can recommend, where tons of fun are always going, but his approach is not beginner-friendly.
#4. Andrew Ng
Course taught by Andrew Ng on Coursera is arguably the most popular learning resource for Machine Learning fundamentals.
Though it uses the R programming language, it remains unparalleled in its treatment of the subject and its lucid explanations. Because of this course, Andrew Ng has achieved somewhat of a godlike stature in the ML circles, and people look up to him for ultimate wisdom (I’m not kidding!).
This is not a course for beginners, but if you’re good at data wrangling already and don’t mind some side-research as you go along, this course is the best recommendation.
Become a machine learning engineer by taking this nanodegree by Udacity.
It will take approx 3 months to complete and end of the course, you are expected to have a fair idea about machine learning algorithms, how to model and deploy them to production.
There’s no end to resources on the internet, and you can easily get lost when beginning. Most of the tutorials and discussions out there are mathematically challenging or lacking a structure and can break your confidence before you even get started.
So, I’d like to warn you against self-destruction: keep your aim modest and move in minimal steps. Machine Learning isn’t something you can get comfortable with within a day or two, but pretty soon, you’ll start to enjoy yourself, and who knows, maybe even create something frightening!
Have fun! 🙂