This is the release where the subset of Machine Learning called Deep Learning begins and there is an introduction to the kind of artificial intelligence seen in movies.

## How exactly are Artificial Intelligence, Deep Learning and Machine Learning related?

These neural networks come from the branch of computer science called Deep Learning. Deep learning is a subset of machine learning which provides the ability to machine to perform human-like tasks without human involvement.

Neural Network is a buzzword heard everywhere today and shown in movies with images.

In reality, these are algorithms with some maths behind them that do specific tasks on given datasets. These neural networks were inspired by the functioning of the human brain. Just like our brain perceives and processes data from all around us so do Neural Networks. These Neural Networks take large datasets and figure out patterns from them to produce the desired output.

Neural Networks are also called ANNs (Artificial Neural Networks). They are computational models that work on everything from voice recognition, and image recognition to Robotics.

The term Neural comes from the human brainâ€™s Neurons and the word Network is used because a bunch of artificial neuron layers are combined together as a network to get the output.

ANNs learn just like a child by taking and studying the examples given. Each ANN algorithm is specifically curated for different applications but the basic maths behind them remains the same.

Neural Networks are used because a neural network once trained can be an expert in the type of information it is given to analyse. These neural networks can create their own representation of information received during the learning time.

### Each neural network is made of certain layers. The 3 main types of layers are

- Input Layer: Here raw information is taken in by the network.
- Hidden Layer: Each hidden layer performs certain activities that vary the weights and biases and create connections with the output layer.
- Output Layer: This is the output given by the neural network.

This is a broad idea of how a neural network looks.

In programming terms, ANNs are weighted directed graphs with each neuron as a node and edges are connections with specific weights. Usually, the inputs are in the form of a vector or matrix which is denoted by x(n) where n is the number of inputs.

Each input is multiplied by a weight. These** weights** are information used by neural networks to solve a problem. These weights are **summed up** inside the **artificial neuron**. Just in case the sum of all weights becomes zero a **bias **is given to scale up the system. This sum can be any value between 0 and infinity and to limit these **activation functions** are used.

These activation functions help mold the data into the desired output. There are various types of linear and non-linear activation functions.

### Neural Networks can be used for different tasks.

- Classification Neural Networks: These are used to classify patterns or images into predefined classes. Example: Looking at handwritten digits and classifying them into a digit.
- Prediction Neural Networks: Neural networks are trained to give a prediction example: stock market predictors.
- Clustering Neural Networks: These neural networks identify unique parts of the dataset and cluster them into various classes without having predefined labels.

There are more types such as GANs which are very powerful neural networks capable of synthesising their own data.

To run such Neural Networks heavy computation power is also needed for this GPUs and TPUs are used. Generally for image classification algorithms and object detection algorithms, GPUs are used.

### Training the Algorithms:

By default, the neural network goes from the input layer to the output layer in an almost linear manner and at every layer weights and/or biases are added. For properly learning to take place the neural networks are trained first with a set of rules.

### This is achieved using one of 2 major methods:

- Gradient Descent Algorithm: This is the most basic training algorithm for supervised learning algorithms where the algorithm finds the difference between actual output and output given by the neural network and tried to minimize the errors.
- Back Propagation Algorithm: This is an extension of gradient descent where after the error is found it is sent back to the input layer via a hidden layer. This is used in multilayered networks.

Once the neural network is trained it becomes an expert in that particular category and can start giving outputs for the test datasets.