以下内容翻译自A fast learning algorithm for deep belief nets by Geoffrey E. HintonandSimon Osindero
一些符号:
W.T:W的转置
1 Introduction
学习一个有向新年网络面临的问题:
1.难以所有层在推断隐藏状态条件下的后验分布
3.学习过程慢(因为要一次性学习所有参数)
模型:最上两个隐藏层两层形成一个联想存储器(associative memory),其他的隐藏层形成了一个有向无环图(DAG),他们将联想存储器中的表示向下传递到输入层来重构可视变量,例如图片像素。
我们将描述这样一个模型,他的最上面两层形成了一个无向的 联合存储器(associative memory),如图1,
图1
其他的隐藏层形成了一个有向无环图(DAG),他们将联想存储器中的表示向下传递到输入层转换成了可视变量,例如图片像素。
在继续下面的章节之前,提出一个问题:
对于一个新年网络,为什么一次学习一层非常困难呢?
原因如下:
如图2,为了学习到W,我们需要第一个隐藏层的后验分布(具体件RBM里的公式推导)
1.由于“explaining away”现象
2.后验分布依赖于先验分布和极大似然,即使我们一次只是单独的学习某一层,但所有的W都是相互影响的。
3.需要综合所有高层的参数来获得第一个隐藏层的先验分布
图2
1.
2 Complementary priors
图3是一个简单的logistic 信念网络,其中包含两个相互独立的因素,当我们观察到house jumped发生的时候,他们就变成高度反相关的
(anti-correlated)。eathquake 结点上的偏差-10是指,在没有任何输入时,这个节点发生的概率是不发生的 倍(p(A)/P(~A)=
)。如果地震节点激活并且truck结点不被激活,那么jump结点的总输入为0(这时earthquake给house
jumps一个输入,truck没有输入),这意味着它激活和不激活的几率相等。同样,当earthquake和truck丢不发生时,house jump的概率是。但是将两个隐藏因素都进行激活来解释我们观察到的是非常浪费的,因为他们同时发生的概率是。但是如果earthquake结点被激活的,那么它就会消去‘explains
away’truck 结点的概率。为什么这么说,假设房子倒塌的可能性包括地震和恐怖袭击,如果我们发现房子倒了,那么很有可能发生了两者中的一个,但如果我们知道是恐怖分子用飞机撞倒的,那么我们就无法判断是不是发生了地震。这时地震的概率就从“很可能”变回了“有可能”,概率降低了,这就是explaining away。
图2
上述explaining away现象,的现象使得有向信念网络的推断变得非常复杂。在密集连接的网络中,我们很难求出隐藏变量的后验分布(从上到下的阶段时,下面的层都是从上面的层推导出来,即下面的层是house jumps,上面是earthquake和truck hits),除了一些特殊的情况,例如混合模型和有高丝噪声的线性模型。
图4
Complementary Priors
假设有个层次的有向图结构(图4),假设我们由下列条件概率
注意这个公式把是反转的,从i+1->i
这样我们就可以修改模型中的边为
图5
这样的话,我们对后验分布进行采样,实际上是在向上执行一个马尔可夫链,Complementary Priors实际上就是这个马尔可夫链的平稳状态
(这就是下文提到的的factorial distribution)
————————————————————
关于explaining away的解释:
整理笔记(11)—— Explaining Away的简单理解
关于Complementary Prior的解释:[20140410] Complementary Prior
Setting
the Stage; Complementary Priors and Variational Bounds
————————————————————
2.1 An infinite directed model with tied weights
图6
图6是一个由tied weights的无限的logistic信念网络,向下的箭头代表生成模型(generative),向上的箭头代表recognition model。
我们可以通过一个随机的初始状态在无限深的隐藏层中生成数据,然后自上到下的传递这个随机状态(其中每一层的每个变量的二值状态都是这样选择出来的:将一个伯努里分布和sigmoid(data*W.T+bias)进行比较,详细见RBM的Gibbs抽样部分)。
h0中的变量是和v0条件独立的,这样的话推断过程就会非常简单了,只需要将h0乘上W.T。
ho以上的模型实现了complemenatary prior。
从这个角度来看,它就和其他任何的有向无环信念网络一样。但是,我们是从所有的隐藏层对真实的先验分布进行采样,并且是从将可视单元上的数据向量作为初始状态的,然后使用权重矩阵的转置来反向推断出每个隐藏层的factorial分布
从可视单元开始,使用W.T推断出每个隐藏层的factorial 分布
计算某个层的后验分布=Gibbs采样的一步
计算对于第j层的H0,第i层的V0(图6),最大似然函数的对于一个单个的数据向量v0的梯度:
(2)
其中代表采样状态的平均值,是在用隐藏单元的状态对可视向量进行随机的重建时,单元i将会被激活的概率。
用第一个隐藏层采样得到的二值状态H0来计算第二个隐藏层的后验分布V1,整个过程相当于重建data,所以是从概率为伯努里随机变量中采样得到的。那么整个学习过程如下
(3)
从(2)到(3)的转换中,对依赖并不会对上式中的导数造成问题,这是因为是条件概率(
)下的期望。因为权重是不变的,权重的全导数等于layer内所有变换之间权重的导数之和
3 Restricted Boltzmann machines and ontrastive divergence learning
定义相关变量,代表当数据向量固定于输入单元且隐藏状态是从条件分布中采样的得到时。然后执行Gibbs采样(图7)知道达到平稳分布,计算出相关,则log概率的梯度为(5),和(4)相一致。对一个有向网络由上到下执行相当于使得一个RBM达到平稳分布,即一个无限有向网络定义来一个和RBM同样的分布
图7
RBM中的对比散度算法非常有效,但是它不适用于深层网络(每层的权重不一样),因为如果网络层次太多了,即使固定了数据向量也很难达到条件均衡(conditional equilibrium)。
4 A greedy learning algorithm for transforming representations
图8
图5,一个混合网络。最上面两侧由无向边连接形成来一个联合存储器(associative memory)。下面的层都是有向的,自下向上的边(文中称为generative connections)可以被用来将联想存储器映射到一个图像。图中从上到下有向边被称为generative
connections,用于它下面这些层的foriactal representation(上面由解释,不记得请Ctrl+F)。
图5最上两层的无向边相当于 一个黑盒,这个盒子里有无数层(带有tied wights)。为了方便分析,假设所有的层都有相同数量的单元。假设上面的层形成了一个complementary
prior,这样我们可以学习到的一个合理数值(虽然不是最优的,此时相当于假设W0之上所有的W都和W0相等)。
贪婪算法:
1.假设每层都是tied weights,学习;固定,然后使用来推断factorial
,估算第一个隐藏层状态参数的后验概率。这相当于学习一个RBM,如图8。由于我们执行n步对比散度算法,这相当于了相当于忽略n层以上的梯度。
图9
2.固定第一层的权重(上下两个方向都固定),然后学习更高层的权重;这相当于学习另一个RBM。
图10
如果贪婪算法改变了更高层的权重矩阵,那么我们就能保证生成模型得到了优化。如Hinton在A new view of the EM algorithm that justifies incremental, sparse and other variants 中提到的:单个数据向量v0的log概率(在多层的生成模型下)是和自由能(free
energy)联系起来的。自由能是在模拟分布(approximating distribution)下的期望能量减去这个分布的熵。对于一个直接的模型,在下的能量为
那么他们直接的约束为
其中是第一个隐藏层的二值状态,是在当前模型(是通过H0的权重定义的)的先验概率,是第一个隐藏层的二值状态的概率分布。当且仅当是真实的后验分布时,(8)变成等式。
当所有的权重矩阵都被tie在一起时,通过(对data-vector)产生的H0上的factorial分布是真实的后验分布,所以贪婪算法的第二步等于约束条件。第2步固定和,此时约束的导数等于
所以最大化约束等于最大化数据集的log概率(其中h0发生的概率为)。如果约束条件更加严格的话,即使下界增长,也还可以下降,但是不能比贪婪算法第2步的值还小,因为这个时候约束条件非常严格,并且约束条件的值是一直上升的。
我们可以迭代执行贪婪算法,所以如果我们使用极大似然的RBM学习算法来学习每一个tied权重的时候,我们需要untie最底层的权重,我们每次学习一个层次,来保证我们不会减少整个生成模型的Log概率。实际上,我们用对比散度学习算法来代替极大似然RBM学习算法,因为前者更快更好。使用对比散度散发避免了untie这个步骤,但是我们仍然需要不断确定,如果我们单独学习每一个层次,这时其他层次应该能保证使模型得到优化。
为了保证贪婪算法能偶通过学习更多的层来优化生成模型,我们设计一个所有层次的大小都是一样的模型,这样的话更高层的权重可以用之前学到的值来初始化(这个值是在他们被下面那一层的权重untie之前学习到的)。当然,这个贪婪算法也可以用于层的大小不同的情况。
5 Back-Fitting with the up-down algorithm
局部最优:每次学习一层的权重矩阵非常有效,但是也许不能得到最优的结果。一旦学习到了高层的权重,不论是权重还是推断对低层的来说都可能不是最优的。
1.这种局部最优对监督方法并没有什么问题,但可能不使用非监督方法。
2.标签中可能包含了很多零零碎碎的信息,所以可能会产生过拟合问题(over-fitting)。
wake-sleep算法
1."wake"或者"up-pass",使用recognition weights,随机初始化隐藏参数,使用(2)式从下到上调整generaive weights
2.联想存储器中的无向边,和预训练中的方法相同。
当训练最上层的weights时,提供标签作为输入,使用softmax进行分类
3.‘‘sleep‘‘或者‘‘down-pass‘‘阶段,使用generative weights,从上两层的联想存储器开始从上到下调整recognition weights