通俗理解反卷积

作者: 阡陌哥哥 | 来源:发表于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