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大概可以分为如下几个方面:
- 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是学习一个输入向量xxx在basis空间ϕ\phiϕ下的系数aaa,这个aaa即是输入向量在ϕ\phiϕ空间的向量表示:
x=∑i=1kaiϕix=\sum\limits_{i=1}^ka_i\phi_ix=i=1∑kaiϕi
其中ϕ\phiϕ是全局变量,对所有输入xxx都一样,aaa是局部隐变量,每个xxx都不一样。这种隐变量模式和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的,所以系数aaa就不是唯一的了(一个不太恰当的比喻是方程组求解中,求解三个未知数,但只有两个方程,所以求得的未知数不唯一),所以要引入sparsity,方法就是加正则。Sparse coding的loss function如下所示:
minimizeai(j),ϕi∑j=1m∥x(j)−∑i=1kai(j)ϕi∥2+λ∑i=1kS(ai(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=1∑m∥x(j)−i=1∑kai(j)ϕi∥2+λi=1∑kS(ai(j))
第一项是reconstruction误差,第二项是正则,一般是L1。还有个问题是,如果要保证aaa足够小,那么让basis vector ϕ\phiϕ足够大也能达到正则spasity的目的,但这并不是我们想要的,所以我们需要再加上一个约束:
∥ϕi∥2≤C,∀i=1,…,k\Vert\phi_i\Vert^2\le C,\quad\forall i=1,\dots,k∥ϕi∥2≤C,∀i=1,…,k
即让ϕ\phiϕ小于某个常数。
学习求解这个loss function就是隐变量学习的通用技巧,有点像alternating least squares(ALS)交替优化。Sparse coding一个不足就是在learning阶段需要学习aaa和ϕ\phiϕ,在inference阶段还是需要学习aaa,runtime cost比较高。
接下来介绍Deconvolutional Network,和sparse coding的思路比较类似,是学输入图片yyy的latent feature map zzz,同时也要学卷积核fff,如果非要用sparse coding 那套来解释,就是学习图片在basis空间fff的系数表示zzz。只是操作由点乘变成了卷积,如下图所示:
∑k=1K1zki⊕fk,c=yci\sum\limits_{k=1}^{K_1}z_k^i\oplus f_{k,c}=y_c^ik=1∑K1zki⊕fk,c=yci
公式在下面的第三部分有详细介绍,fff就对应于sparse coding中的ϕ\phiϕ,而zzz对应于sparse coding中的aaa,Loss function是:
C1(yi)=λ2∑c=1K0∥∑k=1K1zki⊕fk,c−yci∥22+∑k=1K1∣zki∣pC_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|^pC1(yi)=2λc=1∑K0∥k=1∑K1zki⊕fk,c−yci∥22+k=1∑K1∣zki∣p
上述结构只是单层的deconvolutional layer,可以按照这个方式叠加layer,第一层的zzz就作为第二层的图片输入。Loss function如下所示:
Cl(y)=λ2∑i=1I∑c=1Kl−1∥∑k=1Klgk,cl(zk,li⊕fk,cl)−zc,l−1i∥22+∑i=1I∑k=1Kl∣zk,li∣pC_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=1∑Ic=1∑Kl−1∥k=1∑Klgk,cl(zk,li⊕fk,cl)−zc,l−1i∥22+i=1∑Ik=1∑Kl∣zk,li∣p
其中,zc,l−1iz_{c,l-1}^izc,l−1i就是上一层的feature map表示,作为当前层的输入:
gk,clg_{k,c}^lgk,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为例,首先学习第一层z1z1z1,然后学习第二层z2z2z2,注意第二层的学习有两个loss,一个是重建z1z1z1的loss,即project 1次学习和z1的误差:
3 Model
首先考虑一个作用于图片的单层的Deconvolutional Network layer。这一层获取一张图片作为输入,这个图片用yiy^iyi进行表示,图片由K0K_0K0个颜色通道组成:y1i,…,yK0iy_1^i,\dots,y_{K_0}^iy1i,…,yK0i,我们将这些颜色通道中的每一个通道ccc都表示为一个由K1K_1K1个latent特征图 zkiz_k^izki 与filter fk,cf_{k,c}fk,c 卷积结果的的线性加和:
∑k=1K1zki⊕fk,c=yci(1)\sum\limits_{k=1}^{K_1}z_k^i\oplus f_{k,c}=y_c^i\quad\quad\quad\quad\quad(1)k=1∑K1zki⊕fk,c=yci(1)
这里如果yciy_c^iyci是一个Nr×NcN_r\times N_cNr×Nc图片并且filter大小为H×HH\times HH×H,那么latent feature map大小为(Nr+H−1)×(Nc+H−1)(N_r +H-1)\times (N_c+H-1)(Nr+H−1)×(Nc+H−1)。但是等式1是一个under-determined system,so to yield a unique solution we introduce a regularization term on zkiz_k^izki that encourages sparsity in the latent feature maps。我们可以采用如下的cost function:
C1(yi)=λ2∑c=1K0∥∑k=1K1zki⊕fk,c−yci∥22+∑k=1K1∣zki∣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=1∑K0∥k=1∑K1zki⊕fk,c−yci∥22+k=1∑K1∣zki∣p(2)
注意这里的∣w∣p|w|^p∣w∣p含义是∑i,j∣zki∣p\sum_{i,j}|z_k^i|^p∑i,j∣zki∣p,通常情况下p=1p=1p=1。λ\lambdaλ is a constant that balances the relative contributions of the reconstruction of yiy^iyi and the sparsity of the feature map zkiz_k^izki。
在整个学习过程中,如同3.2节所描述的,我们会使用一组图片y={y1,…,yI}y=\{y^1,\dots,y^I\}y={y1,…,yI},最终目标是寻找arg minf,zC1(y)2\argmin\limits_{f,z}C_1(y)^2f,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,做法就是将lll层的feature map zk,liz_{k,l}^izk,li作为l+1l+1l+1层的输入。换句话说,lll层的输入是具有Kl−1K_{l-1}Kl−1个通道的l−1l-1l−1层的feature map。lll层的cost functionClC_lCl可以用如下的等式进行表达:
Cl(y)=λ2∑i=1I∑c=1Kl−1∥∑k=1Klgk,cl(zk,li⊕fk,cl)−zc,l−1i∥22+∑i=1I∑k=1Kl∣zk,li∣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=1∑Ic=1∑Kl−1∥k=1∑Klgk,cl(zk,li⊕fk,cl)−zc,l−1i∥22+i=1∑Ik=1∑Kl∣zk,li∣p(3)
这里 zc,l−1iz_{c,l-1}^izc,l−1i 是从先前层来的feature map,gk,clg_{k,c}^lgk,cl are alements of a fixed binary matrix that determines the connectivity between the feature maps at successive layers, i.e. whether zk,liz_{k,l}^izk,li is connected to to zc,l−1iz_{c,l-1}^izc,l−1i or not [13]. In layer-1 we assume that gk,c1g_{k,c}^1gk,c1 is always 1, but in higher layers it will be saprse. We train the hierarchy from the bottom upwards, thus zc,l−1iz_{c,l-1}^izc,l−1i is given from the results of learning on C_{l-1}(y).
3.2 学习filter
学习filter的过程是交替进行的,首先在最优化Cl(y)C_l(y)Cl(y)时保持filter不变而更新feature map(这个过程称为inference),然后保持feature map不变通过优化Cl(y)C_l(y)Cl(y)来更新filter。整个优化过程通过layer-wise manner进行,在第一层输入数据是训练图片yyy。
推测feature map:
给定输入以及filter的情况下,推测出最优的feature map zk,liz_{k,l}^izk,li是整个过程的最难点。在zk,liz_{k,l}^izk,li上进行的sparsity限制防止了模型学到trivial solution例如identity function。当p=1p=1p=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中的每一个 zk,liz_{k,l}^izk,li 都包含一个auxiliary variable xk,liix_{k,l}^iixk,lii:
C^l(y)=λ2∑i=1I∑c=1Kl−1∥∑k=1Klgk,cl(zk,li⊕fk,cl)−zc,l−1i∥22+β2∑i=1I∑k=1Kl∥zk,li−xk−li∥22+∑i=1I∑k=1Kl∣xk,li∣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=1∑Ic=1∑Kl−1∥k=1∑Klgk,cl(zk,li⊕fk,cl)−zc,l−1i∥22+2βi=1∑Ik=1∑Kl∥zk,li−xk−li∥22+i=1∑Ik=1∑Kl∣xk,li∣p(4)
这里β\betaβ是一个continuation parameter。引入auxiliary variable将cost function的convolution部分从∣⋅∣p|\cdot|^p∣⋅∣p中分离了出来。通过这种方式,我们以使用一种交替最小化 zk,liz_{k,l}^izk,li 的方式。首先固定xk,lix_{k,l}^ixk,li,这产生了一个对于zk,liz_{k,l}^izk,li的quadratic问题。接下来,我们固定zk,liz_{k,l}^izk,li并对xk,lix_{k,l}^ixk,li中的每个元素求解一个separable 1D problem。我们将这两个阶段分别称为zzz以及xxx子问题。
在我们交替进行这两个步骤时,我们会将β\betaβ缓慢增加,从一个较小的初始值直到它strongly clamps zk,liz_{k,l}^izk,li to xk,lix_{k,l}^ixk,li。This has the effect of gradually introducing the sparsity constraint and gives good numerical stability in practice(11,27)。
zzz子问题:从等式4中可以看出我们可以独立解出每个zk,liz_{k,l}^izk,li ,在固定了xk,lix_{k,l}^ixk,li后,我们取C^l(y)\hat{C}_l(y)C^l(y)对zk,liz_{k,l}^izk,li的导数:
$$$$
3.3 图片representation/reconstruction
为了将图片用于image reconstruction,我们首先decompose一个input image,整个过程通过使用学到的filter f来找到latent representation z。用一个两层网络来解释这个过程,我们首先通过最小化C1(y′)C_1(y')C1(y′)来推导出layer 1的feature map zk,1z_{k,1}zk,1以及filter fk,c1f_{k,c}^1fk,c1。接下来我们使用一个交替的过程来获取layer 2的feature mapzk,2z_{k,2}zk,2。首先我们最小化和y′y'y′有关的reconstruction error,projecting zk,2z_{k,2}zk,2 through fk,c2f_{k,c}^2fk,c2 and fk,c1f_{k,c}^1fk,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
Deconvolutional Networks论文解读相关推荐
- Exploring the Connection Between Binary andSpiking Neural Networks论文解读
Exploring the Connection Between Binary andSpiking Neural Networks论文解读 前言 总说 提出B-SNN(论文中为Ⅲ) 实验和结果(论文 ...
- Spatial Transformer Networks 论文解读
paper title:Spatial Transformer Networks paper link: https://arxiv.org/pdf/1506.02025.pdf oral or de ...
- DE-PPN:Document-level Event Extraction via Parallel Prediction Networks论文解读
Document-level Event Extraction via Parallel Prediction Networks paper:Document-level Event Extracti ...
- AttnGAN: Fine-Grained Text to Image Generation with Attentional Generative Adversarial Networks论文解读
题目:AttnGAN:具有注意的生成对抗网络的细粒度文本到图像生成 时间:2018 作者:Tao Xu, Pengchuan Zhang, Qiuyuan Huang, Han Zhang, Zhe ...
- TGN:Temporal Graph Networks论文解读
公众号 异度侵入 " 图神经网络(GNNs)的研究已经成为今年机器学习领域的热门话题之一.GNNs最近在生物.化学.社会科学.物理等领域取得了一系列成功.但GNN模型目前以静态图上偏多,然而 ...
- (论文解读)High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks
目录 论文解读之: High-frequency Component Helps Explain the Generalization of Convolutional Neural Networks ...
- Densely Connected Convolutional Networks(论文解读三)
目录 DenseNet:论文解读 1. Abstract 2. Related work 2.1 通过级联来加深网络 2.2 通过 shortcut 连接来加深网络 2.3 通过加宽网络来使网络更深 ...
- DRN:Dilated Residual Networks(论文解读十四)
Title:Dilated Residual Networks From:CVPR2017 Note data:2019/06/12 Abstract:提出一种有利于分类任务的扩张残差网络DRN. C ...
- 论文解读:Dynamic Connected Networks for Chinese Spelling Check
论文解读:Dynamic Connected Networks for Chinese Spelling Check 我们知道,拼写纠错任务比较类似预训练语言模型中的**Masked Langua ...
- Fully Convolutional Networks for Semantic Segmentation----2014CVPR FCN论文解读
Fully Convolutional Networks for Semantic Segmentation----2014CVPR论文解读 Abstract 卷积网络在特征分层领域是非常强大的视 ...
最新文章
- golang避免XSS攻击
- Android开源框架——图片加载库Glide
- CVPR 2021 | 从理论和实验角度深入剖析对比损失中的温度超参数
- 机器学习实战(十一)利用PCA来简化数据
- matlab 性能分析方法,DPCM,PSK系统的MATLAB实现及性能分析
- 直播预告|阿里云天池牛年读书会《中学生可以这样学Python(微课版)》
- 【开源软件】windows环境下libcurl编译
- 进入Docker容器的4种方式
- 重温马尔科夫随机过程
- JAVA中3种将byte转换为String的方法
- C# RabbitMQ(一)介绍
- html加密原理,说说Html5视频加密播放原理
- 计算机辅助园林设计考试题,计算机辅助园林规划设计之软件比较
- 西门子1200PLC模拟量测温案例1
- 甲骨文oracle兴学,甲骨文 Oracle Bone Inscription
- Laravel数据库之Seeding
- 一个站点不够学?那就在用Python增加一个采集目标,一派话题广场+某金融论坛话题广场爬虫
- 项目学习 —— 图书商城后台管理
- 2021-06-03 【论文笔记】Cross-domain Correspondence Learning for Exemplar-based Image Translation
- Android系统10 RK3399 init进程启动(十八) isLoggable日志级别输出控制
热门文章
- 遥感影像植被颜色增强
- 渲染怎么加hdri_[翻译]Corona渲染器官方教程2--设置HDRI光照
- 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%; 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%; 20万到4
- 真正的焦虑感来自对比
- 历届电大计算机网考试题及答案,电大2012年计算机应用基础网考统考试题及答案...
- python atm详解_python基础之ATM-1
- 用php写一个user类,使用php怎么编写一个用户查询类
- xml提交数据的方法--gin
- go应用---Time.second
- python下文件以及文件的常用操作-1