Restricted Boltzmann Machine 受玻尔兹曼机与DBM深度信念网络

本文深入探讨了受限玻尔兹曼机(RBM)的基本原理,包括其能量函数、学习过程及对比熵度算法,并介绍了深度信念网(DBN)的结构与训练方法,最后讨论了经典DBN网络的应用。

声明:

本文是阅读别人文章的基础上的自己理解。

文中有些部分直接以图片拷贝形式。

强烈建议读者读读参考文献【1】


一、受限玻尔兹曼机RBM

1、概念

受限玻尔兹曼机(Restricted Boltzmann Machine,简称RBM)一种生成式随机神经网络(generative stochastic neural network),该网络是一个二部图,一层是可视层,即输入数据层(v),一层是隐藏层(h),两层间为全连接,层内无连接(相互独立),每个节点只能取{0,1}两个值。如下图所示:


上图所示的RBM含有12个可见单元(构成一个向量v)和3个隐藏单元(构成一个向量h),W是一个12*3的矩阵,表示可见单元和隐藏单元之间的边的权重。

2.能量函数

 2.1正则分布及能量

根据系统的物理性质,系统所处的状态具备一定的随机性,不同的状态会使系统具有不同的能量,假设处在状态i 的概率为P_{i},E_{i}表示系统具有的能量,统计力学的一个基本论断:系统与外界达到热平衡时,系统所处状态i的概率P_{i}为

                            (1)             其中:

T表示热平衡时的温度,为正数。这种概率分布的形式就叫做正则分布。

从形式上看,能量越小,概率越大;当T变大至无穷大时,各状态概率趋近于相等,退化为均匀分布。

2.2 RBM的能量函数

对于RBM,给定一对状态{v,h},则其能量函数为

(2)

则其(v,h)的概率联合分布为:

(3)

其中称为归一化因子,也

根据(3)可以得到边缘分布:

(4)

(5)

2.3 对数似然函数

假定样本训练集合为,独立同分布。训练RBM的目标即为最大化如下似然函数:

(6)

连乘计算比较复杂,一般取对数似然函数,如下(注意是样本可视层v上的似然函数):

(7)

3.学习过程

3.1 学习方法

似然函数的最大化,容易想到的是使用梯度上升法,,关键问题是梯度的计算。

对W求梯度:

(8)

经过化解: (9)(具体过程见参考资料【1】)

 后者等于

                           (10)

  式子(9)中的前者比较好计算,只需要求vihj在全部数据集上的平均值即可,而后者涉及到v,h的全部2|v|+|h|种组合,计算量非常大(基本不可解)。

3.2 对比熵度算法CD

为解决(10)的计算问题,Hinton等人2002年提出了一种高效的学习算法-对比熵度算法CD(Contrastive Divergence),其基本思想如下图所示:

    


接着利用k步Gibbs采样后得到的近似(10)对应的期望项

即利用(11)来

近似(10)式

3.3 RBM训练算法

训练过程如下:(文献【1】)


4.总结(我的初步理解)

RBM方法由hinton提出,其无监督自学习特点使其成为一种主要的深度学习框架,而且CD方法的近似梯度大大减少了复杂度,可以高效地用于学习。

其基本假设为v,h层内是相互独立的。


二、DBM深度信念网Deep Belief Machine(转载)

如果,我们把隐藏层的层数增加,我们可以得到Deep Boltzmann Machine(DBM)。深度玻尔兹曼机

DBN 是由多层 RBM 组成的一个神经网络,它既可以被看作一个生成模型,也可以当作判别模型,其训练过程是:使用非监督贪婪逐层方法去预训练获得权值。 
训练时一层一层训练,训练完成后的新的一层,作为可见层,再训练上一层。

训练过程: 
1. 首先充分训练第一个 RBM; 
2. 固定第一个 RBM 的权重和偏移量,然后使用其隐性神经元的状态,作为第二个 RBM 的输入向量; 
3. 充分训练第二个 RBM 后,将第二个 RBM 堆叠在第一个 RBM 的上方; 
4. 重复以上三个步骤任意多次; 
5. 如果训练集中的数据有标签,那么在顶层的 RBM 训练时,这个 RBM 的显层中除了显性神经元,还需要有代表分类标签的神经元,一起进行训练: 
a) 假设顶层 RBM 的显层有 500 个显性神经元,训练数据的分类一共分成了 10 类; 
b) 那么顶层 RBM 的显层有 510 个显性神经元,对每一训练训练数据,相应的标签神经元被打开设为 1,而其他的则被关闭设为 0。 
6. DBN 被训练好后如下图: (示意) 
【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
 图 3 训练好的深度信念网络。图中的绿色部分就是在最顶层 RBM 中参与训练的标签。注意调优 (FINE-TUNING) 过程是一个判别模型 
 另:
【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
 
调优过程 (Fine-Tuning) : 
生成模型使用 Contrastive Wake-Sleep 算法进行调优,其算法过程是: 
1. 除了顶层 RBM,其他层 RBM 的权重被分成向上的认知权重和向下的生成权重; 
2. Wake 阶段:认知过程,通过外界的特征和向上的权重 (认知权重) 产生每一层的抽象表示 (结点状态) ,并且使用梯度下降修改层间的下行权重 (生成权重) 。也就是“如果现实跟我想象的不一样,改变我的权重使得我想
象的东西就是这样的”。 
3. Sleep 阶段:生成过程,通过顶层表示 (醒时学得的概念) 和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概
念”。 

使用过程 :
1. 使用随机隐性神经元状态值,在顶层 RBM 中进行足够多次的吉布斯抽样; 
2. 向下传播,得到每层的状态。 


三、经典的DBN网络结构

         经典的DBN网络结构是由若干层 RBM 和一层 BP 组成的一种深层神经网络, 结构如下图所示.
          

   DBN 在训练模型的过程中主要分为两步:
    第 1 步:分别单独无监督地训练每一层 RBM 网络,确保特征向量映射到不同特征空间时,都尽可能多地保留特征信息;
    第 2 步:在 DBN 的最后一层设置 BP 网络,接收 RBM 的输出特征向量作为它的输入特征向量,有监督地训练实体关系分类器.而且每一层 RBM 网络只能确保自身层内的 权值对该层特征向量映射达到最优,并不是对整个 DBN 的特征向量映射达到最优,所以反向传播网络还将错误信息自顶向下传播至每一层 RBM,微调整个 DBN 网络.RBM 网络训练模型的过程可以看作对一个深层 BP 网络权值参数的初始化,使DBN 克服了 BP 网络因随机初始化权值参数而容易陷入局部最优和训练时间长的缺点.

      上述训练模型中第一步在深度学习的术语叫做预训练,第二步叫做微调。最上面有监督学习的那一层,根据具体的应用领域可以换成任何分类器模型,而不必是BP网络。



关于贝叶斯网络“解去”(explaining away)

当我们建立多因一果的BN结构时,如果其中一个原因已经确定了结果的形成,那其他原因就应该忽略。


上图为一个简单的BN模型,在我们有任何证据证明C成立之前,A和B是独立的证据。也就是说,改变一个没有影响到其他。但只要我们获得了证据证明C,A的概率变化必然引起B概率相反的变化,反之亦然。它们是相互竞争地解释C的成立.这就是说,只要我们用A把C成立这件事解释过去了,那B作为C的原因也就没有意义了。


参考文献:

【1】皮果提 ,RBM系列博文:http://blog.youkuaiyun.com/itplus/article/details/19168937

【2】kemaswill,cnblog:http://www.cnblogs.com/kemaswill/p/3203605.html

【3】《深度学习学习笔记整理系列》 by Zouxy09. 

【4】http://m.blog.youkuaiyun.com/blog/chlele0105/17251971

【5】【面向代码】学习 Deep Learning(二)Deep Belief, Nets(DBNs)http://blog.youkuaiyun.com/dark_scope/article/details/9447967


### 三级标题:深度玻尔兹曼机DBM)概述 深度玻尔兹曼机(Deep Boltzmann MachineDBM)是一种基于概率图模型的深度学习结构,它是玻尔兹曼机Restricted Boltzmann MachineRBM)的推广形式。DBM 由多个 RBM 层堆叠构成,形成一个具有深层结构的概率生成模型。传统的 RBM 不同,DBM 的每一层神经元之间是无连接的,但相邻层之间存在全连接关系,这种结构使得 DBM 能够学习到更加复杂的特征表示 [^1]。 DBM 的训练过程通常分为两个阶段:预训练和微调。在预训练阶段,每一层 RBM 被独立训练,以学习输入数据的局部特征。在微调阶段,整个网络通过全局优化算法(如对比散度算法)进行联合训练,以提升模型的整体性能 [^2]。DBM 的训练依赖于基于马尔可夫链蒙特卡洛(MCMC)的采样方法,例如 Gibbs 采样,以近似计算梯度,从而优化模型参数 [^4]。 ### 三级标题:深度玻尔兹曼机DBM)原理 DBM 的基本原理建立在 RBM 的基础上。RBM 是一个两层模型,包含一个可见层和一个隐藏层,层内无连接,层间全连接。DBM 通过堆叠多个隐藏层构建深层结构,每一层都上下两层进行交互,从而形成一个多层次的概率模型 [^1]。 DBM 的能量函数定义为所有层神经元状态的联合概率分布,其目标是最大化训练数据的对数似然。由于直接计算梯度的复杂度极高,DBM 通常采用基于 Gibbs 采样的对比散度方法来近似估计梯度,并通过梯度下降法优化参数 [^4]。该方法在训练过程中逐步调整神经元之间的连接权重,使得模型能够更好地拟合输入数据的分布。 ### 三级标题:深度玻尔兹曼机DBM)应用 DBM 作为一种深度生成模型,广泛应用于特征提取、推荐系统、自然语言处理和图像识别等领域。在推荐系统中,RBM 被用于协同过滤任务,DBM 则通过引入更深层次的结构,提升了推荐的准确性和泛化能力 [^3]。 在图像处理方面,DBM 可用于图像重建和生成任务。通过训练 DBM 模型,可以从低维隐藏空间生成高质量的图像样本。此外,在自然语言处理中,DBM 被用于学习文本的语义表示,从而提升文本分类和语义相似度计算的性能 [^2]。 ### 三级标题:示例代码 以下是一个简化版的 DBM 训练流程示例,使用 Python 和 PyTorch 框架实现: ```python import torch import torch.nn as nn import torch.nn.functional as F class RBM(nn.Module): def __init__(self, visible_dim, hidden_dim): super(RBM, self).__init__() self.W = nn.Parameter(torch.randn(hidden_dim, visible_dim) * 0.01) self.h_bias = nn.Parameter(torch.zeros(hidden_dim)) self.v_bias = nn.Parameter(torch.zeros(visible_dim)) def sample_from_p(self, p): return F.relu(torch.sign(p - torch.rand_like(p))) def v_to_h(self, v): p_h = torch.sigmoid(F.linear(v, self.W, self.h_bias)) return p_h, self.sample_from_p(p_h) def h_to_v(self, h): p_v = torch.sigmoid(F.linear(h, self.W.t(), self.v_bias)) return p_v, self.sample_from_p(p_v) def forward(self, v): p_h, h = self.v_to_h(v) p_v, v = self.h_to_v(h) return v class DBM(nn.Module): def __init__(self, layers): super(DBM, self).__init__() self.rbms = nn.ModuleList([RBM(layers[i], layers[i+1]) for i in range(len(layers)-1)]) def forward(self, x): for rbm in self.rbms: x = rbm.v_to_h(x)[1] return x ``` 上述代码定义了一个 RBM 模块和一个 DBM 模型,DBM 由多个 RBM 堆叠构成。每个 RBM 都通过 Gibbs 采样进行训练,最终构建出一个深层的概率模型。 ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值