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):
Tools and Libraries for Machine Learning
Data science professionals utilize many ML tools and libraries in order to solve complex machine-learning problems. Here are some of the best machine learning platforms you can try:
TensorFlow is an end-to-end ML platform that’s loved by many for creating production-grade ML models. You can use its pre-trained models directly or create your own models and train them.
No matter what skill level you possess, you can find ML solutions easily using this tool. With TensorFlow in your toolkit, it will become easier for you to go from the research phase to production. It will help you find solutions faster to speed up your ML tasks at each stage of the workflow.
- Load and process data, build powerful ML models, and pre-process, clean, and consolidate data at scale with TensorFlow tools like standard data sets for initial model training and their validation.
- The TensorFlow ecosystem is developed on the Core framework, which streamlines the creation, training, and export of models.
- Support for quick model iteration, distributed training, effortless debugging using Keras, and more
- Tracking improvement and development through TensorBoard and Model Analysis
- Running and deploying models on-device, on-premises, in the cloud, browser, edge devices, servers, mobile, CPUs, GPUs, microcontrollers, and FPGAs.
TensorFlow even helps you implement MLOps and best practices for model tracking, data automation, model training, and performance monitoring.
scikit-learn is an efficient yet simple ML tool that you can use for performing predictive data analysis. It’s accessible to anyone and reusable in a variety of different contexts. scikit-learn is built on SciPy, NumPy, and matplotlib.
The best thing is that scikit-learn is an open-source tool that’s commercially usable and has a BSD license. The tool is useful in:
- Classification: to identify an object’s category through ML algorithms like SVM, random forest, nearest neighbors, etc. It’s used in image recognition and spam detection.
- Regression: to predict an object’s continuously valued attributes through algorithms like SVR, random forest, nearest neighbors, etc. It’s used in predicting stock prices and drug responses.
- Clustering: to group similar objects through algorithms like k-Means, mean-shift, spectral clustering, etc. It’s used in grouping experiment results and customer segmentation.
- Dimensionality reduction: to reduce random variables for consideration through algorithms like PCA and feature selection. It’s used for visualization and enhancing efficiency.
- Model selection: to compare, validate, and choose models and parameters through cross-validation and grid search. It’s used for improving accuracy.
- Pre-processing: to perform normalization and feature extraction for transforming input data.
MATLAB is a popular numeric computing and programming platform that millions of scientists and engineers use. It helps you analyze data, create models, and develop algorithms.
Its desktop environment is tuned for design processes and iterative analysis with a programming language that directly expresses array and matrix mathematics.
- Model, analyze, explore, and visualize data
- Create classes, functions, and scripts along with web and desktop apps
- Live Editor to create scripts with formatted text, output, and code in an executable notebook
- MATLAB applications allow you to see how algorithms work with data and then iterate and generate a program to automate work
- You can run your analyses on clouds, GPUs, and clusters with minor changes
- Perform parallel computing
- Compatible with Azure and AWS
Machine Learning: Learning Resources
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.
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.
#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 on, 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 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 nano degree 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! 🙂