卷积与反卷积
卷积的原理在这里不做解释,若对于各参数都是方阵的卷积定义: i 表示输入特征矩阵的行或列,k 表示卷积核大小,s表示步长,p 表示每个维度相同的padding,则一次卷积操作之后,得到的新的特征矩阵大小为 o x o:
卷积操作本质上是一种特征抽取,数据压缩的过程,反卷积则正好相反,是一个数据扩充的过程,下面两张图片是反卷积简单示例:
图一 反卷积
图二 反卷积
反卷积之后得到的新的特征矩阵大小为 o x o:o = s(i−1)+k−2p
反卷积原理
反卷积也叫转置卷积,属于上采样技术范畴。
先看卷积操作的数学表达:
图三 卷积操作
设有如上图三的卷积操作,i = 4, k = 2, s = 1, p = 0,x 表示输入的特征矩阵,y 表示卷积之后的输出,C 表示卷积核,定义如下:
根据卷积操作的定义可知,y = Cx,如果将 y 由(2 * 2)的矩阵转换为(4 * 1)的向量表示,则 C 和 x 同样可以做相同的操作,转换之后 x 由(4 * 4)的矩阵,转换为一个(16 * 1 )的向量,C的展开操作则稍微复杂一些,具体如下:
只要好好理解一下卷积计算过程,相信对这个展开还是容易理解的。那么,y = Cx 可表示为:
这个计算过程得到的(4 * 1)的 y 也很容易转换为(2 * 2)的 y 卷积输出矩阵。
所谓反卷积,其实就是上述过程的逆过程,已知(2 * 2)的 y ,想得到更大的(4 * 4)的 x ,即此时 y 是我们的输入,x 是我们的输出,x = Dy,D是反卷积过程中的采样器,和C是一样的,或者说是过滤器、权重矩阵啥的,反正就那意思。想要得到(4 * 4)的 x, 或者说(16 * 1 )的 x, D的形状必须满足(16 * 4),表示如下:
既然如此,D 和 C 有何关系呢?D 和 C 都是网络训练过程中的参数,参考损失反向传播理论有
如果把“Loss对y的梯度”看成输入、“Loss对x的梯度”看成输出的话,“C转置”就是梯度反传的权值矩阵,把这样的操作称为“转置卷积”,所以 C 的转置就相当于 D。这也是为什么反卷积也常称为转置卷机的原因。
参考:
https://www.jianshu.com/p/fb50fe44a1a3
https://www.zhihu.com/question/43609045
网友评论