卷积神经网络中的反卷积或反向卷积是什么意思?
我理解卷积,如果我们考虑一个 3x3 窗口 W 和一个相同大小的内核 k,那么卷积 W*K 的结果将是一个值。这里 k 是具有 3x3 个元素的矩阵。
在我的理解中,反卷积试图对特征图进行上采样以获得更大的图。它是否使用与获取特征图相同的卷积矩阵?如果不是如何计算反向传播的梯度?详细的解释将非常有用。
卷积神经网络中的反卷积或反向卷积是什么意思?
我理解卷积,如果我们考虑一个 3x3 窗口 W 和一个相同大小的内核 k,那么卷积 W*K 的结果将是一个值。这里 k 是具有 3x3 个元素的矩阵。
在我的理解中,反卷积试图对特征图进行上采样以获得更大的图。它是否使用与获取特征图相同的卷积矩阵?如果不是如何计算反向传播的梯度?详细的解释将非常有用。
详细的解释远远超出了 StackOverflow 的范围;这不是一个教程网站。
一般来说,反卷积更像是一种反向卷积:每个像素都会影响从中提取它的 3x3 区域,应用滤波器的傅里叶变换来对输入参数进行逆向工程。它通常用于信号处理中,以减少噪声、锐化特征等。
例如,可视化 xy 平面中的十几个数据点,或多或少地沿着二次曲线分布。有多种最佳拟合方法可以将 4 次方程(或三次方的滚动组合)映射到给定点。这是一种反卷积。
以下是一些参考资料;我希望他们中的一两个处于您前进所需的水平。
https://en.wikipedia.org/wiki/Deconvolution
https://www.reddit.com/r/MachineLearning/comments/454ksm/tutorial_on_deconvolution/
https://github.com/tensorflow/tensorflow/issues/2169#issuecomment-216607417
正如@papirrin 所指出的,@Prune 给出的答案有点误导。在 CNN(或完全卷积神经网络,这是首次提出反卷积的地方)中,反卷积并不完全与卷积相反。更准确地说,CNN 中的反卷积只反转形状,而不反转内容。反卷积的名称具有误导性,因为反卷积已经在数学上定义,因此,在下文中,我们将使用转置卷积来表示“CNN 中的反卷积”。
要理解转置卷积,您需要在执行卷积操作时将卷积操作的过滤器转换为矩阵。那么,卷积运算可以定义为Y=WX
。然后,在转置卷积中,我们基本上对矩阵进行转置,输出将计算为Y=W^TX
。对于一些示例,您可以参考https://tinynet.autoai.org/en/latest/induction/convolution.html和https://tinynet.autoai.org/en/latest/induction/convolution-transpose.html。
至于转置卷积中如何得到卷积矩阵,就看你打算怎么用了。对于图像分割,它是在反向传播期间学习的。在一些中间特征图的可视化中(例如ECCV14论文:https ://arxiv.org/abs/1311.2901 ),它直接来源于卷积操作。总而言之,这两种方式都很好。
至于如何计算梯度,和卷积中的完全一样。您还可以解释转置卷积操作,因为它基本上交换了卷积操作的前向和后向过程。