反卷积

   反卷积又被称为转置卷积(transpose convolution),一般被认为是卷积的逆过程,这样我们首先来看一下卷积的过程:
令:input-size:i,kener-size:k,stride:s,padding-size:p,那么output-size为:

same padding认为输入和输出大小一样(stride为1时,如下所示):

   如果输入图像的大小为44,用一个33大小的卷积核去卷积,那么可以得到一个2*2大小的特征图,如果用A表示输入的特征,B表示输出的特征,C表示卷积核,那么该计算的数学含义是,首先将A大小resize成[16,1]大小的向量,那么卷积的特征图C可以表示成以下[4,16]大小形式:

   卷积就可以表示为B=CA。很显然,卷积后B的大小为[4,1],再resize成[2,2]大小就是B了。
   那么反卷积就很显然了,对B用C的转置(大小为[16,4])做上述矩阵相乘的运算,就可以得到A的大小(大小为[16,1])。当然,因为B=C
A,所以B左乘C的转置不一定等于A,因为C和C的转置相乘不一定为单位矩阵(当且仅当C为正交矩阵时成立)。该过程如下所示(右图),可与卷积过程(Valid)对比(左图):

可见,反卷积时要在特征图外面补0,大小范围为k-1。
   当stride=2时,卷积就变成了空洞卷积,很显然,正向卷积时,stride=2会使特征图尺寸变小很多,反向卷积时,就要补0这样才能恢复到原来的大小。一般如下图所示:

总而言之,反卷积实质上是转置卷积,是一种上采样的方法。
参考:
1.https://www.zhihu.com/question/43609045?sort=created
2.https://blog.csdn.net/scythe666/article/details/78529777

0%