What is Neural Network?

Hello Learners! Welcome to the next lecture on deep learning. We have read the detailed introduction to deep learning and are moving forward with the introduction of the neural network. I am excited to tell you about the neural network because of the interesting and fantastic applications of neural networks in real life. Here are the topics of today that will be covered in this lecture:

  • What do we mean by the neural network?

  • How can we know about the structure of the neural network?

  • What are the basic types of neural networks?

  • What are some applications of these networks?

  • Give an example of a case where we are implementing neural networks.

Artificial intelligence has numerous features that make it special and magical in different ways, and we will be exploring many of them in different ways in this course. So, first of all, let us start with the introduction.

Neural Network

Have you ever observed that your favorite videos are shown to you on Facebook or other social media platforms? Or does the advertisement for the product you are searching for pop up when using the phone applications? All of these are because of the artificial intelligence of the system that is running in the backend of the app and we have discussed it many times before. 

To understand well about the neural network, let us discuss the inspiration and the model that has resulted in the formation of the neural network. We all have the idea of the neural network of the human brain. We are the best creation because of the complex and the best brain that calculates, estimate, and predict the results of the repeating processes in a better way. The same is the case with the neural network of computer systems. We have discussed the basic structure of the neural network many times but now, it's time to know about the structure of the neural network. 

Structure of Neural Network

I always wonder how the answering software and apps such as Siri reply to us accurately and without any delay. The answer to this question was found in the workings and architecture of the network working behind this beautiful voice. I do not want to start the biology class here, but for proper understanding, I have to discuss the process when we hear a voice and understand it through the brain.

When we hear a sound in the surroundings, it is first caught by the ear, and this raw audio is acting as an input for the nerve of the ear. These nerves then pass this signal to the next layers that in return, pass these signals further to the next layers.

The layer makes the result more refined and accurate. Finally, the last layer reaches the brain where the brain makes the decision to respond. The same process is used in the neural network. This statement will be clear to you how it works, but for that, you have to know about the seven types of neural networks.

  1. Feed Forward Neural Network

  2. Recurrent Neural Network

  3. Radial Basis Function (RBF) Neural Network

  4. Convolution Neural Network

  5. Modular Neural Network

  6. Kohonen Self-organizing Neural Network

  7. Multi-Layer Perception

Feed Forward Neural Network

Let me start with the very basic type of neural network so that you may understand it slowly and gradually. The workings of this network are related to its name. The motion of the information or the nerves is unidirectional, and the process is ended in the output. In this type, there is no way to move a neural nerve backwards and train the previous layer. The basic application of this type of network is found in face recognition and related projects, people who are interested in the applications such as speech recognition prefer to choose this type of network to avoid the complexity.

 Radial Basis Function (RBF) Neural Network

This layer includes the radial function. The working of this function will be clearer when you know about the structure of this layer. Usually, this network has two layers:

  • Hidden Layer

  • Output Layer

The radial function is present in the hidden layer. The function is proved helpful in reasonable interpolation during the process in which the data is fitted into the layers. The layer works by measuring the distance of the nerve from the distance of the central part of the network. For the best implementation, this network checks for all types of data points and groups similar data points. In this way, this type of network can be used to make the systems such as power restoration. 

Recurrent Neural Network

As you can guess from the name of this network, it has the ability to recur. It is my favourite type of neural network because it learns from the previous layer, and the data is used to predict the output in a precise way. This is one of the main layers, and its work has been discussed many times in this tutorial.

Contrary to the first type of neural network that we have discussed before, the information can be recurred or moved to the previous layer. Here are some important points about this layer:

  • The first layer is a simple feed-forward layer. In other words, it can not move to the previous layer. 

  • Each layer transmits the data to the next layer unidirectional in the first phase. 

  • If during the transmission of data, the layer is predicting inaccurate results then it is the responsibility of the network to learn by repeating the saving of data. 

  • The main building block of this network is the process of saving the data into the memory and then working automatically to get accurate results. 

  • It is widely used in the text to speech conversations.

Convolution Neural Network

Now coming towards an important type of neural network that has a scope worldwide and engineers are working day and night in this field because of the interesting and beneficial applications of this network. Before going deep into the definition of this network, I must clarify what exactly a convolution is. It is the process of filtering the results in a way that can be used to enable activation. The filtering mechanism is repeating and therefore, it yields the perfect results all the time. Usually, it is used in image processing, natural language processing, and similar tasks because it breaks the image into parts and then represents the results according to the choice of the user. It is one of the classical techniques that are used for different purposes when people are working on images, videos, or other related projects. For example, if you want to find the edges or details of the images to replace or edit them in a better way, then this technique will be helpful all the time because, through it, you can play with the images and the components of the images as we are using the pixels for our purpose. If these things seem difficult or complex to you at the moment, do not worry, because all the things will be cleared with the passage of time.

Modular Neural Network

Modularity is considered the basic building block of the neural network. It is the process of dividing complex tasks into different modules or parts and solving them individually so that in the end, the results may be combined together and, finally, we get the accurate ending. It is a faster way of working. You can understand well by considering the example of the human brain, which is divided into the left and right sides and, therefore, can work simultaneously. There are different tasks that are assigned to each part and they work best in their duties.

Kohonen Self-organizing Neural Network

Random input vectors are fed into a discrete map of neurons. Dimensions and planes are other names for vectors. Its applications include recognizing patterns in data, such as in medical analysis.

Multi-Layer Perception

Here, I am now discussing the type of network that has more than one hidden layer. It is a little bit complex, but if you have an idea of the cases discussed before, you will easily understand this one. The purpose of using this network is to provide the type of data that is not linearly separable. There are several functions that can be used while working on this network. The interesting thing about this network is, it consists of a non-linear activation function for work.

Here n is the number of the last layer, which can be from 0 to any number according to the complexity of the network. A more useful network contains more layers and in return, is more useful usually.  

Example of Recurrent Neural Network

At the moment, I want to discuss an example of this network because it has a slightly different type of work, and I hope that with the help of this example, you will get the concept of what I am trying to teach you, Consider the case where we want to talk to the personal assistance in our divide and on the practical implementation, it is a simple task of few seconds yet at the backend, there is a long procedure that is being followed so that you may get the required results. Here is a simple sentence that is to be asked of the personal assistant. 

The first step of the network is to divide the whole sentence into words so that these can be scanned easily. 

We all know that each word has a specific pattern of sound, and therefore, the word is then sampled into the discrete sound waves. Let me revise that "discrete sound signals are the ones that consists of discontinuous points. We get the results in the following form.

Now, it is the time when the system further divides the single word into a single alphabet. As you can see in the image given above, each alphabet has a specific amplitude. In this way, the values of different alphabets are obtained and this data is then stored in the array. 

In the next step, the whole data obtained is then fed into the input layer of the network and here the working of recurrent neural network stars. By passing through the input layer, each weight of the alphabet is assigned to the interconnection between the input layer and the hidden layer of the network. At this moment, we need a transfer function that is calculated with the help of the following formula:

In the hidden layers, the weights get assigned to the hidden layers. This process continues for all types of layers, and as we know, the output of the first layer is used as the input by the second layer, and this process continues until the last layer. But keep in mind, this process is only for the hidden layers.

While using speech recognition with the help of the neural network, we use different types of terms, and some of them are :

  1. Acoustic model

  2. Lexicon

By the same token, there are different types of exits. I am not going to explain these terms right now because it is unnecessary to discuss them at the moment. 

In the end, we are reaching the conclusion that neural networks are amazing to learn and interesting to understand while working with deep learning. You will get all the necessary information about these networks in this course. We started with the basic introduction of the neural network and saw the structure of the network in detail. Moreover, we found the types of neural networks in detail and all the basic networks are discussed here so that you may compare well why we are using these networks and what type of network will be best for you for learning and training. We suggest feed-forward neural networks for basic use, and you will see the reason behind this suggestion in our coming lecture. Till then, you have to search for other networks; if you find any, discuss them with us. In the next lecture, you will learn about deep learning and neural networks, so stay tuned with us.

Getting Started with Deep Learning

Hello students, welcome to the second tutorial on deep learning in the first one, we have learned the simplest but basic introduction of deep learning to have a solid base about what we are actually going to do with deep learning. In the present lecture, we will take this to the advanced level and will learn the introduction with the intention of learning more and more about the introduction and understanding what we want to learn and how will we implement the concepts easily. So, here is a quick glance at the concepts that will be cleared today:

  • What do we mean by Deep learning?

  • What is the structure of calculation in neural networks?

  • How can you examine the Neural Networks?

  • What are some platforms of deep learning?

  • Why did we choose TensorFlow?

  • How can you work with TensorFlow?

Deep Learning as the Sub-branch of AI

As we have said earlier, artificial intelligence is the field that works to take the tasks and work of the human being from the computer that is, the computer act like the human. Computers are expected to think. It is a revolutionary branch of science that deals with the feeding of the intelligence of a human being in the computer for the welfare of mankind and with the passage of time, it is proving itself successful in the real world. With the advancement and enhancement of the complexity of artificial intelligence, the field is divided into different branches therefore, AI has a branch named machine learning and then it is subdivided into deep learning. The main focus of this course is deep learning therefore, we describe it in detail. 

Calculations in Neural Network

All this discussion was to tell you about the basics and the important introduction of deep learning and if it is still not clear to you then do not worry because by getting the information about it throughout the series you will start practising, things will be cleared here. 

We have seen the discussion about the neural network before but it was just related to the concept of the weights in the neural network. In the present tutorial, you are going to see another concept about the neural network and the proper working on these networks will be started in the coming sessions.

The neural network is just like the multiple layers of the human brain that contain the input layer where the data is fed in different ways according to the requirement of the network. Moreover, the multiple layers are responsible for the proper training process again and again in such a way that every second layer is more mature and accurate than the first one and in this way, the last one has the most accurate data among the others and this is then fed into the output layer where we can get the results. All these processes occur in a sequence while we are working on the neural network and it is listed below:

In the first step, the product is calculated by keeping the weight of each channel and the value of the input in mind. 

  • The sum of all the products obtained is then calculated and this is called the weighted sum of the layers. 

  • In the next step, the bias of added to the resultant calculation according to the estimation of the neural network.

  • In the final step, the sum is then subjected to the particular function that is named the activation function. 

Working of Neural Network 

As we have mentioned the steps, we know that it is not clear that much now in your mind therefore, we are discussing an example of this. By keeping all the steps in mind, we are now working on the practical application of working on a neural network.

We are considering the example in which the 28*28 pixel of an image is observed for its shape. Each pixel is considered as the input for the neurons of the first layer. 

The first step is then calculated by using the formula given below:

x1*w1 + x2*w2 + b1

We have taken the simple text example but added the process of each layer with the product of corresponding weight occurs till you reach the last layer. The next step here is calculated as:

Φ(x1* w1 + x2*w2 + b1)

Here the Φ sign indicates the presence of the activation function as mentioned above in the steps. Now, these steps are performed again and again according to the complexity of the task and training until all the inner layers are calculated well and the results are reached by the output layer and we get the results. An interesting thing here is the presence of a single neuron in the last layer that contain the result of the calculation to be shown as the output. The detail of how the neural network work will be discussed in the next tutorials. For now, just understand the outputs. 

Platforms for Deep Learning

It seems that you are now ready to move forward. Till now, you were learning what is deep learning and why it is useful but now, you are going to learn how can you use deep learning for different tasks. If you are a programmer you must know that there are different platforms that provide the platform for the compilation ad working of the programming language and these are specific to the limited programming languages.

For deep learning, there are certain platforms that are used worldwide and the most important one will be disused here:

TensorFlow

TensorFlow is one of the most powerful platforms specially designed for machine learning and deep learning and it is a free source software library. Although it is a multi-purpose platform it has special features that are used to train machine learning and deep learning projects. You can have an idea of its popularity by the fact that it is presented by the google brain team and it contains the perfect functionality. 

DL4J

The full form of DL4J is Deep Learning For You and as you can guess, it is specialized for deep learning and is written in java for the java virtual machine. Many people prefer this library because of its lightweight and specific design for deep learning.

Torch

If you are wondering if we are talking about a device then it is not true. Torch is an open-source library for deep learning and it provides the algorithm for the working of deep learning projects.

Keras

It is the API that is written in the TensorFlow deep learning platform. It is used for the best practice and experience for deep learning experts. The purpose of using this API is to have a clean, easy, and more reusable result of the code in less time. You will see this with the help of examples in the next sessions. 

Why Choosing TensorFlow

As you can guess, we have chosen TensorFlow for our tutorial and lectures because of some important reasons that we’ll share with you. For these classes, I have tested a lot of software that was specially designed for deep learning as I have mentioned some of them. Yet, I found TensorFlow most suitable for our task and therefore, I want to tell you the core reasons behind this choice.

Easy to Built the Models

You will see that the training and other phases depend upon different models this is super easy to do with the help of TensorFlow. The main reason is, it provides multi-level models so that the one that suits you best will be present for you all the time according to the complexity and working of your project. As we have mentioned earlier, the Keras API is used with TensorFlow therefore, the high-level performance of both of them results in marvelous projects.

Easiest Production in Machine Learning Anywhere

In machine learning and related branches such as deep learning, production is made easiest with the help of the fantastic performance of TensorFlow. It always provides the perfect path towards production and results. It also allows us to have the independence of using different languages and platforms and therefore, it attracts a large audience towards itself. 

A Powerful Tool for Experimentation

What is more important in research than perfect experimentation? Tensorflow is always here for the multiple types of experimentation and research options so that you may test your project in different ways and get the best results through a single software. The advantage of the presence of multiple APIs and the availability of handling several languages makes it best for experimentation.

Another advantage of choosing it for the tutorial is, it supports powerful add-on libraries and interesting models, therefore, it will become easy for us to experiment more and explain the results in a different way to approach all types of students. 

These are some highlighted points that attracted us towards this software but overall, it has a lot in it and you will understand the points when you will see all of them in action in this series, We will be working totally on the TensorFlow and will discuss each and every step in detail without skipping any single step. The practical performance of each step will lead you to move forward with more interest and to understand each concept, we will use different examples. Yet, I have an idea that more explanation makes the discussion confusing so there will be a balance in the explanation.

Working With TensorFlow

As we have described before, TensorFlow is introduced by the google brain team and it was closely collaborating with the machine learning research organization.

TensorFlow is the software library that works in the collaboration with some other libraries for the best implementations of deep learning projects and you will see its work and projects in detail soon when we will move forward in this series. There are different libraries that are important to attach with the TensorFlow when we try to make it ready for the working of deep learning. Some of them are listed below:

  • Python package Index

  • Django

  • Scipy

  • Numpy

Following are the steps that are used to work on the TensorFlow. Yet, keep in mind, these steps vary according to the need of the time and type of the project.

  • Import the libraries in TensorFlow.

  • Assign paths of data sets. It is important to provide the path to column variables as well. 

  • Create the test and train data and for this, use the Pandas library.

  • In the next step, the shape of the test and train data is printed. 

  • For the training data sheet, the data type is printed for each column. 

  • Set the label column values of the data.

  • You have to cunt the total number of unique values related to the datasheets.

  • Add features for the different types of variables. 

  • Built the relationship for the features with a bucket. 

  • Add features for the proper definition of the features. 

  • Train and evaluate the model. 

  • Predict the model and set the output to the test set. 

Do not worry if these steps are new to you or if they are confusing for you at the moment, you will see the detail of them in the coming future. Moreover, Some of these steps may be different for different people because coding is a vast area and therefore, it has multiple ways to work in a different environments. So, today we learnt several concepts through this single lecture. We have revised and added some other information in the introduction of deep learning, We also have a discussion about neural networks and saw it working. Moreover, the platforms of deep learning were discussed here out of which, we chose the tensor flow and the reason for this choice was also explained well with the help of different points. In the end, we saw the brief procedure to train and predict the project and you will see all these concepts in action in the coming lectures so stay tuned with us.

Introduction to Deep Learning

Hello friends, I hope you all are having fun. Today, we are bringing you one of the most advanced and trending courses named "Deep Learning". Today, I am sharing the first tutorial, so we will discuss the basic Introduction to Deep Learning, and in my upcoming lectures, we will explore complex concepts related to it. Deep Learning has an extensive range of applications and trends and is normally used in advanced research. So, no matter which field you belong to, you can easily understand all the details with simple reading and practicing. So without any further delay, let me show you the topics that we are going to cover today:

  • What is deep learning?
  • What are artificial intelligence and machine learning?
  • Working with deep learning using neural networks.
  • Trends in deep learning.
  • Deep learning as a career.

So, let's get started:

What is Deep Learning?

  • Deep Learning is a branch of machine learning, that enables machines to think like a human brain, by using neural networks.
  • Using Deep Learning techniques, machines get smart and recognize the pattern from the data already saved/fed in the database and then use this data for the prediction of future results.
  • So, we can say that the deep learning neural network has the ability to learn from the previous results and predict the behavior of the network.
  • Deep learning algorithms have multiple layers to analyze the millions of data points.
  • An automatic Driverless car is an excellent real-life application of Deep Learning.

Deep Learning is considered a branch of Machine Learning which itself comes under Artificial Intelligence. So, let's have a look at these two cornerstone concepts in the computing world:

What is Artificial Intelligence?

Artificial intelligence or AI is the science/engineering behind the creation of intelligent machines, particularly intelligent computer programs. It enables computers to understand human intelligence and behave like it. AI has a broader expertise and does not have to limit itself to biologically observable methods as in deep learning.

It is a field that combines the computer and the robust data set to solve the problems of life. Moreover, it is important here to mention the definition of machine learning:

What is Machine Learning?

Machine learning is the branch of artificial intelligence, it learns from the experience and data fed into it and works intelligently on its own without the instruction of the human being. For instance, the news feed that arises on Facebook is directed by machine learning on the data so the content of the user’s choice appears every time when they scroll Facebook. As you put more and more data into the machine, it will learn in a better way to provide intelligent results.

Deep Learning Working Principle

Deep learning uses neural network techniques to analyze the data. The best way to describe the neural network is to relate it to the cells of the brain. A neural network is the layers of nodes much like the network in our brain and all these nodes are connected to each other either directly or indirectly. Neural Network has multiple layers to refine the output and it gets deeper as the number of layers increases.

Deep Learning vs. Human Brain

In the human brain, each neuron is able to receive hundreds or thousands of signals from the other neurons and selects signals based on priority. Similarly, in deep learning networks, the signals travel from node to node according to the weight assigned to them. In this way, the neurons with the heavyweight have more effect on the adjacent layer. This process flows through all the layers and the final layer compiles the weight of the resultant and produces the output.

The human brain learns from its experience i.e. as you get old, you get wiser. Similarly, deep learning has the ability to learn from its mistakes and keeps on evolving.

The process of network formation and its working is so complex that it requires powerful machines and computers to perform complex mathematical operations and calculations. Even if you have a powerful tool and computer, it takes weeks to train the neurons.

Another thing that is important to mention here is that neural network works on binary numbers only. So, when the data is being processed, it classifies the answers as a series of binary numbers and performs highly complex calculations. Face recognition is the best example in this regard because in this process, the machine examines the edges and lines of the face to be recognized and it also saves the information of more significant facial parts.

Layers in Deep Learning

Understanding the layers in deep learning is important to get an idea of the complex structure of deep learning neural networks. The neurons in the deep learning architecture are not scattered but are arranged in a civilized format in different layers. These layers are broadly classified into three groups:

  1. Input layer
  2. Hidden layers
  3. Output layer

The working of each neural network in deep learning depends on the arrangement and structure of these layers. Here is a general overview of each layer:

Input Layer

This is the first layer of the neural network and takes the information in the form of raw data. The data may be in the form of text, values, images, or other formats and may be arranged in large datasets. This layer takes the data and applies processing to make it ready for the hidden layers. Every neural network can have one or many input layers.

Hidden Layer

The main processing of data occurs in the hidden layers of the neural networks. These are crucial layers because they provide the processing necessary to learn the complex relationship between the input feature layer and the required output layer.

There are a great number of neurons in the hidden layers, and the number of hidden layers varies according to the complexity of the task and the type of neural network. These layers perform operations such as improved accuracy, feature extraction, representation learning, etc.

Output Layer

These are the final layers responsible for the production of the network’s predictions. A neural network may have one or more output layers, and the activation function of the network depends on the type of problem to be solved in the network. One such example is the softmax activation function, which divides the output according to the probability distribution over different classes.

Training of Deep Learning Process

To understand well, usually, the example of object or person recognition is explained to the students. Let's say, we want to recognize or detect a cat in the picture. We know that different races of cats do not look alike. Some of them are fluffy, some are short, and some are thin in appearance. By the same token, the different angles of the images of the same cat will not be the same and the computer may be confused to recognize these cases. Therefore, the training process includes the amount of light and the shadow of the object in the observation.

In order to train a deep-learning machine to recognize a cat, the following main procedures are included:

  • Using several pictures of cats of different races from different angles.
  • Using the pictures of the other objects that are not cats and telling the network the information about these.
  • Labeling all the images and commanding the compiler to save their data.
  • Feeding all the data into the neural network and compiling the results.
  • The final layer compiles the disconnected results such as the hair type, size, features of the face, etc.
  • Once all the data is fed into the network, the results are then compared with the human-generated labels.
  • If both labels give the same results, the neural network is then considered as trained.
  • On the other hand, if the results are not the same, then the weights are calculated again and the training process is repeated.
  • The process of repeating the adjustments is known as supervised learning, and it occurs even when the neural networks are not explicitly told what "makes" a cat. They must learn on their own and recognize patterns in data over time.

Deep Learning Applications

In the modern computing world, deep learning has a wide range of applications in almost every field. We have mentioned a few examples in our above discussion i.e. Facebook newsfeed and driverless cars. Let's have a look at a few other services utilizing deep learning techniques:

Digital Assistance 

Digital assistants i.e. voice recognition, facial recognition, text-to-speech conversion, voice-to-text conversion, language translation, plagiarism checker etc. are using deep learning techniques to recognize the voice or to process languages. Grammarly, Copyscape, Ahrefs etc. are a few real-life examples using Deep Learning techniques.

Safe Banking

Paypal is using deep learning to prevent fraud and illegal transactions. This is one of the most common examples of the banking facility that I am mentioning here otherwise, there are different applications in security and privacy that are connected to deep learning. 

Object Recognition

Some object recognition applications such as CamFind allow the user to use pictures of the objects and with the help of mobile vision technology, these apps can easily understand what type of objects have been captured.

Self-driven Cars

Another major application of deep learning is the self-driven car that will not only be able to minus the need for drivers in the car but are also able to avoid traffic jams and road accidents. It is an important topic and most companies are working day and night in deep learning to get the perfect results.

Future Prediction and Deep Learning 

As we have said earlier, deep learning is the process of training the computer like humans, therefore, people are working best to train the machine so they can easily examine trends and predict future outcomes such as stock marketing and weather prediction. Isn't it helpful that your computer or the assistant tells you about the stock marketing rates and predicts the best option to be picked for your investments? 

Medical Assistance

In the medical field, where doctors and experts are working hard to save the lives of people, there is no need to explain the importance of technologies such as deep learning that can predict and control the values in body changes and suggest the best remedy and solution of the problem being observed.

Careers in Deep Learning 

Once you have read about the application and the working process of deep learning, you must be thinking if it is the future, why choose deep learning as your career? Let me tell you, if you excel in deep learning, the future is yours. The careers in deep learning are not yet declared but in the coming few years, you are going to see tremendous exposure to deep learning and related subjects and if you are an expert in it, you will be in demand all the time because it is coming with the endless opportunities. Machine learning engineers are in high demand because neither data scientists nor software engineers possess the necessary skills.

To fill the void, the role of machine learning engineer has evolved. According to experts, the deep learning developer will be one of the most highly paid ones in the future. I hope, in the future, almost all fields will require the involvement of deep learning in their network to work easily and to get more and more efficient work without the involvement of human beings. In simple words, with the help of a neural network, we are replacing human beings with machines and these machines will be more accurate.

So in this way, we have introduced you to the amazing and interesting sub-branch of machine learning that is connected to artificial intelligence. We have seen the working and procedures of deep learning and to understand well, we have seen the examples of deep learning processes. Moreover, the trends and techniques discussed related to deep learning where we have seen that most popular apps and websites are using deep learning to make their platforms more user-friendly and exciting. In the end, we saw the careers and professions of deep learning for the motivation of the students. I know at this step, you will have many questions in your mind but do not worry because I am going to explain everything without skipping a single concept and will learn new things with you while explaining to you. So stay with us for more interesting lectures.

Syed Zain Nasir

I am Syed Zain Nasir, the founder of <a href=https://www.TheEngineeringProjects.com/>The Engineering Projects</a> (TEP). I am a programmer since 2009 before that I just search things, make small projects and now I am sharing my knowledge through this platform.I also work as a freelancer and did many projects related to programming and electrical circuitry. <a href=https://plus.google.com/+SyedZainNasir/>My Google Profile+</a>

Share
Published by
Syed Zain Nasir