WHAT IS MACHINE LEARNING
Machine learning is the study of computer algorithms that can improve automatically through experience and by the use of data. It is seen as a part of artificial intelligence
Machine learning is a branch of artificial intelligence AI and computer science which focuses on the use of data and algorithms to imitate the way that humans learn, gradually improving its accuracy.
WHAT IS DEEP LEARNING
Deep Learning is a subfield of machine learning concerned with algorithms inspired by the structure and function of the brain called artificial neural networks.
As the popularity of Machine Learning (ML) continues to solidify in the industry, with it is rising another innovative area of study in Data Science – Deep Learning (DL).
Deep Learning is a sub-branch of Machine Learning. The unique aspect of Deep Learning is the accuracy and efficiency it brings to the table – when trained with a vast amount of data, Deep Learning systems can match (and even exceed) the cognitive powers of the human brain.
Naturally, Data Scientists working on this advanced field of learning got busy to develop a host of intuitive frameworks for Deep Learning. These Deep Learning frameworks can either be an interface or a library/tool that helps Data Scientists and ML Developers to build Deep Learning models much more conveniently. The best part about Deep Learning frameworks is that you need not get into the intricacies of the underlying ML/DL algorithms – that is taken care of by the Deep Learning frameworks.
How Machine Learning Works
Machine learning uses two types of techniques: supervised learning, which trains a model on known input and output data so that it can predict future outputs, and unsupervised learning, which finds hidden patterns or intrinsic structures in input data.
Figure 1. Machine learning techniques include both unsupervised and supervised learning.
AI for Engineers: Building an AI System.3:40Video length is 3:40.AI for Engineers: Building an AI System
Supervised Learning
Supervised machine learning builds a model that makes predictions based on evidence in the presence of uncertainty. A supervised learning algorithm takes a known set of input data and known responses to the data (output) and trains a model to generate reasonable predictions for the response to new data. Use supervised learning if you have known data for the output you are trying to predict.
Supervised learning uses classification and regression techniques to develop machine learning models.
Classification techniques predict discrete responses—for example, whether an email is genuine or spam, or whether a tumor is cancerous or benign. Classification models classify input data into categories. Typical applications include medical imaging, speech recognition, and credit scoring.
Use classification if your data can be tagged, categorized, or separated into specific groups or classes. For example, applications for hand-writing recognition use classification to recognize letters and numbers. In image processing and computer vision, unsupervised pattern recognition techniques are used for object detection and image segmentation.
Common algorithms for performing classification include support vector machine (SVM), boosted and bagged decision trees, k-nearest neighbor, Naïve Bayes, discriminant analysis, logistic regression, and neural networks.
Regression techniques predict continuous responses—for example, changes in temperature or fluctuations in power demand. Typical applications include electricity load forecasting and algorithmic trading.
Use regression techniques if you are working with a data range or if the nature of your response is a real number, such as temperature or the time until failure for a piece of equipment.
Common regression algorithms include linear model, nonlinear model, regularization, stepwise regression, boosted and bagged decision trees, neural networks, and adaptive neuro-fuzzy learning.
Using Supervised Learning to Predict Heart Attacks
Suppose clinicians want to predict whether someone will have a heart attack within a year. They have data on previous patients, including age, weight, height, and blood pressure. They know whether the previous patients had heart attacks within a year. So the problem is combining the existing data into a model that can predict whether a new person will have a heart attack within a year.
Unsupervised Learning
Unsupervised learning finds hidden patterns or intrinsic structures in data. It is used to draw inferences from datasets consisting of input data without labeled responses.
Clustering is the most common unsupervised learning technique. It is used for exploratory data analysis to find hidden patterns or groupings in data. Applications for cluster analysis include gene sequence analysis, market research, and object recognition.
For example, if a cell phone company wants optimize the locations where they build cell phone towers, they can use machine learning to estimate the number of clusters of people relying on their towers. A phone can only talk to one tower at a time, so the team uses clustering algorithms to design the best placement of cell towers to optimize signal reception for groups, or clusters, of their customers.
Common algorithms for performing clustering include k-means and k-medoids, hierarchical clustering, Gaussian mixture models, hidden Markov models, self-organizing maps, fuzzy c-means clustering, and subtractive clustering.
Figure 2. Clustering finds hidden patterns in your data.
How Do You Decide Which Machine Learning Algorithm to Use?
Choosing the right algorithm can seem overwhelming—there are dozens of supervised and unsupervised machine learning algorithms, and each takes a different approach to learning.
There is no best method or one size fits all. Finding the right algorithm is partly just trial and error—even highly experienced data scientists can’t tell whether an algorithm will work without trying it out. But algorithm selection also depends on the size and type of data you’re working with, the insights you want to get from the data, and how those insights will be used.
FREE EBOOKLET
Figure 3. Machine learning techniques.
Here are some guidelines on choosing between supervised and unsupervised machine learning:
- Choose supervised learning if you need to train a model to make a prediction—for example, the future value of a continuous variable, such as temperature or a stock price, or a classification—for example, identify makes of cars from webcam video footage.
- Choose unsupervised learning if you need to explore your data and want to train a model to find a good internal representation, such as splitting data up into clusters.
Top Deep Learning Frameworks
1. TensorFlow
Google’s open-source platform TensorFlow is perhaps the most popular tool for Machine Learning and Deep Learning. TensorFlow is JavaScript-based and comes equipped with a wide range of tools and community resources that facilitate easy training and deploying ML/DL models. While the core tool allows you to build and deploy models on browsers, you can use TensorFlow Lite to deploy models on mobile or embedded devices. Also, if you wish to train, build, and deploy ML/DL models in large production environments, TensorFlow Extended serves the purpose.
What you need to know:
- Although there are numerous experimental interfaces available in JavaScript, C++, C #, Java, Go, and Julia, Python is the most preferred programming language for working with TensorFlow.
- Apart from running and deploying models on powerful computing clusters, TensorFlow can also run models on mobile platforms (iOS and Android).
- TensorFlow demands extensive coding, and it operates with a static computation graph. So, you will first need to define the graph and then run the calculations. In case of any changes in the model architecture, you will have to re-train the model.
The TensorFlow Advantage:
- TensorFlow is best suited for developing DL models and experimenting with Deep Learning architectures.
- It is used for data integration functions, including inputting graphs, SQL tables, and images together.
2. PyTorch
PyTorch is an open-source Deep Learning framework developed by Facebook. It is based on the Torch library and was designed with one primary aim – to expedite the entire process from research prototyping to production deployment. What’s interesting about PyTorch is that it has a C++ frontend atop a Python interface.
While the frontend serves as the core ground for model development, the torch.distributed” backend promotes scalable distributed training and performance optimization in both research and production.
How it is different from Tensorflow?
What you need to know:
- PyTorch allows you to use standard debuggers like PDB or PyCharm.
- It operates with a dynamically updated graph, meaning that you can make the necessary changes to the model architecture during the training process itself.
The PyTorch advantage:
- It is excellent for training, building, deploying small projects and prototypes.
- It is extensively used for Deep Learning applications like natural language processing and computer vision.
3. Keras
Another open-source Deep Learning framework on our list is Keras. This nifty tool can run on top of TensorFlow, Theano, Microsoft Cognitive Toolkit, and PlaidML. The USP of Keras is its speed – it comes with built-in support for data parallelism, and hence, it can process massive volumes of data while accelerating the training time for models. As it is written in Python, it is incredibly easy-to-use and extensible.
What you need to know:
- While Keras performs brilliantly for high-level computations, low-level computation isn’t its strong suit. For low-level computations, Keras uses a different library called “backend.”
- When it comes to prototyping, Keras has limitations. If you wish to build large DL models in Keras, you will have to make do with single-line functions. This aspect renders Keras much less configurable.
The Keras advantage:
- It is excellent for beginners who have just started their journey in this field. It allows for easy learning and prototyping simple concepts.
- It promotes fast experimentation with deep neural networks.
- It helps to write readable and precise code.
4. Sonnet
Developed by DeepMind, Sonnet is a high-level library designed for building complex neural network structures in TensorFlow. As you can guess, this Deep Learning framework is built on top of TensorFlow. Sonnet aims to develop and create the primary Python objects corresponding to a specific part of a neural network.
These objects are then independently connected to the computational TensorFlow graph. This process of independently creating Python objects and linking them to a graph helps to simplify the design of high-level architectures.
What you need to know:
- Sonnet offers a simple yet powerful programming model built around a single concept – “snt.Module.” These modules are essentially self-contained and decoupled from one another.
- Although Sonnet ships with many predefined modules like snt.Linear, snt.Conv2D, snt.BatchNorm, along with some predefined networks of modules (for example, snt.nets.MLP), users can build their own modules.
The Sonnet advantage:
- Sonnet allows you to write modules that can declare other submodules internally or can pass to other modules during the construction process.
- Since Sonnet is explicitly designed to work with TensorFlow, you can easily access its underlying details, including Tensors and variable_scopes.
- The models created with Sonnet can be integrated with raw TF code and also those written in other high-level libraries.
5. MXNet
MXNet is an open-source Deep Learning framework designed to train and deploy deep neurall networks Since it is highly scalable, it promotes fast model training. Apart from flaunting a flexible programming model, it also supports multiple programming languages, including C++, Python, Julia, Matlab, JavaScript, Go, R, Scala, Perl, and Wolfram.
What you need to know:
- MXNet is portable and can scale to multiple GPUs as well as various machines.
- It is a lean, flexible, and scalable Deep Learning framework with support for state-of-the-art DL models such as convolutional neural networks (CNNs) and long short-term memory networks (LSTMs).
The MXNet advantage:
- It supports multiple GPUs along with fast context switching and optimized computation.
- It supports both imperative and symbolic programming, thereby allowing developers to choose their desired programming approach to building deep learning models.
Drop your comment