Deconvolutional Networks论文解读

deconv的用处比较广泛,涉及到visualization/pixel-wise prediction/unsupervised learning/image generation。比如Deconvolutional Network[1][2]做图片的unsupervised feature learning,ZF-Net论文中的卷积网络可视化[3],FCN网络中的upsampling[4],GAN中的Generative图片生成[5]。

Deconvolution大概可以分为如下几个方面:

  1. unsupervised learning,其实就是convolutional sparse coding[1][2]:这里的deconv只是观念上和传统的conv反向,传统的conv是从图片生成feature map,而deconv是用unsupervised的方法找到一组kernel和feature map,让它们重建图片。
    待补充

下面要介绍的这篇文章主要用于学习图片的中低层级的特征表示,属于unsupervised feature learning,和传统的auto-encoder,RBM比较类似,和它最像的是sparse coding,这里先简单介绍下sparse coding,便于后续理解Deconvolutional Network。

Sparse coding是学习一个输入向量 x x x在basis空间 ϕ \phi ϕ下的系数 a a a,这个 a a a即是输入向量在 ϕ \phi ϕ空间的向量表示:

x = ∑ i = 1 k a i ϕ i x=\sum\limits_{i=1}^ka_i\phi_i x=i=1kaiϕi

其中 ϕ \phi ϕ是全局变量,对所有输入 x x x都一样, a a a是局部隐变量,每个 x x x都不一样。这种隐变量模式和K-means,GMM,LDA中的隐变量模式一模一样,所以可以看出这种unsupervised带隐变量的学习都有类似的套路。

Sparse coding和PCA变换最大的不同是PCA找的这个basis空间是complete set,而sparse coding找的这个basis空间是over-complete set,解释是over-complete set能更好的表达输入数据的潜在pattern。由于basis空间是over-complete的,所以系数 a a a就不是唯一的了(一个不太恰当的比喻是方程组求解中,求解三个未知数,但只有两个方程,所以求得的未知数不唯一),所以要引入sparsity,方法就是加正则。Sparse coding的loss function如下所示:

m i n i m i z e a i ( j ) , ϕ i ∑ j = 1 m ∥ x ( j ) − ∑ i = 1 k a i ( j ) ϕ i ∥ 2 + λ ∑ i = 1 k S ( a i ( j ) ) minimize_{a_i^{(j)},\phi_i}\sum\limits_{j=1}^m\Vert x^{(j)}-\sum\limits_{i=1}^ka_i^{(j)}\phi_i\Vert^2+\lambda\sum\limits_{i=1}^kS(a_i^{(j)}) minimizeai(j),ϕij=1mx(j)i=1kai(j)ϕi2+λi=1kS(ai(j))

第一项是reconstruction误差,第二项是正则,一般是L1。还有个问题是,如果要保证 a a a足够小,那么让basis vector ϕ \phi ϕ足够大也能达到正则spasity的目的,但这并不是我们想要的,所以我们需要再加上一个约束:

∥ ϕ i ∥ 2 ≤ C , ∀ i = 1 , … , k \Vert\phi_i\Vert^2\le C,\quad\forall i=1,\dots,k ϕi2C,i=1,,k

即让 ϕ \phi ϕ小于某个常数。

学习求解这个loss function就是隐变量学习的通用技巧,有点像alternating least squares(ALS)交替优化。Sparse coding一个不足就是在learning阶段需要学习 a a a ϕ \phi ϕ,在inference阶段还是需要学习 a a a,runtime cost比较高。

接下来介绍Deconvolutional Network,和sparse coding的思路比较类似,是学输入图片 y y y的latent feature map z z z,同时也要学卷积核 f f f,如果非要用sparse coding 那套来解释,就是学习图片在basis空间 f f f的系数表示 z z z。只是操作由点乘变成了卷积,如下图所示:

∑ k = 1 K 1 z k i ⊕ f k , c = y c i \sum\limits_{k=1}^{K_1}z_k^i\oplus f_{k,c}=y_c^i k=1K1zkifk,c=yci

公式在下面的第三部分有详细介绍, f f f就对应于sparse coding中的 ϕ \phi ϕ,而 z z z对应于sparse coding中的 a a a,Loss function是:

C 1 ( y i ) = λ 2 ∑ c = 1 K 0 ∥ ∑ k = 1 K 1 z k i ⊕ f k , c − y c i ∥ 2 2 + ∑ k = 1 K 1 ∣ z k i ∣ p C_1(y^i)=\frac{\lambda}{2}\sum\limits_{c=1}^{K_0}\Vert\sum\limits_{k=1}^{K_1}z_k^i\oplus f_{k,c}-y_c^i\Vert_2^2+\sum\limits_{k=1}^{K_1}|z_k^i|^p C1(yi)=2λc=1K0k=1K1zkifk,cyci22+k=1K1zkip

上述结构只是单层的deconvolutional layer,可以按照这个方式叠加layer,第一层的 z z z就作为第二层的图片输入。Loss function如下所示:

C l ( y ) = λ 2 ∑ i = 1 I ∑ c = 1 K l − 1 ∥ ∑ k = 1 K l g k , c l ( z k , l i ⊕ f k , c l ) − z c , l − 1 i ∥ 2 2 + ∑ i = 1 I ∑ k = 1 K l ∣ z k , l i ∣ p C_l(y)=\frac{\lambda}{2}\sum\limits_{i=1}^I\sum\limits_{c=1}^{K_l-1}\Vert\sum\limits_{k=1}^{K_l}g_{k,c}^l(z_{k,l}^i\oplus f_{k,c}^l)-z_{c,l-1}^i\Vert_2^2+\sum\limits_{i=1}^I\sum\limits_{k=1}^{K_l}|z_{k,l^i|^p} Cl(y)=2λi=1Ic=1Kl1k=1Klgk,cl(zk,lifk,cl)zc,l1i22+i=1Ik=1Klzk,lip

其中, z c , l − 1 i z_{c,l-1}^i zc,l1i就是上一层的feature map表示,作为当前层的输入:

g k , c l g_{k,c}^l gk,cl

是一个0-1矩阵,相当于一个mask,用来决定哪些位置的输入需要连接。

下面分别介绍Deconvolutional Netword的learning和inference

learning:

Deconvolutional Network的学习也是一个交替优化的过程,首先优化feature map z,然后优化filter f,如果有多层的话逐层进行训练。

首先第一步是学习feature map。学习Deconcolutional Network的loss function有些困难,原因是feature map中的不同位置的点因为filter互相耦合比较严重。作者尝试了GD,SGD,IRLS(Iterative Reweighted Least Squares)这些优化方法,效果都不理想。因此作者使用了另外一个优化方法,不是直接优化式3中的z,而是选择了一个代理变量x,让z接近x,同时正则化x达到和式3中loss function同样的效果:

优化上式也是采用交替优化x和z的方法。

第二步是学习filter,正常的梯度下降即可。

整个Deconvolutional Network的学习算法如下所示,其中红色的部分是学习feature map,其实也相当于做inference,蓝色框是学习filter,相当于模型本身的参数学习:
在这里插入图片描述
inference:

inference包括两个层面,一个是根据图片和学到的filter来inference latent feature map,另外一个是根据latent feature map 重建画面。以两层Deconvolutional Network为例,首先学习第一层 z 1 z1 z1,然后学习第二层 z 2 z2 z2,注意第二层的学习有两个loss,一个是重建 z 1 z1 z1的loss,即project 1次学习和z1的误差:

在这里插入图片描述

3 Model

首先考虑一个作用于图片的单层的Deconvolutional Network layer。这一层获取一张图片作为输入,这个图片用 y i y^i yi进行表示,图片由 K 0 K_0 K0个颜色通道组成: y 1 i , … , y K 0 i y_1^i,\dots,y_{K_0}^i y1i,,yK0i,我们将这些颜色通道中的每一个通道 c c c都表示为一个由 K 1 K_1 K1个latent特征图 z k i z_k^i zki 与filter f k , c f_{k,c} fk,c 卷积结果的的线性加和:

∑ k = 1 K 1 z k i ⊕ f k , c = y c i ( 1 ) \sum\limits_{k=1}^{K_1}z_k^i\oplus f_{k,c}=y_c^i\quad\quad\quad\quad\quad(1) k=1K1zkifk,c=yci(1)

这里如果 y c i y_c^i yci是一个 N r × N c N_r\times N_c Nr×Nc图片并且filter大小为 H × H H\times H H×H,那么latent feature map大小为 ( N r + H − 1 ) × ( N c + H − 1 ) (N_r +H-1)\times (N_c+H-1) (Nr+H1)×(Nc+H1)。但是等式1是一个under-determined system,so to yield a unique solution we introduce a regularization term on z k i z_k^i zki that encourages sparsity in the latent feature maps。我们可以采用如下的cost function:

C 1 ( y i ) = λ 2 ∑ c = 1 K 0 ∥ ∑ k = 1 K 1 z k i ⊕ f k , c − y c i ∥ 2 2 + ∑ k = 1 K 1 ∣ z k i ∣ p ( 2 ) C_1(y^i)=\frac{\lambda}{2}\sum\limits_{c=1}^{K_0}\Vert\sum\limits_{k=1}^{K_1}z_k^i\oplus f_{k,c}-y_c^i\Vert_2^2+\sum\limits_{k=1}^{K_1}|z_k^i|^p\quad\quad\quad\quad(2) C1(yi)=2λc=1K0k=1K1zkifk,cyci22+k=1K1zkip(2)

注意这里的 ∣ w ∣ p |w|^p wp含义是 ∑ i , j ∣ z k i ∣ p \sum_{i,j}|z_k^i|^p i,jzkip,通常情况下 p = 1 p=1 p=1 λ \lambda λ is a constant that balances the relative contributions of the reconstruction of y i y^i yi and the sparsity of the feature map z k i z_k^i zki

在整个学习过程中,如同3.2节所描述的,我们会使用一组图片 y = { y 1 , … , y I } y=\{y^1,\dots,y^I\} y={y1,,yI},最终目标是寻找 arg min ⁡ f , z C 1 ( y ) 2 \argmin\limits_{f,z}C_1(y)^2 f,zargminC1(y)2,即寻找最优的latent feature map以及filter,注意每张图片都有its own set of feature map,但是filter通常对所有图片都是相同的。

3.1 Forming a hierarchy

上面介绍的结构可以从multi-channel输入图片中产生sparse feature map。这种结构可以很轻易的堆叠在一起来形成hierarchy,做法就是将 l l l层的feature map z k , l i z_{k,l}^i zk,li作为 l + 1 l+1 l+1层的输入。换句话说, l l l层的输入是具有 K l − 1 K_{l-1} Kl1个通道的 l − 1 l-1 l1层的feature map。 l l l层的cost function C l C_l Cl可以用如下的等式进行表达:

C l ( y ) = λ 2 ∑ i = 1 I ∑ c = 1 K l − 1 ∥ ∑ k = 1 K l g k , c l ( z k , l i ⊕ f k , c l ) − z c , l − 1 i ∥ 2 2 + ∑ i = 1 I ∑ k = 1 K l ∣ z k , l i ∣ p ( 3 ) C_l(y)=\frac{\lambda}{2}\sum\limits_{i=1}^I\sum\limits_{c=1}^{K_l-1}\Vert\sum\limits_{k=1}^{K_l}g_{k,c}^l(z_{k,l}^i\oplus f_{k,c}^l)-z_{c,l-1}^i\Vert_2^2+\sum\limits_{i=1}^I\sum\limits_{k=1}^{K_l}|z_{k,l^i|^p}\quad\quad\quad\quad(3) Cl(y)=2λi=1Ic=1Kl1k=1Klgk,cl(zk,lifk,cl)zc,l1i22+i=1Ik=1Klzk,lip(3)

这里 z c , l − 1 i z_{c,l-1}^i zc,l1i 是从先前层来的feature map, g k , c l g_{k,c}^l gk,cl are alements of a fixed binary matrix that determines the connectivity between the feature maps at successive layers, i.e. whether z k , l i z_{k,l}^i zk,li is connected to to z c , l − 1 i z_{c,l-1}^i zc,l1i or not [13]. In layer-1 we assume that g k , c 1 g_{k,c}^1 gk,c1 is always 1, but in higher layers it will be saprse. We train the hierarchy from the bottom upwards, thus z c , l − 1 i z_{c,l-1}^i zc,l1i is given from the results of learning on C_{l-1}(y).

3.2 学习filter

学习filter的过程是交替进行的,首先在最优化 C l ( y ) C_l(y) Cl(y)时保持filter不变而更新feature map(这个过程称为inference),然后保持feature map不变通过优化 C l ( y ) C_l(y) Cl(y)来更新filter。整个优化过程通过layer-wise manner进行,在第一层输入数据是训练图片 y y y

推测feature map:

给定输入以及filter的情况下,推测出最优的feature map z k , l i z_{k,l}^i zk,li是整个过程的最难点。在 z k , l i z_{k,l}^i zk,li上进行的sparsity限制防止了模型学到trivial solution例如identity function。当 p = 1 p=1 p=1时feature map的最小化问题是凸的并且已经有很多方法被提出来解决这样的问题(3,14)。尽管理论上我们总能找到全局最小解,实际上这个问题是很难求解的因为整个问题是poorly conditioned。这是因为feature map中的元素因为filter相互耦合比较严重。One element in the map can be affected by another distant element, meaning that the minimization can take a very long time to converge to a good solution。

作者尝试了很多种常规的优化方法来尝试解决式子3,包括direct gradient descent,Iterative Reweighted Least Squares(IRLS)以及stochastic gradient descent。但是他们发现direct gradient descent受到比较常见的例如flat-lining的影响因此给出了一个较差的解。IRLS在解决大规模问题时非常慢。Stochastic gradient descent需要上千轮的迭代才会收敛。

因此,论文作者采用了一种另外的方式,这是一种continuation方法,由(6)和(27)首先使用。这种方式不会直接优化方程3,而是最小化auxiliary损失函数 C ^ l ( y ) \hat{C}_l(y) C^l(y) ,这个损失函数对feature map中的每一个 z k , l i z_{k,l}^i zk,li 都包含一个auxiliary variable x k , l i i x_{k,l}^ii xk,lii

C ^ l ( y ) = λ 2 ∑ i = 1 I ∑ c = 1 K l − 1 ∥ ∑ k = 1 K l g k , c l ( z k , l i ⊕ f k , c l ) − z c , l − 1 i ∥ 2 2 + β 2 ∑ i = 1 I ∑ k = 1 K l ∥ z k , l i − x k − l i ∥ 2 2 + ∑ i = 1 I ∑ k = 1 K l ∣ x k , l i ∣ p ( 4 ) \hat{C}_l(y)=\frac{\lambda}{2}\sum_{i=1}^I\sum_{c=1}^{K_l-1}\Vert\sum_{k=1}^{K_l}g_{k,c}^l(z_{k,l}^i\oplus f_{k,c}^l)-z_{c,l-1}^i\Vert_2^2+\frac{\beta}{2}\sum\limits_{i=1}^I\sum\limits_{k=1}^{K_l}\Vert z_{k,l}^i-x_{k-l}^i\Vert_2^2+\sum\limits_{i=1}^I\sum\limits_{k=1}^{K_l}|x_{k,l}^i|^p (4) C^l(y)=2λi=1Ic=1Kl1k=1Klgk,cl(zk,lifk,cl)zc,l1i22+2βi=1Ik=1Klzk,lixkli22+i=1Ik=1Klxk,lip(4)

这里 β \beta β是一个continuation parameter。引入auxiliary variable将cost function的convolution部分从 ∣ ⋅ ∣ p |\cdot|^p p中分离了出来。通过这种方式,我们以使用一种交替最小化 z k , l i z_{k,l}^i zk,li 的方式。首先固定 x k , l i x_{k,l}^i xk,li,这产生了一个对于 z k , l i z_{k,l}^i zk,li的quadratic问题。接下来,我们固定 z k , l i z_{k,l}^i zk,li并对 x k , l i x_{k,l}^i xk,li中的每个元素求解一个separable 1D problem。我们将这两个阶段分别称为 z z z以及 x x x子问题。

在我们交替进行这两个步骤时,我们会将 β \beta β缓慢增加,从一个较小的初始值直到它strongly clamps z k , l i z_{k,l}^i zk,li to x k , l i x_{k,l}^i xk,li。This has the effect of gradually introducing the sparsity constraint and gives good numerical stability in practice(11,27)。

z z z子问题:从等式4中可以看出我们可以独立解出每个 z k , l i z_{k,l}^i zk,li ,在固定了 x k , l i x_{k,l}^i xk,li后,我们取 C ^ l ( y ) \hat{C}_l(y) C^l(y) z k , l i z_{k,l}^i zk,li的导数:

$$$$

3.3 图片representation/reconstruction

为了将图片用于image reconstruction,我们首先decompose一个input image,整个过程通过使用学到的filter f来找到latent representation z。用一个两层网络来解释这个过程,我们首先通过最小化 C 1 ( y ′ ) C_1(y') C1(y)来推导出layer 1的feature map z k , 1 z_{k,1} zk,1以及filter f k , c 1 f_{k,c}^1 fk,c1。接下来我们使用一个交替的过程来获取layer 2的feature map z k , 2 z_{k,2} zk,2。首先我们最小化和 y ′ y' y有关的reconstruction error,projecting z k , 2 z_{k,2} zk,2 through f k , c 2 f_{k,c}^2 fk,c2 and f k , c 1 f_{k,c}^1 fk,c1

[1] Zeiler M D, Krishnan D, Taylor G W, et
al. Deconvolutional networks[C]. Computer Vision and Pattern Recognition, 2010.

[2] Zeiler M D, Taylor G W, Fergus R, etal. Adaptive deconvolutional networks for mid and high level featurelearning[C]. International Conference on Computer Vision, 2011.

[3] Zeiler M D, Fergus R. Visualizing and
Understanding Convolutional Networks[C]. European Conference on Computer
Vision, 2013.

[4] Long J, Shelhamer E, Darrell T, et al.Fully convolutional networks for semantic segmentation[C]. Computer Vision andPattern Recognition, 2015.

[5] Unsupervised Representation Learning
with Deep Convolutional Generative Adversarial Networks

参考:

https://www.zhihu.com/question/43609045/answer/132235276

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值