Decoding Deep Learning: An Introductory Guide to Neural Networks
Tags: machinelearning, deeplearning, tutorial, ai
Published: 2023-12-09 13:07:36

Deep Learning has become a pivotal driving force in reshaping the technology landscape, empowering advancements in image analysis, text interpretation, and the development of Generative AI. 

The global Deep Learning market size is projected to grow from $17.60 billion in 2023 to $188.58 billion by 2030, at a CAGR of 40.3% during the forecast period [1]. While it might initially appear complex, Deep Learning basics are pretty straightforward. 

This article aims to cover the basics of Neural Networks and Deep Learning for beginners.

## What is Deep Learning?

Deep Learning is a subset of artificial intelligence (AI) that employs advanced algorithms to discern intricate patterns in data, primarily through multi-layered neural networks. Deep Learning offers the inherent ability to simultaneously process **multi-modal** data, such as text, images, and audio, through specialised architectures that extract patterns from different modalities. It further enables **end-to-end learning**. End-to-end learning involves training neural networks to directly transform raw input data into desired output, eliminating the need for manual feature engineering or intermediate processing steps. For example, in natural language processing, end-to-end learning can involve training a neural network to directly translate one language into another without requiring explicit linguistic feature extraction or rule-based translation systems. In computer vision, end-to-end learning can enable a neural network to take raw image data and output information about objects or scenes, bypassing manual image preprocessing steps.  This streamlined approach allows deep learning models to learn the most relevant features and representations from the data without requiring feature engineering. It is particularly well-suited for tasks where traditional, multi-stage processing pipelines may be cumbersome or less effective.

The applications of Deep Learning are diverse and far-reaching - from enabling autonomous vehicles to medical diagnostics. Deep Learning has enabled exponential advancements in the realm of Generative AI, which can generate new data - from realistic images to chatbots that generate human-like responses.

## Neural Networks  - Building Blocks of Deep Learning

Neural networks draw inspiration from how the human brain operates, especially how biological neurons manage data. In the brain, neurons receive, process, and transmit information, forming the fundamental basis for thinking and learning.

Neural Networks are composed of layers that act as distinct stages of information processing. As data progresses from one layer to the next, it transforms, with each layer contributing to the final decision or prediction made by the network. 

**Common layer types**

**Input layer:** This initial layer interfaces with the provided data. It takes in the raw information, be it pixels from an image, values from a dataset, or any other form of data, and forwards it to subsequent layers for processing. The number of neurons in this layer corresponds to the number of features or inputs in the dataset. This layer does not perform any computation on the input data
  
**Hidden layer:**  Hidden layers are positioned between the input and output layers. Hidden layers are where the majority of computation occurs. They transform the data from the input layer and pass it on to another hidden layer or the output layer. The depth of a Neural Network often refers to the number of these hidden layers. Commonly used hidden layers include:

- Dense Layer: Dense or Fully Connected Layers are the most common layers in feedforward neural networks. Neurons in a dense layer are connected to **all** neurons in the previous layer. They are responsible for learning and representing complex patterns in the data.
- Convolutional layers: Mainly used in image processing tasks, they are specialised for spatial hierarchies in data. Using a mathematical operation called convolution, they can detect local patterns like edges, textures, and shapes in images. They are fundamental to Convolutional Neural Networks (CNNs), often used in image recognition and classification tasks.
- Pooling Layer: They are generally used in conjunction with convolution layers and reduce the spatial dimensions of the feature maps, which helps reduce computation and control for overfitting.
- Recurrent layer: These layers are tailored for sequential data, like time series or natural language. Unlike traditional layers, recurrent layers maintain a form of memory from their previous outputs, which allows them to make decisions influenced by a sequence of data rather than individual data points. Recurrent Neural Networks (RNNs), which use these layers, are beneficial for tasks like language modelling, speech recognition, and time series forecasting.
Advanced NN architectures include the Dropout Layer, Long short-term memory (LSTM), and Gated recurrent unit (GRU) layer.
  
**Output layer:** The final layer in the sequence delivers the result. Depending on the network's design and function, this result can be a single value, a set of values, a category label, or even a complex data structure.

So, layers are the building blocks of Neural Networks. Each serves a unique purpose, ensuring the network can process various data types and perform different tasks.

![Fully Connected NN](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2b5yo4u05vgihu2u5zee.PNG)


## Neurons - Building Blocks of Neural Networks
Each layer comprises a group of **neurons** that generally utilise non-linear functions to transform the data. Three critical components define the behaviour of each neuron -  **weights, biases and the activation function**. Weights determine the significance of input data as a neuron processes it. In simple terms, weights amplify or dampen the input. Biases, on the other hand, are additional parameters that ensure neurons have a non-zero value when activated, even if all their input data is zero. The activation function, which is generally non-linear, enables the network to approximate and represent a wide range of functions and, hence, learn complex patterns in data.

Overall, understanding a Neural Network's anatomy involves recognising its layers' purpose and function, the neurons within those layers, and the critical role weights and biases play in processing and refining information.



![Neuron](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2v3s5ss2w12w5p1huuel.PNG)


## Training a Neural Network
Neural networks learn the underlying parameters of the model via an iterative process in which the calculations are carried out forward and backwards through the network until the desired level of accuracy is attained.

**Forward Propagation**
This is the first phase of training, where the input data is passed through the Neural Network. This result is then compared to the actual desired output to compute the error (loss) between the actual and model outputs.
  
**Backward Propagation** 
Backward propagation involves calculating the gradient of the loss with respect to each model parameter (weight and bias). This gradient represents the sensitivity of the loss to changes in each parameter. With this gradient, the model parameters (weights and biases) are adjusted in reverse order, starting from the output layer and working back to the input layer

![Forward and Backward Propogation](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a4qninhqyr7tml05l41o.PNG)

**Loss Functions**
These assess the performance of a Neural Network by measuring the disparity between its predictions and the actual values. Commonly used loss functions include Mean Squared Error for regression tasks and Cross-Entropy for classification tasks. The main goal of training is to minimise this loss value, which means that the model's predictions are getting closer to the actual values.
  
**Optimisation** 
Optimisation algorithms adjust the weights and biases in the network to minimise the loss. One of the most popular optimisation techniques is Gradient Descent, where the model iteratively updates its parameters in the direction that reduces the loss. Variants of Gradient Descent, like Stochastic Gradient Descent and Adam, offer more nuanced approaches to this adjustment process.

Training a Neural Network is an iterative process of prediction, evaluation, and refinement. By adjusting its internal parameters in response to training data, the network tries to produce outputs that closely match the actual results.


## How does this all look in practice?

Let us examine a basic deep-learning task: classifying handwritten numbers using the well-known MNIST dataset. This collection contains grayscale images of handwritten digits from 0 to 9 and is a standard reference for testing Neural Network models.

_Objective:_ To build a Neural Network model that can accurately identify and classify images of handwritten digits.

_Data Preparation:_ The MNIST dataset is split into training and testing sets. Each image is 28x28 pixels and represents a flattened array of 784 values (28 multiplied by 28). These values, ranging from 0 to 255, represent pixel intensities. To make computations more stable, the pixel values are normalised to range between 0 and 1.

_Network Architecture:_ Our primary Neural Network consists of the:
   - An input layer with 784 nodes (corresponding to the 784-pixel values).
   - A hidden layer with 128 nodes and a ReLU (Rectified Linear Unit) activation function.
   - An output layer with ten nodes (representing digits 0–9) and a softmax activation function to provide classification probabilities.

_Forward and Backward Propagation:_ As previously discussed, the model initialises with forward propagation to produce outputs, then backward propagation to adjust weights and biases.

_Loss Function:_ Given this classification problem, we use the Cross-Entropy loss function.

_Optimisation:_ For this example, we will use the Adam optimiser, known for its efficiency.

Training iterations: The model is trained over multiple iterations (often called epochs). After each epoch, the model's performance on a validation set can be assessed to avoid overfitting.

**Tech solutions and tools:**

TensorFlow: This open-source framework developed by Google offers several tools for building and training Machine Learning models. For our handwritten digit classification, TensorFlow provides predefined functions and structures that simplify the model-building process.

PyTorch: This tool, developed by Facebook's AI Research lab, is another popular framework for Deep Learning. PyTorch offers an adaptable and straightforward approach, making it an excellent alternative to TensorFlow for Neural Network tasks.

{% gist https://gist.github.com/SalK91/455a18b5b5e08c7a34fb372bf37029db.js %}

## Final thoughts and suggestions

Neural Networks are central to current technological breakthroughs, including Generative AI. We have covered their core components and the detailed training process. For those just starting, this is only the beginning. A vast field of application and innovation remains to be explored.

For further learning, you can find information in multiple sources:

Books:  "Deep Learning" by Ian Goodfellow, Yoshua Bengio, and Aaron Courville as your first step.

Online courses: Platforms like Coursera or Udemy offer detailed courses on the subject.

Communities: Use platforms like Stack Overflow or dedicated subreddits to discuss and learn.

Deep Learning is expansive and constantly evolving. Embrace the challenge and get the results.

References:
https://www.fortunebusinessinsights.com/deep-learning-market-107801