精华内容
参与话题
问答
  • 受限玻尔兹曼机

    2018-07-24 14:13:02
    受限玻尔兹曼机(RBM) 受限玻尔兹曼机(RBM)学习笔记(一)预备知识 https://blog.csdn.net/itplus/article/details/19168937 受限玻尔兹曼机(RBM)学习笔记(二)网络结构 ... 受限玻尔兹曼机(RBM)学习笔记...

    受限玻尔兹曼机(RBM)

    受限玻尔兹曼机(RBM)学习笔记(一)预备知识

    https://blog.csdn.net/itplus/article/details/19168937

    受限玻尔兹曼机(RBM)学习笔记(二)网络结构

    https://blog.csdn.net/itplus/article/details/19168967

    受限玻尔兹曼机(RBM)学习笔记(三)能量函数和概率分布

    https://blog.csdn.net/itplus/article/details/19168989

    受限玻尔兹曼机(RBM)学习笔记(四)对数似然函数

    https://blog.csdn.net/itplus/article/details/19169027

    受限玻尔兹曼机(RBM)学习笔记(五)梯度计算公式

    https://blog.csdn.net/itplus/article/details/19207371

    受限玻尔兹曼机(RBM)学习笔记(六)对比散度算法

    https://blog.csdn.net/itplus/article/details/19408143

    受限玻尔兹曼机(RBM)学习笔记(七)RBM 训练算法

    https://blog.csdn.net/itplus/article/details/19408701

    受限玻尔兹曼机(RBM)学习笔记(八)RBM 的评估

    https://blog.csdn.net/itplus/article/details/19408773

    附录:

    MCMC

    MCMC(一)蒙特卡罗方法

    http://www.cnblogs.com/pinard/p/6625739.html

    MCMC(二)马尔科夫链

    https://www.cnblogs.com/pinard/p/6632399.html

    MCMC(三)MCMC采样和M-H采样

    http://www.cnblogs.com/pinard/p/6638955.html

    MCMC(四)Gibbs采样

    http://www.cnblogs.com/pinard/p/6645766.html

     

     

     

    展开全文
  • 1、什么是受限玻尔兹曼机玻尔兹曼机是一大类的神经网络模型,但是在实际应用中使用最多的则是受限玻尔兹曼机(RBM)。受限玻尔兹曼机(RBM)是一个随机神经网络(即当网络的神经元节点被激活时会有随机行为,随机取值)。...

    1、什么是受限玻尔兹曼机

    玻尔兹曼机是一大类的神经网络模型,但是在实际应用中使用最多的则是受限玻尔兹曼机(RBM)。

    受限玻尔兹曼机(RBM)是一个随机神经网络(即当网络的神经元节点被激活时会有随机行为,随机取值)。它包含一层可视层和一层隐藏层。在同一层的神经元之间是相互独立的,而在不同的网络层之间的神经元是相互连接的(双向连接)。在网络进行训练以及使用时信息会在两个方向上流动,而且两个方向上的权值是相同的。但是偏置值是不同的(偏置值的个数是和神经元的个数相同的),受限玻尔兹曼机的结构如下

    上面一层神经元组成隐藏层(hidden layer), 用h向量隐藏层神经元的值。下面一层的神经元组成可见层(visible layer),用v向量表示可见层神经元的值。连接权重可以用矩阵W表示。和DNN的区别是,RBM不区分前向和反向,可见层的状态可以作用于隐藏层,而隐藏层的状态也可以作用于可见层。隐藏层的偏倚系数是向量b,而可见层的偏倚系数是向量a。

    常用的RBM一般是二值的,即不管是隐藏层还是可见层,它们的神经元的取值只为0或者1。

    RBM模型结构的结构:主要是权重矩阵W, 偏倚系数向量a和b,隐藏层神经元状态向量h和可见层神经元状态向量v。

    2、能量函数和概率分布

    RBM是基于基于能量的概率分布模型。分为两个部分:第一部分是能量函数,第二部分是基于能量函数的概率分布函数。对于给定的状态向量h和v,则RBM当前的能量函数可以表示为:

    其中a,b是偏倚系数,而W是权重矩阵。有了能量函数,v,h的联合概率分布为:

    其中Z是被称为配分函数的归一化常数(对于概率输出一般都要做归一化):

    由于配分函数Z的难以处理,所以必须使用最大似然梯度来近似。首先从联合分布中导出条件分布:

    为了推导方便将无关值归于Z’中:

    可以容易的得到在给定可视层v的基础上,隐层第j个节点为1或者为0的概率为:

    可以看到就是相当于使用了sigmoid激活函数,现在可以写出关于隐藏层的完全条件分布:

    有了激活函数,我们就可以从可见层和参数推导出隐藏层的神经元的取值概率了。对于0,1取值的情况,则大于0.5即取值为1。从隐藏层和参数推导出可见的神经元的取值方法也是一样的。

    3、RBM损失函数

    RBM模型的关键就是求出我们模型中的参数W,a,b。首先我们得写出损失函数,RBM一般采用对数损失函数,即期望最小化下式:

    然后求偏导可得:

    虽然说梯度下降从理论上可以用来优化RBM模型,但实际中是很难求得P(v)的概率分布的(P(v)表示可见层节点的联合概率)。计算复杂度非常大,因此采用一些随机采样的方法来得到近似的解。看这三个梯度的第二项实际上都是求期望,而我们知道,样本的均值是随机变量期望的无偏估计。因此一般都是基于对比散度方法来求解。

    4、 对比散度算法(CD)

    CD算法大概思路是这样的,从样本集任意一个样本v0开始,经过k次Gibbs采样(实际中k=1往往就足够了),即每一步是:

    得到样本vk,然后对应于上一篇三个单样本的梯度,用vk去近似:

    上述近似的含义是说,用一个采样出来的样本来近似期望的计算。下面给出CD-k的算法执行流程。

    具体RBM算法的流程:

    5、深度玻尔兹曼机(DBM)

    加深RBM的层数后,就变成了DBM,结构图如下:

    此时的能量函数变为:

    联合概率变成:

    其实DBM也可以看做是一个RBM,比如对上图稍微加以变换就可以看做是一个RBM。

    将可见层和偶数隐藏层放在一边,将奇数隐藏层放在另一边,我们就得到了RBM,和RBM的细微区别只是现在的RBM并不是全连接的,其实也可以看做部分权重为0的全连接RBM。RBM的算法思想可以在DBM上使用。只是此时我们的模型参数更加的多,而且迭代求解参数也更加复杂了。

    展开全文
  • 玻尔兹曼机 / 受限玻尔兹曼机

    千次阅读 2018-08-08 20:58:01
    玻尔兹曼机 / 受限玻尔兹曼机 是一种基于能量的模型,即能量最小化时网络模型达到理想状态。 网络结构上分两层: 显层用于数据的输入与输出,隐层则被理解为数据的内在表达。可见玻尔兹曼机的神经元状态都由0,1...

    玻尔兹曼机 / 受限玻尔兹曼机 是一种基于能量的模型,即能量最小化时网络模型达到理想状态。

    网络结构上分两层: 显层用于数据的输入与输出,隐层则被理解为数据的内在表达。可见玻尔兹曼机的神经元状态都由0,1组成。 

    受限玻尔兹曼机:

    数据集为,(本质上,玻尔兹曼机和受限玻尔兹曼机为自编码网络,是一种无监督学习方式),关于受限(同一层的单元互相不连接)玻尔兹曼机建立的能量函数为:

    基于能量函数,可以建立v,h的联合分布函数:

    以上是受限玻尔兹曼机工作。下面是玻尔兹曼机:

    展开全文
  • 受限玻尔兹曼机RBM

    2018-11-16 12:28:01
    受限玻尔兹曼机RBM,ppt
  • RBM受限玻尔兹曼机

    2017-10-10 20:22:37
    RBM受限玻尔兹曼机-An Introduction to Restricted Boltzmann Machines.pdf与受限波尔兹曼机_张春霞.pdf两篇文档,两者结合起来看,理解的更深刻。
  • 受限玻尔兹曼机基础教程

    千次阅读 2017-09-25 15:04:40
    定义与结构重构概率分布多层结构代码示例:堆叠式受限玻尔兹曼机参数与变量k连续受限玻尔兹曼机后续内容其他资源 定义与结构 受限玻尔兹曼机(RBM)由Geoff Hinton发明,是一种用于降维、分类、回归...

    目录


    定义与结构

    受限玻尔兹曼机(RBM)由Geoff Hinton发明,是一种用于降维、分类、回归、协同过滤、特征学习和主题建模的算法。(如需通过实例了解RBM等神经网络的应用方法,请参阅应用案例)。

    我们首先介绍受限玻尔兹曼机这类神经网络,因为它相对简单且具有重要的历史意义。下文将以示意图和通俗的语言解释其运作原理。

    RBM是有两个层的浅层神经网络,它是组成深度置信网络的基础部件。RBM的第一个层称为可见层,又称输入层,而第二个层是隐藏层。

    deeplearning4j

    上图中每个圆圈都是一个与神经元相似的单元,称为节点,运算在节点中进行。一个层中的节点与另一层中的所有节点分别连接,但与同一层中的其他节点并不相连。

    也就是说,层的内部不存在通信-这就是受限玻尔兹曼机被称为受限的原因。每个节点对输入进行处理和运算,判定是否继续传输输入的数据,而这种判定一开始是随机的。(“随机”(stochastic)一词在此处指与输入相乘的初始系数是随机生成的。)

    每个可见节点负责处理网络需要学习的数据集中一个项目的一种低层次特征。举例来说,如果处理的是一个灰度图像的数据集,则每个可见节点将接收一张图像中每个像素的像素值。(MNIST图像有784个像素,所以处理这类图像的神经网络的一个可见层必须有784个输入节点。)

    接着来看单个像素值x如何通过这一双层网络。在隐藏层的节点1中x与一个权重相乘,再与所谓的偏差相加。这两步运算的结果输入激活函数,得到节点的输出,即输入为x时通过节点的信号强度。

    Copy激活函数f((权重w * 输入x) + 偏差b ) = 输出a
    deeplearning4j

    下面来看一个隐藏节点如何整合多项输入。每个x分别与各自的权重相乘,乘积之和再与偏差相加,其结果同样经过激活函数运算得到节点的输出值。

    deeplearning4j

    由于每个可见节点的输入都被传递至所有的隐藏节点,所以也可将RBM定义为一种对称二分图

    对称指每个可见节点都与所有的隐藏节点相连接(见下图)。二分指有两个部分或层,而这里的是指代节点网络的数学名词。

    在每个隐藏节点中,每一个输入x都会与其相对应的权重w相乘。也就是说,每个输入x会对应三个权重,因此总共有12个权重(4个输入节点 x 3个隐藏节点)。两层之间的权重始终都是一个行数等于输入节点数、列数等于输出节点数的矩阵。

    每个隐藏节点会接收四个与对应权重相乘后的输入值。这些乘积之和与一个偏差值相加(至少能强制让一部分节点激活),其结果再经过激活运算得到每个隐藏节点的输出a。

    deeplearning4j

    如果这两个层属于一个深度神经网络,那么第一隐藏层的输出会成为第二隐藏层的输入,随后再通过任意数量的隐藏层,直至到达最终的分类层。(简单的前馈动作仅能让RBM节点实现自动编码器的功能。)

    deeplearning4j

    重构

    但在本教程中,我们将重点关注受限玻尔兹曼机如何在无监督情况下学习重构数据(无监督指测试数据集没有作为实际基准的标签),在可见层和第一隐藏层之间进行多次正向和反向传递,而无需加大网络的深度。

    在重构阶段,第一隐藏层的激活值成为反向传递中的输入。这些输入值与同样的权重相乘,每两个相连的节点之间各有一个权重,就像正向传递中输入x的加权运算一样。这些乘积的和再与每个可见层的偏差相加,所得结果就是重构值,亦即原始输入的近似值。这一过程可以用下图来表示:

    deeplearning4j

    由于RBM权重初始值是随机决定的,重构值与原始输入之间的差别通常很大。可以将r值与输入值之差视为重构误差,此误差值随后经由反向传播来修正RBM的权重,如此不断反复,直至误差达到最小。

    有关反向传播算法的详细介绍请参见此页

    由此可见,RBM在正向传递中使用输入值来预测节点的激活值,亦即输入为加权的x时输出的概率p(a|x; w)

    但在反向传递时,激活值成为输入,而输出的是对于原始数据的重构值,或者说猜测值。此时RBM则是在尝试估计激活值为a时输入为x的概率,激活值的加权系数与正向传递中的权重相同。 第二个阶段可以表示为p(x|a; w)

    上述两种预测值相结合,可以得到输入 x 和激活值 a 的联合概率分布,即p(x, a)

    重构与回归、分类运算不同。回归运算根据许多输入值估测一个连续值,分类运算是猜测应当为一个特定的输入样例添加哪种具体的标签。

    而重构则是在猜测原始输入的概率分布,亦即同时预测许多不同的点的值。这被称为生成学习,必须和分类器所进行的判别学习区分开来,后者是将输入值映射至标签,用直线将数据点划分为不同的组。

    试想输入数据和重构数据是形状不同的常态曲线,两者仅有部分重叠。

    RBM用Kullback Leibler散度来衡量预测的概率分布与输入值的基准分布之间的距离。相关数学运算的详细说明可参见维基百科

    KL散度衡量两条曲线下方不重叠(即离散)的面积,而RBM的优化算法会尝试将这些离散部分的面积最小化,使共用权重在与第一隐藏层的激活值相乘后,可以得到与原始输入高度近似的结果。下图左半边是一组原始输入的概率分布曲线p,与之并列的是重构值的概率分布曲线q;右半边的图则显示了两条曲线之间的差异。

    deeplearning4j

    RBM根据权重产生的误差反复调整权重,以此学习估计原始数据的近似值。可以说权重会慢慢开始反映出输入的结构,而这种结构被编码为第一个隐藏层的激活值。整个学习过程看上去像是两条概率分布曲线在逐步重合。

    deeplearning4j

    概率分布

    下面我们来介绍概率分布。如果掷两枚骰子,则所有结果的概率分布情况如下图所示:

    deeplearning4j

    也就是说,7是最有可能出现的结果,因为掷出7的组合方式(3+4、1+6、2+5)要多于掷出2到12之间其他数字的方式。任何预测掷骰子结果的公式都需要考虑到数字7的出现频率较高。

    或另一个例子:语言中的字母也有特定的概率分布,因为一种语言使用某些字母的频率会高于其他语言。在英语中,字母eta是最常见的,而冰岛语中最常见的字母则是arn。若用处理英语文本的权重来重构冰岛语,结果就会出现较大的误差。

    与此类似,图像数据集的像素值也有独特的概率分布,具体取决于数据集所包含图像的类别。数据集可能包括MNIST的手写数字图像:

    deeplearning4j

    或是自然脸部检测数据集(Labeled Faces in the Wild)中的头像:

    deeplearning4j

    试想有这样一个RBM,其输入数据都是大象和狗的图片,RBM仅有两个输出节点,分别对应一种动物。RBM在正向传递中要回答的问题是:在输入这些像素时,权重应当向哪个节点发送更强的信号?大象的节点还是狗的节点?而RBM在反向传递中要回答的问题是:如果输出是大象,则应当预期出现怎样的像素分布?

    这就是联合概率:给定ax的概率以及给定xa的概率,用RBM两层之间的一个共用权重来表示。

    学习重构数据的过程在某种意义上即是学习一组特定图像中有哪些像素通常会同时出现。网络深处隐藏层节点产生的激活值代表了明显的同现关系,例如:“非直线灰色管 + 大而松垂的耳朵 + 皱纹”。

    在上面的两幅图中,可以看到用Deeplearning4j实施的RBM所学会的重构。这些重构数据代表了原始数据在RBM激活函数“想象”中的模样。Geoff Hinton称之为机器在“做梦”。在神经网络定型过程中,这类图像是非常有用的启发式方法,可以让人确信RBM的确是在学习。如果RBM没有在学习,则应当调整它的超参数,下文将会介绍这一概念。

    最后一点:你会发现RBM有两个偏差值。这是RBM与其他自动编码器的区别所在。隐藏的偏差值帮助RBM在正向传递中生成激活值(因为偏差设定了下限,所以无论数据有多稀疏,至少有一部分节点会被激活),而可见层的偏差则帮助RBM通过反向传递学习重构数据。


    多层结构

    RBM根据第一个隐藏层的激活值学习了输入数据的结构之后,数据即在网络中继续向下传递一层。第一个隐藏层的作用现在相当于可见层。激活值实际上相当于输入,在第二个隐藏层的节点中与权重相乘,得到另一组激活值。

    将特征分组,再将特征组分组,由此连续生成多组激活值的过程是特征层次分析的基础,神经网络用这种方法来学习更为复杂且抽象的数据表达形式。

    每增加一个隐藏层,其权重都会反复进行调整,直到该层能较为准确地模拟出来自前一层的输入。这是无监督的逐层贪婪预定型方法,不需要标签就可以改进网络的权重,也就是说可以采用未标记、未经人工处理的数据来定型,而现实中大部分的数据都属于这一类别。一般的规律是,算法接触的数据越多,产生的结果越准确,这正是深度学习算法十分厉害的原因之一。

    权重能够近似模拟出数据的特征后,也就为下一步的学习奠定了良好基础,比如可以在随后的有监督学习阶段使用深度置信网络来对图像进行分类。

    RBM有许多用途,其中最强的功能之一就是对权重进行合理的初始化,为之后的学习和分类做好准备。从某种意义上来说,RBM的作用与反向传播相似:让权重能够有效地模拟数据。可以认为预定型和反向传播是实现同一个目的的不同方法,二者可以相互替代。

    下面这幅对称二分二向图综合显示了玻尔兹曼机的运作方式。

    deeplearning4j

    深度RBM是一种有向无环图(DAG),如有兴趣可点击链接了解其结构。


    代码示例:堆叠式受限玻尔兹曼机

    请参考这里


    参数与变量k

    变量 'k' 是对比散度算法运行的次数。对比散度是用于计算梯度(代表网络权重与其误差之间关系的斜率)的方法,也是网络进行学习的必要条件。

    对比散度算法每运行一次,就是一个组成受限玻尔兹曼机的马尔可夫链的样本。k的值通常为1。

    在上文的示例中,可以看到如何用更为通用的MultiLayerConfiguration来创建多个RBM层。每个点后面都是一项调节深度神经网络结构和性能产生的额外参数。大多数参数的定义都可在本网站内找到。

    weightInitweightInitialization表示用于放大或削弱进入每个节点的输入的系数的初始值。合理的初始权重可以节约大量定型时间,因为网络定型无非是通过调整系数来传输最佳的信号,进而让网络能进行准确的分类。

    activationFunction指一组确定节点信号传输阈值的函数,高于阈值则让信号通过节点,反之则阻拦信号。如果节点让信号通过,则该节点被“激活”。

    optimizationAlgo指神经网络逐步调整系数,最小化误差或求取最小误差轨迹的方式。LBFGS是一种使用二阶导数来计算系数调整所依据的梯度斜率的算法,其名称中的每个字母都代表一位发明人的姓。

    l2regularization方法帮助神经网络防止过度拟合。常态化实质上就是惩罚较大的系数,因为较大的系数表明网络在学习过程中将结果与个别权重较大的输入联系起来。权重过大可能导致网络模型无法通用,难以适应新的数据。

    VisibleUnit/HiddenUnit指一个神经网络的层。VisibleUnit是节点中接收输入的层,而HiddenUnit则是对来自更复杂特征的输入进行重组的层。这两种单元都有自己的变换算法,可见层是高斯变换,而隐藏层则是修正线性变换,用于将这些层输出的信号映射至新的空间。

    lossFunction用于衡量误差,而误差即是网络的猜测与测试数据集中包含的正确标签之间的差异。这里我们使用SQUARED_ERROR,可以将所有误差变为正数,以便于进行求和及反向传播运算。

    learningRatemomentum相似,可以调节神经网络每次根据误差修正系数时的调整幅度。这两项参数帮助决定网络用梯度下降求取局部最佳结果时每一步的幅度。学习速率较高会加快网络的学习速度,但有可能使结果超过最佳值。学习速率较低会减慢学习速度,导致效率低下。


    连续受限玻尔兹曼机

    连续受限玻尔兹曼机(CRBM)是一种借由不同的对比散度采样方式接收连续输入(即比整数分得更细的数值)的RBM。所以CRBM能够处理图像像素或字数向量等标准化至零与一之间的小数。

    应当注意的是,深度神经网络的每一层都必须有四个元素:输入、一组系数、一个偏差以及变换机制(激活算法)。

    输入是数值数据、向量,来自前一个层(或原始数据)。系数是通过每个节点层的各类特征所获得的权重。偏差确保无论出现怎样的情况,一个层内都会有一部分节点被激活。变换机制是对通过每个层后的数据进行挤压的附加算法,它能让梯度更容易计算(梯度是网络学习的必要条件)。

    不同层可能采用不同的附加变换算法及组合方式。

    有效的连续受限玻尔兹曼机对可见(输入)层采用高斯变换,而对隐藏层使用修正线性单元变换。这在人脸重构方面特别有效。对于处理二进制数据的RBM,两种层都使用二进制变换即可。

    RBM隐藏层使用高斯变换的效果并不理想。而修正线性单元变换则能够表示的特征多于二进制变换,我们将其用于深度置信网络


    总结与后续内容

    你可以将RBM的输出数值视为百分数。重构的数值只要不为零就都是良好的现象,表明RBM在学习这一输入。如需从另一角度了解受限玻尔兹曼机的运作机制,请点击此处

    应当注意的是,RBM并不是效果最稳定、最一致的浅层前馈网络。许多情况下,包含稠密层的自动编码器效果更好。整个行业也确实越来越倾向于使用变分自动编码器等工具。

    下面我们将演示如何实施深度置信网络,其实质就是将许多受限玻尔兹曼机堆叠起来。


    其他资源


    其他基础教程

     

    展开全文
  • 本文包括RBM的所有基础知识。代码可以见hinton的文章 玻尔兹曼机(BMS)是一种特殊的对数线性马尔可夫随机场(MRF)的形式,即...受限玻尔兹曼机进一步限制BMS中那些可见-可见和隐藏-隐藏的连接。本文是一个RBM的描述。
  • 受限玻尔兹曼机 模型

    千次阅读 2016-09-11 18:10:31
    受限玻尔兹曼机 简单介绍
  • 受限玻尔兹曼机(RBM)原理总结

    万次阅读 多人点赞 2018-08-12 20:28:00
    授权转发自:刘建平《受限玻尔兹曼机(RBM)原理总结》 地址:http://www.cnblogs.com/pinard/p/6530523.html   前 言 本文主要关注于这类模型中的受限玻尔兹曼机(Restricted Boltzmann Machine,以下简...
  • Deep Learning with TensorFlowIBM Cognitive Class ML0120ENModule 4 - Restricted Boltzmann Machine简介受限玻尔兹曼机是一种无监督,重构原始数据的一个简单的神经网络。受限玻尔兹曼机先把输入转为可以表示它们...
  • 七.RBM受限玻尔兹曼机

    2019-10-02 08:04:36
    1、受限玻尔兹曼机  玻尔兹曼机是一大类的神经网络模型,但是在实际应用中使用最多的则是受限玻尔兹曼机(RBM)。  受限玻尔兹曼机(RBM)是一个随机神经网络(即当网络的神经元节点被激活时会有随机行为,随机...
  • 受限玻尔兹曼机(RBM) 文章目录受限玻尔兹曼机(RBM)概念详细讲解: 概念 Restricted Boltzmann machine(RBM),受限玻尔兹曼机。是一种无监督学习算法,是深度神经网络走红之前,常见的一种用于深度概率模型...
  • 受限玻尔兹曼机的分类效果怎么样?(对于很多种分类的分类效果如何?)

空空如也

1 2 3 4 5 ... 20
收藏数 520
精华内容 208
关键字:

受限玻尔兹曼机