Filter 卷积过程中翻转滤波器背后的直觉是什么?

Filter 卷积过程中翻转滤波器背后的直觉是什么?,filter,conv-neural-network,theano,convolution,Filter,Conv Neural Network,Theano,Convolution,我看到,在使用Theano的conv2d函数时,过滤器被垂直和水平翻转。为什么呢?在卷积神经网络的情况下,这有关系吗?因为这就是数学上的定义。如果不翻转过滤器,则调用该操作。卷积的优点是它有更好的数学性质 然而,在卷积神经网络中,无论使用卷积还是互相关,它们都是等价的。这是因为滤波器的权重是在训练过程中学习的,即它们被更新以最小化成本函数。在使用互相关运算的CNN中,学习滤波器将等于使用卷积运算的CNN的翻转学习滤波器(假设两者的训练条件完全相同,即相同的初始化、输入、历元数等)。因此,对于相同

我看到,在使用Theano的conv2d函数时,过滤器被垂直和水平翻转。为什么呢?在卷积神经网络的情况下,这有关系吗?

因为这就是数学上的定义。如果不翻转过滤器,则调用该操作。卷积的优点是它有更好的数学性质

然而,在卷积神经网络中,无论使用卷积还是互相关,它们都是等价的。这是因为滤波器的权重是在训练过程中学习的,即它们被更新以最小化成本函数。在使用互相关运算的CNN中,学习滤波器将等于使用卷积运算的CNN的翻转学习滤波器(假设两者的训练条件完全相同,即相同的初始化、输入、历元数等)。因此,对于相同的输入,这两个CNN的输出将是相同的


互相关操作更直观,实现起来也更简单(因为不执行翻转),这可能就是其他框架(如Tensorflow和Pytorch)使用它而不是实际卷积的原因(他们仍然称之为卷积,可能是由于历史原因,或者是为了与使用实际卷积的其他框架在术语上保持一致)。

只是为了补充上述内容,尽管我们说我们使用的是“卷积”在CNN操作中,我们实际上使用了互相关。但是卷积和相关都会产生不同的结果,我做这个练习是为了真正看到结果的差异

当我对这个主题进行更多的研究时,我发现CNN的最初起源被认为是源于Neocognitron的论文,该论文已知在使用内核操作时使用卷积运算,但CNN和大多数深度学习库的后续实现已知使用相关过滤而不是相关过滤我们仍然使用卷积神经网络的名称,因为大部分算法的复杂性和性能几乎保持不变

如果您想要一篇详细的文章和直觉来说明两者的区别,请看以下内容:


让我知道这是否有帮助。:)

我喜欢你用高斯模糊滤波器显示卷积和相关性之间的差异。但我有两个问题。1.我认为高斯模糊滤波器是对称的。那么为什么翻转会引起任何变化呢?2.如果滤波器不是对称的,如果网络学习了高斯模糊滤波器的翻转版本,会发生什么?然后,进行卷积运算将得到一个很好的模糊图像,而相关运算将产生颗粒状图像。对吗?还是我遗漏了什么?回答你的问题:1。滤波器不一定是对称的。让我们假设你的实际滤波器是[[1,2],[3,4],[1,-1],-1,-1],,应用滤波器的图像区域是[[1,-1],,相关的输出是-8,但是如果你翻转两边,基本上做卷积,乘积的和将是-2,所以基本上输出是不同的。2.CNN的主要目的不是学习权重以产生模糊图像,而是学习权重以获得有意义的特征,在大多数情况下,通过相关性比实际卷积做得更好(你可以自己尝试一下:),看看在完整的CNN操作中是否有任何不同。我做了这个练习,我的相关模型的准确度提高了15%,但在相同的训练数据和相同的模型结构下,实际卷积模型的准确度降低了15%。