我最近阅读了 Jonathan Long、Evan Shelhamer、Trevor Darrell 的全卷积网络语义分割。我不明白“反卷积层”是做什么的/它们是如何工作的。
相关部分是
3.3. 上采样是向后跨步卷积
将粗略输出连接到密集像素的另一种方法是插值。例如,简单的双线性插值通过仅取决于输入和输出单元格的相对位置的线性映射从最近的四个输入计算每个输出 $y_{ij}$。
从某种意义上说,使用因子 $f$ 进行上采样是小数输入步幅为 1/f 的卷积。只要 $f$ 是整数,一种自然的上采样方式就是反向卷积(有时称为反卷积),输出步幅为 $f$。这样的操作实现起来很简单,因为它只是简单地反转卷积的前向和后向传递。
因此,通过像素损失的反向传播,在网络中执行上采样以进行端到端学习。
请注意,此类层中的反卷积滤波器不需要固定(例如,双线性上采样),但可以学习。一堆反卷积层和激活函数甚至可以学习非线性上采样。
在我们的实验中,我们发现网络内上采样对于学习密集预测是快速有效的。我们最好的分割架构使用这些层来学习上采样以在第 4.2 节中进行精确预测。
我不认为我真的了解卷积层是如何训练的。
我想我已经理解的是,内核大小为 $k$ 的卷积层学习大小为 $k \times k$ 的过滤器。具有内核大小 $k$、步幅 $s \in \mathbb{N}$ 和 $n$ 个过滤器的卷积层的输出维度为 $\frac{\text{Input dim}}{s^2} \cdot n$。但是,我不知道卷积层的学习是如何工作的。(如果有帮助的话,我了解 MLP 是如何通过梯度下降来学习的)。
因此,如果我对卷积层的理解是正确的,我不知道如何将其反转。
有人可以帮我理解反卷积层吗?