反卷积层(转置卷积)

反卷积(deconvolution)不是数字信号处理里面的意义,在深度学习里面应该叫做转置卷积(transposed convolution)又名微步卷积(fractionally strided convolutions),也有叫Backward strided convolution ,upconvoution, upsample convolution。主要从以下几个方面理解:

  1. 从概念上理解

    转置卷积其实也是一种卷积。总是可以用卷积层来模拟饭卷积层,但是缺点就是需要在行列进行补零,导致不是一个有效的计算接口。

  2. 从数据角度解释

    在卷积网络里面,我们是通过卷积层操作,获得feature map,然而对于反卷积层,则是通过feature map的卷积操作,输出value,这输出值是我们期待的图像的值。有点像通过反卷积还原feature map到原始图像。

  3. 从卷积公式角度理解

    要理解反卷积的公式,就需要理解卷积的矩阵表达从而得到转置的含义。举个例子:

    反卷积层(转置卷积)

    输入的feature map4*4,卷积核3*3.步长为1,不填充。那么输出的大小为2*2.在进行计算时,为了可以使用矩阵进行计算,将输入x拉成16*1维向量,输出y拉成4*1维向量,那么卷积运算可表示为反卷积层(转置卷积)。那么C矩阵可以写成:

    反卷积层(转置卷积)

    我们在计算一下反向传播下的公式,

    反卷积层(转置卷积)

    可以发现卷积层时,正向和反向分别乘以C和CT。反卷积就是正向和反向分别乘以CT和C。

  4. 可视化角度

    反卷积层(转置卷积)

    反卷积层(转置卷积)

  5. 作用角度上讲

    有一种将输入的size变大的意思,一次一般情况下,输出的维度要大于输入的维度。虽然是想还原输入,但实际上是无法还原输入的,反卷积的权重也式可以进行学习得到。

  6. 应用层面

    可以进行可视化操作,将feature map可视化,看到底学习到了什么。

    在对抗神经网络中有应用,这方面不熟悉。

    在超分辨率成像中,FSRCNN中最后一层使用deconv,可以还原到不同尺度的分辨率图像,类似于对图像进行缩放。

    参考:http://blog.csdn.net/u013139259/article/details/53318477

    https://github.com/vdumoulin/conv_arithmetic

    https://www.zhihu.com/question/43609045?sort=created