• Get application security done the right way! Detect, Protect, Monitor, Accelerate, and more…
  • 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-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.

    Image credit: Wikipedia

    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 the 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 Machine Learning isn’t

    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 researches 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.

    1. Classification
    2. Prediction

    As the name implies, Classification concerns with 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:

    Spam filtering

    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 of think up an exhaustive set of rules, program-wise.

    Which 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 incredibly good spam filters that rocked personal email in the early 2000s!

    Recommendations

    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.

    Chatbots

    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.

    Weed removal

    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 produce as well with the killer liquid!

    Voice search

    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. For instance, in Google I/O 2018, the company gave a stunning demo of what its research team was up to.

    Medical diagnosis

    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, coloring of black-and-white photos – a lot is 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, and 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 out some fantastic resources on the Web that can help you achieve fluency in Machine Learning without having to obtain 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. 😛

    Programming

    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.

    The official Beginner’s Guide is a great place to start, even if you’re slightly familiar with Python. Or, take this Bootcamp course to become a hero from zero.

    Think Stats

    Once you’ve finished with the basics of Python, my second recommendation would be to go through two incredibly good 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.

    Udemy

    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.

    Make sure 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 is always going, but the approach he takes is not beginner-friendly.

    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 the 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 indeed not a course for the beginner, 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.

    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 within a day or two, but pretty soon you’ll start to enjoy yourself, and who knows, maybe even create something frightening!

    Have fun! 🙂