深度信念网络DBN

以下内容翻译自A fast learning algorithm for deep belief nets by Geoffrey E. HintonandSimon Osindero

一些符号:

W.T:W的转置

1 Introduction

学习一个有向新年网络面临的问题:

1.难以所有层在推断隐藏状态条件下的后验分布

2.局部极值和梯度弥散

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的简单理解

贝叶斯网络“解去”(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  
    

时间: 2024-10-07 12:33:37

深度信念网络DBN的相关文章

机器学习——DBN深度信念网络详解(转)

深度神经网路已经在语音识别,图像识别等领域取得前所未有的成功.本人在多年之前也曾接触过神经网络.本系列文章主要记录自己对深度神经网络的一些学习心得. 简要描述深度神经网络模型. 1.  自联想神经网络与深度网络 自联想神经网络是很古老的神经网络模型,简单的说,它就是三层BP网络,只不过它的输出等于输入.很多时候我们并不要求输出精确的等于输入,而是允许一定的误差存在.所以,我们说,输出是对输入的一种重构.其网络结构可以很简单的表示如下: 如果我们在上述网络中不使用sigmoid函数,而使用线性函数

深度信念网络

深度信念网络 (Deep Belief Network, DBN) 由 Geoffrey Hinton 在 2006 年提出.它是一种生成模型,通过训练其神经元间的权重,我们可以让整个神经网络按照最大概率来生成训练数据.我们不仅可以使用 DBN 识别特征.分类数据,还可以用它来生成数据.下面的图片展示的是用 DBN 识别手写数字: 图 1 用深度信念网络识别手写数字.图中右下角是待识别数字的黑白位图,它的上方有三层隐性神经元.每一个黑色矩形代表一层神经元,白点代表处于开启状态的神经元,黑色代表处

Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.3

Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.3 http://blog.csdn.net/sunbow0 第二章Deep Belief Network (深度信念网络) 3实例 3.1 測试数据 依照上例数据,或者新建图片识别数据. 3.2 DBN实例 //****************例2(读取固定样本:来源于经典优化算法測试函数Sphere Model)***********// //2 读取样本数据 Logge

Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.2

Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.2 http://blog.csdn.net/sunbow0 第二章Deep Belief Network (深度信念网络) 2基础及源代码解析 2.1 Deep Belief Network深度信念网络基础知识 1)综合基础知识參照: http://tieba.baidu.com/p/2895759455   http://wenku.baidu.com/link?url=

深度信任网络DBN的一个matlab实例

关于深度学习的一些个人浅见: 深度学习通常是训练深度(多层)神经网络,用于模式识别(如语音.图像识别):深度网络 指是具有深层(多层)网络结构的神经网络. 深层网络由于神经元多,参数多,拟合表现能力强,有表现欲解决复杂问题的能力. 但是深度网络存在很多局部最优解,深度网络的训练容易停留在局部最优上,初始参数的选择对网络最终收敛在那个位置有很大的影响. 采用限制玻尔兹曼机RBM对深度网络做逐层无监督训练,将各单层训练得到的参数作为深度网络各层神经元的初始参数,该参数是深度网络参数空间的一个较好位置

RBM(受限玻尔兹曼机)和深层信念网络(Deep Brief Network)

目录: 一.RBM 二.Deep Brief Network 三.Deep Autoencoder 一.RBM 1.定义[无监督学习] RBM记住三个要诀:1)两层结构图,可视层和隐藏层:[没输出层]2)层内无连接,层间全连接:3)二值状态值,前向反馈和逆向传播求权参.定义如下: 一般来说,可见层单元用来描述观察数据的一个方面或一个特征,而隐藏层单元的意义一般来说并不明确,可以看作特征提取层. 比较通俗解释RBM的博客:https://blog.csdn.net/u013631121/artic

八.DBN深度置信网络

BP神经网络是1968年由Rumelhart和Mcclelland为首的科学家提出的概念,是一种按照误差反向传播算法进行训练的多层前馈神经网络,是目前应用比较广泛的一种神经网络结构.BP网络神经网络由输入层.隐藏层和输出层三部分构成,无论隐藏层是一层还是多层,只要是按照误差反向传播算法构建起来的网络(不需要进行预训练,随机初始化后直接进行反向传播),都称为BP神经网络.BP神经网络在单隐层的时候,效率较高,当堆积到多层隐藏层的时候,反向传播的效率就会大大降低,因此BP神经网络在浅层神经网路中应用

深度复数网络 Deep Complex Networks

转自:https://www.jiqizhixin.com/articles/7b1646c4-f9ae-4d5f-aa38-a6e5b42ec475  (如有版权问题,请联系本人) 目前绝大多数深度学习模型中的数学都是实数值的,近日,蒙特利尔大学.加拿大国家科学院-能源/材料/通信研究中心(INRS-EMT).微软 Maluuba.Element AI 的多名研究者(其中包括 CIFAR Senior Fellow Yoshua Bengio)在 arXiv 上发布了一篇 NIPS 2017(

深度卷积网络CNN与图像语义分割

转载请注明出处: http://xiahouzuoxin.github.io/notes/ 级别1:DL快速上手 级别2:从Caffe着手实践 级别3:读paper,网络Train起来 级别3:Demo跑起来 读一些源码玩玩 熟悉Caffe接口,写Demo这是硬功夫 分析各层Layer输出特征 级别4:何不自己搭个CNN玩玩 级别5:加速吧,GPU编程 关于语义分割的一些其它工作 说好的要笔耕不缀,这开始一边实习一边找工作,还摊上了自己的一点私事困扰,这几个月的东西都没来得及总结一下.这就来记录