通俗理解反卷积

作者: 阡陌哥哥 | 来源:发表于2019-05-18 15:18 被阅读1次

卷积与反卷积

卷积的原理在这里不做解释,若对于各参数都是方阵的卷积定义: 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

相关文章

网友评论

    本文标题:通俗理解反卷积

    本文链接:https://www.haomeiwen.com/subject/xcvzaqtx.html