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.)