反卷积 逆卷积(Deconvolution) - CNN的逆过程

背景

众所周知,神经网络分为有向网络无向网络。典型的无向网络有CRF、Autoencoder、RBM等。由于Autoencoder和RBM是层级结构,也叫双向网络。这种是专门设计的双向网络,具有很好的理论依据(特别是RBM)。用的更多的网络,比如NN、CNN等都是单向网络。

PGM

理论好,实践弱

概率图模型,又称有向图模型。 实际上我们是可以通过后验概率,计算图模型的反向。

但是

  1. PGM中的后验概率计算一般都很复杂,特别是对于深层PGM,要算很多层叠的微积分。没有
  2. 模型的求解难
    1. 深层模型要用EM算法,
    2. 由于后验求不出来,大家就采用很多近似方法(比如变分)以及基于采样的方法。

得益于漂亮的理论基础,PGM也曾大放异彩,占领学术界和工业界高地。比如曾经风靡的HMM,LDA。涌现了Jordan Blei Daffni Ng一大批牛人。 但是PGM的深层扩展性较差,常见的比较深层的PGM就是Blei大神的LDA了。然而神经网络已经动不动上百层了。 随着大数据来临,PGM越来越力不从心,渐渐被神经网络取代。

RBM

理论漂亮,实践,大家还是用autoencoder,而不用RBM。

复杂性

CRF

条件随机场,又叫概率无向图,

NN

首先我们来看一下,RBM和autoencoder是怎样可逆的?

autoencoder

强制学习双向的全连接参数W

deconv

神奇的CNN逆过程。

在我的世界观里,CNN是用来特征学习的,网络是单向的,特别是卷积层和pooling层是不可逆的。 然而竟然听说有deconv network。

实际上就是类似autoencoder的思想。

反池化过程

反激活

在Alexnet中,relu函数是用于保证每层输出的激活值都是正数,因此对于反向过程,我们同样需要保证每层的特征图为正值,也就是说这个反激活过程和激活过程没有什么差别,都是直接采用relu函数。

反卷积

信号里的卷积是不可逆的,比如高通滤波,难道还能把高频还原?显然是行不通的。

这里只是采用autoencoder的思想,强制学习双向的卷积kernel

反全连接

应用

deconvolutional network相关文章,其实deconv的用处还挺广的,涉及到visualization/pixel-wiseprediction/unsupervised learning/image generation都会用到deconv的结构。比如Deconvolutional Network[1][2]做图片的unsupervised feature learning,ZF-Net论文中的卷积网络可视化[3],FCN网络中的upsampling[4],GAN中的Generative图片生成[5]。

参考

Adaptive deconvolutional networks for mid and high level feature learning