CDBN卷积深度信念网

斯坦福大学的Honglak Lee,Andrew Y. Ng的学生的论文。

摘要:
层级生成模型(比如深度信念网络)的无监督学习吸引了非常多的研究兴趣。但是要把这些层级生成模型扩展用于处理全尺寸的高维的图像仍然很困难。本文的CDBN就是做这件事的。本模型是translation-invariant平移不变的,并且支持高效的从下到上和从上到下的概率推断bottom-up and top-down probabilistic inference。CDBN模型的关键核心是概率最大池化probabilistic max-pooling,以概率合理的方式减少了高层的表示。算法表明模型从无标签的物体图像和自然场景学到了有用的高层视觉特征,比如物体的部分object parts。我们把模型用到了几个视觉识别任务中,模型性能优越,确实可以实现对图像的从下到上(bottom-up,从输入图像V层到隐层)和从上到下(top-down,从隐层到输入图像)的推断。

1 介绍

视觉世界可以被从多个level描述,像素强度,边缘,物体的部分,物体等等。pixel intensities, edges, object parts, objects, and beyond.
学习能够同时表示多个层次信息的层次模型,最近因起了很多兴趣。理想情况下,这种深度的表示可以学习到特征检测器(隐层单元)的层次性,于是在处理图像时能进一步结合从上到下和从下到上的推断。(确实够理想的。。。)。比如说,低层可以根据低层特征表示的对象部件object parts支持对象检测object detection,而高层学到的有关图像的信息可以解决低层的模糊性或者推断出隐藏对象部件object parts的位置。

深度结构是由安排在层中的特征检测器单元组成的。低层检测简单的特征,再feed into高层,使得高层in turn检测到更复杂的特征。(听起来有点像玄学···)。已经有很多方法来学习深度深度网络,比如1989年LeCun,Hinton 2006年提出的DBN是一个多层生成模型,每一层都对下面一层的单元之间的统计依赖性进行编码encodes statistical dependencies among the units in the layer below it,它被训练去近似最大化训练数据的似然it is trained to (approximately) maximize the likelihood of its training data.。
DBNs已经被成功地在很多领域被用于学习高层/高级结构,包括手写字体((Hinton et al., 2006) ,人类移动数据(Taylor et al., 2007)。本文基于这些研究,因为我们对以纯粹无监督形式学习图像的生成模型感兴趣。

DBN不能被扩展到实际尺寸的图像主要有2个原因。一是图像维度太高,所以算法必须扩展得计算上仍便于处理,即使对于大图;二是图像中的物体可以在任何位置出现,所以学到的表示必须是不变的,至少对于输入的局部平移。我们通过引入平移不变性translation invariance来处理这个问题。就像LeCun et al. (1989) and Grosse et al. (2007)一样,我们学习图像所有位置共享的特征检测器,因为能捕捉有用信息的特征检测器在图像上各处都能学到一样类型的有用信息(比如边缘提取算子就可以提取整幅图片的各个地方的边缘)。所以只用很少的特征检测器就可以学到很大的图像。

probabilistic max-pooling:允许高层神经元以一种概率方式覆盖输入的更大区域的技术。

我们的是第一个支持both top-down and bottom-up probabilistic inference 的能适用于大尺寸图像的第一个平移不变的概率生成模型。
我们网络的第一二三层分别学习边缘检测器,物体部分,物体。

2 预备知识

1. 受限玻尔兹曼机

RBM是BM和Marcov random fields 的特例。

两层的,二分图,有一组二元隐层单元(向量h),一组二元/实值的显层单元(向量v)的无向图模型。两层之间的对称连接用一个权重矩阵W表示。

  • RBM的显层隐层所有单元的各种取值的联合概率是用能量定义的:
    在这里插入图片描述
    Z是配分函数 partition function
  • 显层单元的边缘概率:
    在这里插入图片描述
  • 由于给定v,h向量中的一个,另一个的分量是条件独立的,所以:
    在这里插入图片描述
  • 如果显层单元是二元取值的话,能量就这么计算:
    在这里插入图片描述
    b j b_j bj are hidden unit biases and c i c_i ci are visible unit
    biases.
  • 如果显层单元是取实值的话,能量就这么定义:

在这里插入图片描述

注意,当输入层单元取实值时,比如输入一张图片, v \boldsymbol v v服从多项式分布(二项分布的推广,每个单元的取值不只两种而是多种,如256种灰度,则整个v层所有单元则近似服从多项式分布),而隐层单元 h \boldsymbol h h服从二项分布,若输入也是二元的则也服从二项分布,因为每一个单元的取值服从伯努利分布。

  • 块吉布斯采样时,每个分量激活的概率用sigmoid计算:
    在这里插入图片描述

如果显层取实值(服从多项式分布),当然隐层仍然是二元的,那么对显层单元采样时用的逻辑函数不再是sigmoid,而是softmax:
在这里插入图片描述
如果显层单元取值确定了,那么隐层单元之间就是条件独立的,反之亦然。所以,二元取值层的单元们,在另一层确定时,是一组独立的二元伯努利随机变量independent Bernoulli random variables。隐层确定时的显层单元们是一组有对角线协方差矩阵(彼此独立)的高斯随机变量Gaussian with diagonal covariance。 因此,可以通过交替地alternately采样每一层的单元(在另一层确定时)执行高效的块吉布斯采样,层内单元的采样是并行in parallel的。

原理上,RBM的参数(权重,偏置)可以通过对训练数据的对数似然比进行随机梯度上升实现优化,但是!计算log-likelihood 的精确梯度exact gradient是intractable很难算的。所以,人们通常使用 one typically uses对比散度近似contrastive divergence approximation (Hinton, 2002)来训练RBM的参数,实际中工作的非常好。

2. DBNs

The RBM by itself is limited in what it can represent. Its real power emerges when RBMs are stacked to form a deep belief network, a generative model consisting of many layers.

DBN中每一层都是二元/实值的层,层内单元无连接,相邻两层之间有全的对称的连接。Hinton在2006年提出了高效的训练DBN的算法,即从底层到高层,逐层地训练每一层,把前一层的激活值activations 当作输入。This procedure works well in practice.

3 算法

inference can be done efficiently using convolution。

1. CRBM(the convolutional RBM)

CRBM也由两层组成,V层和H层,即下图的下面两层。
V层是一张 N V × N V N_V \times N_V NV×NV的图片,暂时只考虑二元取值。
隐层有K个group,每个group都是一个 N H × N H N_H \times N_H NH×NH的二元阵列,所以共 N H 2 K N_H^2K NH2K个隐层单元。每个group都和一个 N W × N W N_W \times N_W NW×NW的filter关联。

解读:

  • CRBM模仿了CNN里的卷积机制,对显层使用K个不同的filter,每个filter学习到的结果是一个group,K个filter共学到K个group(用多个不同的卷积核是想学到尽量多的不一样的对输入的表示),所以隐层的每个group是由相同卷积核权重学来的。在CNN里,多个filter在输入体学到的二维激活map是排列在depth维度的,而这里CRBM中没有depth维度,隐层还是二维的,所以多个group是线性平铺在同一层。

  • 隐层的每个group单元共享一个偏置 b k b_k bk,所有显层单元共享偏置 c c c.
  • 根据数学容易知道, N H = N V − N W + 1 N_H=N_V-N_W+1 NH=NVNW+1
  • 一个group中的一个隐层unit连接了 N W 2 N_W^2 NW2个显层单元,它的输入是这 N W 2 N_W^2 NW2个显层单元和它所在group的卷积核的相关。

在这里插入图片描述

显隐两层单元们的联合概率和RBM完全一样,用网络的能量定义:

在这里插入图片描述

标准RBM(v,h层均为二元取值单元)的能量定义:

在这里插入图片描述
a i , b j a_i,b_j ai,bj分别是显层单元 v i , h j v_i,h_j vi,hj的偏置bias

CRBM的能量定义:

在这里插入图片描述

  • ( W ~ k ∗ v ) (\widetilde W^k*v) (W kv)表示第k个卷积核和显层相关的结果,由于使用卷积符号,所以先把卷积核 W W Wflip horizontally and vertically了,实际上卷积核和输入做的是相关运算,简单的相乘相加。
  • h k ⋅ ( W ~ k ∗ v ) h^k \cdot (\widetilde W^k*v) hk(W kv)表示矩阵的按元素相乘相加, h k h^k hk ( W ~ k ∗ v ) (\widetilde W^k*v) (W kv)都是 N H × N H N_H \times N_H NH×NH的矩阵。
    在这里插入图片描述
    可以看出,CRBM的能量定义只是在RBM基础上根据自身结构稍做了调整,但能量的组成仍然一样,都是由显层能量,隐层能量,两层的连接部分的能量,三部分组成。只是由于CRBM有K个group使得式子看起来稍微复杂了一些而已。
    稍微分析一下:
  • ∑ r , s = 1 N W h 11 1 W r s 1 v r s \sum_{r,s=1}^{N_W}h_{11}^1W_{rs}^1v_{rs} r,s=1NWh111Wrs1vrs表示隐层中第一个group里的 h 11 1 h_{11}^1 h111单元和显层中的 v r s , r , s = 1 , , , N W v_{rs},r,s=1,,,N_W vrsr,s=1,,,NW连接对网络产生/贡献的总能量。如果 h 11 1 = 1 h_{11}^1=1 h111=1则这部分能量就会计入网络总能量,否则不计入。

  • ∑ i , j = 1 N H ∑ r , s = 1 N W h i j 1 W r s 1 v r + i − 1 , s + j − 1 \sum_{i,j=1}^{N_H}\sum_{r,s=1}^{N_W}h_{ij}^1W_{rs}^1v_{r+i-1,s+j-1} i,j=1NHr,s=1NWhij1Wrs1vr+i1,s+j1表示隐层的第一个group里的所有单元和显层对应区域连接产生的总能量,当然每个隐元是否贡献能量仍取决于它是否被激活(取1)。 h N H , N H 1 h_{N_H,N_H}^1 hNH,NH1单元连接的显层区域是 v r + N H − 1 , s + N H − 1 , r , s = 1 , , , N W v_{r+N_H-1,s+N_H-1},r,s=1,,,N_W vr+NH1,s+NH1r,s=1,,,NW,刚好完全覆盖显层。

那么怎么确定隐层单元是否被激活呢?即如何确定隐层单元的取值(0 or 1)

答案是,和标准RBM一毛一样——块吉布斯采样block Gibbs sampling

在这里插入图片描述

v,h两层所有的单元是CRBM网络的所有需要被采样的单元,但根据联合概率 p ( v , h ) p(\boldsymbol v,\boldsymbol h) p(v,h)采样很难,所以我们进行块吉布斯采样,在这里即把所有变量分为两块v,h,在一块确定时对另一块采样,一次采样确定一块中所有单元的取值。(这建立在每块中的所有单元是条件独立的基础之上)

sigmoid 函数的参数是 h i j k h_{ij}^k hijk单元的总输入,包括自身偏置和来自显层和卷积核作卷积得到的输入。这样我们可以计算出所有 N H 2 K N_H^2K NH2K个隐元的激活概率,也就可以更新他们的取值啦,一次采样完成,再反复采样几次,即依次对V,h块采样,和RBM的训练完全一样。

2. 概率最大池化Probabilistic max-pooling

  • DBN是堆叠多个RBM或者Autoencoder,CDBN则堆叠多个CRBM,之所以都要堆叠是因为深的网络可以学到更高层的表示。

  • 通常,高层的特征检测器(隐层单元)需要逐渐地看到输入中的更大范围的信息。

In general, higher-level feature detectors need information from progressively larger input regions.

  • 已有的平移不变的表示,如卷积网络,通常包括两种层在不断交替出现,检测层和池化层,”detection" layers,“pooling" layers(把检测层检测到的表示representations缩小一个常数倍,which shrink the representation of the detection layers by a constant factor.)。
    最大池化可以保证高层表示对于输入的小的平移保持不变,还能减小计算量。Shrinking the representation with max-pooling allows higher-layer representations to be invariant to small translations of the input and reduces the computational burden.

  • 但最大池化只是为前馈网络设计的,而我们研究的是一个图像的生成模型,既要top-down也要bottom-up的推断。所以我们设计了一个像最大池化的东西——概率最大池化。

再看这个图,这次重点看最上面这个池化层:
在这里插入图片描述
池化层也有K个group,每个都有 N P ∗ N P N_P*N_P NPNP个二元取值单元。
池化层的每个group, P k P^k Pk,是沿着两个维度shrink H k H^k Hk常数C倍而得到的,C=2或3.
检测层的一个group被分为 α \alpha α个块block, B α B_{\alpha} Bα,块的size是 C ∗ C C*C CC,即 N H / N P = C N_H/N_P=C NH/NP=C。每个块只有一个值会被保留到池化层成为 P α k P^k_{\alpha} Pαk

池化规则:

  • 一个块最多只有一个单元被激活。在数学上则有:(块中所有单元被激活的概率之和小于等于1)
    在这里插入图片描述
  • 当且仅当块 B α B_{\alpha} Bα中有一个单元被激活时,池化层单元 p α p_{\alpha} pα被激活。

CRBM的能量因此改写为:
在这里插入图片描述

能量部分无改变,只是多了个约束条件。

现在考虑给定V层时,H和P层的采样。下式是隐层单元 h i j k h_{ij}^k hijk收到的来自输入的信息,正是这些信息作为计算 h i j k h_{ij}^k hijk激活概率的sigmoid的参数:
在这里插入图片描述

我们把每一个块当作它的输入的多项式函数,独立地对每块block 采样。
假设 h i j k h_{ij}^k hijk B α B_{\alpha} Bα的一个隐元,那么激活 h i j k h_{ij}^k hijk使网络增加的能量就是 − I ( h i j k ) -I(h_{ij}^k) I(hijk)
h i j k h_{ij}^k hijk被激活的条件概率用softmax函数计算:
在这里插入图片描述

但给定H层,对V层采样仍然是使用sigmoid激活函数计算激活概率,前面写了的:
在这里插入图片描述

3. 通过稀疏正则化训练Training via sparsity regularization

我们的模型在一点上过完备(翻译不太对,overcomplete)了,即representation的size远远大于输入的size了。
通常,overcomplete的模型都会有学到不重要trivial,太琐碎答案的风险。比如特征检测器学到像素值。
常用的解决办法就是强制把表示representation变得稀疏sparse,即只有一小部分的单元被激活(Olshausen & Field, 1996; Lee et al., 2008)。
我们用了Lee et al., 2008的方法,调整目标函数(数据的对数似然data log-likelihood)以使得每一个隐元的平均/期望激活值都接近于一个小的常数 ρ \rho ρ。计算稀疏正则表达式的梯度也是遵循了Lee et al., 2008.

4. CDBN

CDBN由几个max-pooling-CRBMs堆叠而成。
CDBN网络的能量定义为所有CRBM网络能量的和。
CDBN的训练仍然使用逐层贪婪训练法:一层训练好了,权重就固定了,激活值被作为下一层的输入。

5. 层级概率推断

参数全都学好以后(训练完成),我们在给定输入图像的条件下,通过对所有隐层的联合分布采样计算出网络对图像的表示。
block Gibbs sampling被用于从这个分布采样,每一层的所有单元并行被采样。
为了解释更清楚,我们描述了一个例子,一个显层V,一个隐层H,一个池化层P,再一个隐层 H ′ H' H,假设 H ′ H' H K ′ K' K个group。

矩阵A的size是( m A , n A m_A,n_A mA,nA), 矩阵B的size是( m B , n B m_B,n_B mB,nB

则A*B(卷积)的size是( m A + m B − 1 , n A + n B − 1 m_A+m_B-1,n_A+n_B-1 mA+mB1,nA+nB1)

详情参见 这个博文
注意,这是数学上的卷积运算,并不是CNN里面卷积核卷积图像那种操作(output的size为 ( N V − N W + 1 ) × ( N V − N W + 1 ) (N_V-N_W+1)\times (N_V-N_W+1) (NVNW+1)×(NVNW+1)):
在这里插入图片描述

所以下面式子中 W k ∗ h k W^k*h^k Wkhk得到的矩阵的size是 ( N W + N H − 1 ) × ( N W + N H − 1 ) (N_W+N_H-1)\times(N_W+N_H-1) (NW+NH1)×(NW+NH1),即 N V × N V N_V\times N_V NV×NV。所以可以和v层做element-wise 相乘相加运算。

可见,能量的计算只关注每个隐层,以及隐层和它前面那层之间的连接,不考虑池化层以及池化层和它前面的隐层的连接。

在这里插入图片描述

As an alternative to block Gibbs sampling, mean-field can be used to approximate the posterior distribution.
本文除了4.5节外的所有试验都用的均值场近似来估计给定输入图像时隐层单元的激活值,5次均值场迭代就可以了。

6. 讨论

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值