3
$\begingroup$

To my knowledge cross-correlation is used to measure the similarity of certain values, like to images. Same applies to the process of feature extraction in CNNs, where input matrices are multiplied by filters. So it seems odd to me that they are call Convolutional Networks.

The Pytorch documentation for Conv2d even says that it is using the cross-correlation operator.

So why are CNNs called convolutional when they are actually using cross-correlation?

$\endgroup$
  • 2
    $\begingroup$ Found the answer here. Actually most Convolutional Neural Nets use cross-correlation. Filliping all filters in the case of convolution as described here would end up doing the same thing. $\endgroup$ – Hakim Dec 2 '19 at 21:03
  • $\begingroup$ They are only equivalent when the filters are symmetrical, which is often the case $\endgroup$ – Vass Jul 4 at 1:33
3
$\begingroup$

That's a very interesting question. I started looking into it recently while trying to understand better convolutional neural networks.

In short: yes! They are called convolutional while in actual practical terms using the cross-correlation operator. So this is a case of a misnomer.

I think the important thing to understand is that correlation and convolution differ only because of a flip that is present in the convolution. So they differ only because of a sign.

Correlation: correlation operation between F and I

Convolution: Convolution

The main difference in practical terms is that the convolution is associative. This means that

associative property

This is not true for the correlation operator.

When training a neural network though, the difference in the sign in front of the i, does not matter because you will adjust your weights in order to optimise your objective function.

This is also explained in another post:

Convolution and Cross Correlation in CNN

In this post, it is also explained that what is actually used for CNN is the cross-correlation operator and not the convolution one.

I hope this helps.

PS Also, see the notes on convolution from the David Jacobs CS course:

http://www.cs.umd.edu/~djacobs/CMSC426/Convolution.pdf

| improve this answer | |
$\endgroup$
  • $\begingroup$ Welcome to DS StackExchange. Please make your answer more clear, as of now it's not really useful. For example, what do you mean with "The main difference in practical terms is that the convolution is associative"? Thank you $\endgroup$ – Leevo Jan 21 at 16:43
  • 1
    $\begingroup$ Hi Leevo. Happy to be here. Thanks for the comment. I tried to clarify further while trying to keep it short. If it is still unclear, please let me know, and I will give it another go. $\endgroup$ – Raf Jan 21 at 17:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.