Interesting aspects of Convolutional Neural Networks (CNN):
- Translational invariant, learn local patterns. This makes
CNN a good algorithm for perceptive problems like image
recognition, and allows to work with relatively small data
sets, of the order 100–1000 samples (see data
aumentation and pre-trained CNN below).
- Use of data augmentation to reduce over-fitting with a few
training data: apply random transformations to images
(rotations, stretches, flips, etc.) so that the algorithm
will see different pictures (but representing the same
believable-looking target) at different training epochs.
- Use pre-trained CNN to reduce over-fitting with few
training data, even if the pre-trained network does not
solve exactly the same problems: a CNN trained on elephant
species recognition task may still be useful in house
furniture classification to help identifying, e.g., edges.
- Contrary to other deep learning algorithms, CNN
are not black boxes: there are methods to visualize
how CNN layers and filters process information. For
instance, a given filter in a layer may recognize edges,
another textures and so on. However, while the first
convolutional blocks typically encode generic features
(edges, eyes, ...), the last encode more specialized
features not necessarily useful to human intuition.
- Combined CNN and recurrent neural networks (RNN) offer a
computationally efficient strategy for data whose order is
important. (While CNN's excel in learning local patterns,
they are less performing on ordered data. RNN are a better
algorithm for this, but a computationally expensive one.)