What does "Convolutional" signify in "Convolutional Neural Network"? The "Types of Neural Networks" wiki page doesn't even have the word "convolution" in it, and yet there's an entire Javascript library based on Convolutional Neural Networks (CNN). 

So, what makes CNNs "convolutional"? When I hear "convolution", I think of either smearing/blurring together (as in the "convolve" tool in programs like Photoshop), or complexity/tangling (e.g., "a long and unnecessarily convoluted explanation").

When I think of neural networks, I think of networks with distinct layers, where neurons from one layer only connect to neurons of the next layer. To me, "convolutional" suggests that the neurons are more intricately connected somehow—or "tangled up". But I see nothing in the javascript library's documentation to suggest that this is the case.

The background section in the "On Complex Valued Convolutional Neural
Networks" master thesis suggests that CNNs are what has made neural networks actually useful for tasks like computer vision and face recognition. Why remains unclear, however, the term "convolution operation" was mentioned.


Guberman, N. (2016). On Complex Valued Convolutional Neural Networks. arXiv preprint arXiv:1602.09046.
Convolution is a technical term, and comes from the signal processing field. Unfortunately, it is easily confused with "convoluting". Effectively, "to convolve" means to pick a small "window", slide it across your signal, and compute the same function for each step.

In CNNs, when applied to classifying, for example images, it means taking a small window, of say 3x3 pixels, sliding it across the whole image, and feeding the small sections of the larger image under the window into a neural network. The outputs of the network are then combined into a new layer and can then be fed into another NN layer for classification.



In the example above, the window is 3x3 pixels wide, and the step size is 1. Depending on the application, it's possible to have larger/smaller windows and step sizes.

The resulting layer can be said to be the result of convolving the original image with a neural network.

When using convolution filters in, say Photoshop, it's using a similar method where it takes sliding windows of pixels and computes a function (for example to achieve blur, the average RGB values of the window pixels) and creates a new image out of those. You can then say that convolving an image with a pixel average function results in a blurred image.