Convolutional Neural Network
Introduction
A Convolutional Neural Network (CNN) is a class of deep, feed-forward artificial neural networks, most commonly applied to analyzing visual imagery. They have applications in image and video recognition, recommender systems, image classification, medical image analysis, and natural language processing.
Architecture
The architecture of a CNN is designed to take advantage of the 2D structure of an input image (or other 2D input such as a speech signal). This is achieved with local connections and tied weights followed by some form of pooling which results in translation invariant features. Another benefit of CNNs is that they are easier to train and have many fewer parameters than fully connected networks with the same number of hidden units.
Layers
A CNN consists of an input and an output layer, as well as multiple hidden layers. The hidden layers of a CNN typically consist of convolutional layers, pooling layers, fully connected layers, and normalization layers.
Convolutional Layer
The convolutional layer computes the output of neurons that are connected to local regions or receptive fields in the input, each computing a dot product between their weights and a small receptive field to which they are connected to in the input volume. Each computation leads to a 2D activation map of neuron outputs. As a result, the network learns filters that activate when it detects some specific type of feature at some spatial position in the input.
Pooling Layer
Pooling layers reduce the dimensions of the data by combining the outputs of neuron clusters at one layer into a single neuron in the next layer. Local pooling combines small clusters, typically 2 x 2. Global pooling acts on all the neurons of the convolutional layer. In addition, pooling layers also help to create translation invariant representations.
Fully Connected Layer
Fully connected layers connect every neuron in one layer to every neuron in another layer. It is the same as a traditional multi-layer perceptron neural network (MLP). The fully connected layer is typically used as the last layer of a CNN, used for classifying the images.
Normalization Layer
Normalization layers are used to maintain normalization of the inputs. They increase the range of the input signal, leading to an increase in the range of values the signal can take, and thus increasing the learning speed of the network.
Training
Training a CNN involves adjusting the weights of the neurons based on the error rate (loss) output by the end of the network. This is done by a process called backpropagation. The weights are adjusted to keep the error rate as low as possible. This adjustment is done using techniques such as gradient descent, where the error is propagated back through the network, allowing the weights to be updated.
Applications
CNNs have been successfully applied to many AI tasks. They are most commonly used in visual imagery analysis, natural language processing, and artificial intelligence games.
Visual Imagery Analysis
CNNs are used in a variety of applications in the field of visual imagery analysis. They are used in self-driving cars, facial recognition software, and in interpreting medical imaging data.
Natural Language Processing
In natural language processing, CNNs are used in sentiment analysis, text classification, and language translation applications.
Artificial Intelligence Games
CNNs are used in the development of AI for games. They are used to analyze the state of the game and make decisions based on the current state.