精华内容
下载资源
问答
  • 受限玻尔兹曼机基础教程

    千次阅读 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并不是效果最稳定、最一致的浅层前馈网络。许多情况下,包含稠密层的自动编码器效果更好。整个行业也确实越来越倾向于使用变分自动编码器等工具。

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


    其他资源


    其他基础教程

     

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

    2018-10-24 21:49:13
    受限玻尔兹曼机分层二分图多层重建数据summary RBM-神经网络 分层 RBM的第一层被称为可见层或者输入层,第二层叫做隐藏层。 相邻层之间是相连的,但是同层之间的节点是不相连的。也就是RBM不存在层内通信,这就是...


    RBM-神经网络

    分层

    RBM的第一层被称为可见层或者输入层,第二层叫做隐藏层。
    RBM两层
    相邻层之间是相连的,但是同层之间的节点是不相连的。也就是RBM不存在层内通信,这就是RBM中的限制所在。每一个节点都是处理输入数据的单元,每个节点随机决定是否传递输入,这里修改输入的参数都是随机初始化的。
    计算过程

    每个X乘以一个独立的权重,然后相加后再加一个偏置项,最后将结果传递到激活函数来产生输出。

    二分图

    因为所有可见(或输入)节点的输入都被传递到所有的隐藏节点了,所以RBM可以被定义为对称二分图(symmetrical bipartite graph)
    对称意味着每个可见节点都于一个隐藏节点相连,二分则意味着它具有两部分,或者两层。

    多层

    一个输入x会拥有12个权重。
    一个隐藏层的输出会被传递到第二个隐藏层作为输入,从这里开始就可以有很多隐藏层。
    多个隐藏层
    对于简单的前馈网络,RBM节点起着自编码器的作用。

    重建数据

    不涉及更深层次网络的情况下,可见层和第一个隐藏层之间会存在数次前向和反向传播。
    因为RBM的权重是随机初始化的,所以重建结果和原始输入数据的差距通常较大,可以将误差进行反向传播,通过迭代,直到达到某个误差最小值。

    summary

    (NO! tansig、sigmoid、pureline)
    y1=x1w11+x2w21+x3w31+x4w41+b1y_1=x_1*w_11+x_2*w21+x_3*w_31+x_4*w_41+b_1
    x1=y1w11+y2w21+y3w31+a1x_1=y_1*w_11+y_2*w21+y_3*w_31+a_1

    展开全文
  • 首先采用多层无监督卷积受限玻尔兹曼机自动对.肺结节图像进行特征学习,然后利用分类受限玻尔兹曼机对获得的特征进行良恶性分类。为避免分类受限玻.尔兹曼机在训练中出现的特征同质化问题,引入了交叉熵稀疏惩罚对其...
  • 干货 | 受限玻尔兹曼机基础教程

    千次阅读 热门讨论 2018-03-28 00:00:00
    定义与结构受限玻尔兹曼机(RBM)由Geoff Hinton发明,是一种用于降维、分类、回归、协同过滤、特征学习和主题建模的算法。下载pdf,请后台回复关键词:20180328目录:1. 定义与结构2. 重构3. 概率分布4. 多层结构5....
        

    定义与结构

    受限玻尔兹曼机(RBM)由Geoff Hinton发明,是一种用于降维、分类、回归、协同过滤、特征学习和主题建模的算法。




    下载pdf,请后台回复关键词:

    20180328

    目录:

    1. 定义与结构

    2. 重构

    3. 概率分布

    4. 多层结构

    5. 参数与变量k

    6. 连续受限玻尔兹曼机

    7. 学习资源



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


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

    0

    上图中每个圆圈都是一个与神经元相似的单元,称为节点,运算在节点中进行。一个层中的节点与另一层中的所有节点分别连接,但与同一层中的其他节点并不相连。也就是说,层的内部不存在通信-这就是受限玻尔兹曼机被称为受限的原因。每个节点对输入进行处理和运算,判定是否继续传输输入的数据,而这种判定一开始是随机的。(“随机”(stochastic)一词在此处指与输入相乘的初始系数是随机生成的。)


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


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


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

    0

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

    0

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


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

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


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

    0

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

    0


    重构

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


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

    0

    由于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;右半边的图则显示了两条曲线之间的差异。

    0

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

    0


    概率分布

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

    0

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


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


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

    0


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

    0

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


    这就是联合概率:给定a时x的概率以及给定x时a的概率,用RBM两层之间的一个共用权重来表示。学习重构数据的过程在某种意义上即是学习一组特定图像中有哪些像素通常会同时出现。网络深处隐藏层节点产生的激活值代表了明显的同现关系,例如:“非直线灰色管 + 大而松垂的耳朵 + 皱纹”。


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


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


    多层结构

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


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


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


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


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


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


    0

    参数与变量k

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


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


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


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


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


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


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


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


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


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


    连续受限玻尔兹曼机

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


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


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


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


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


    学习资源

    1. Geoff Hinton谈玻尔兹曼机

    http://www.scholarpedia.org/article/Boltzmann_machine

    2. Deeplearning.net的受限玻尔兹曼机教程

    http://deeplearning.net/tutorial/rbm.html

    3. 受限玻尔兹曼机训练实用指南;Geoff Hinton

    https://www.cs.toronto.edu/~hinton/absps/guideTR.pdf

    欢迎分享给他人让更多的人受益

    原文链接:

    https://deeplearning4j.org/cn/restrictedboltzmannmachine


    广告、商业合作

    请添加微信:guodongwe1991

    (备注:商务合作)

    展开全文
  • 最后介招由多个受限玻尔兹曼机推叠组成的深度信念网络 4.1 Hopfield神经网络 前几章介绍过的多层神经网络, 如图4.1所示的相互连接型 相互连接型网络不分层,单元之间相互连接。 能根据单元的值记忆网络状态,...

    • 是起源于图模型的神经网络
    • 由Hopfield神经网络那样的相互连接型网络衍生而来
    • 先Hopfield 网络和玻尔兹曼机,然后受限玻尔曼机
    • 最后由多个受限玻尔兹曼机推叠组成的深度信念网络

    4.1 Hopfield神经网络

    • 前几章介绍过的多层NN
    • 如图4.1所示的相互连接型
    • 相互连接型网络不分层,单元之间相互连
      • 能根据单元的值记忆网络状态,称联想记亿
    • 人脑能根据某种输人信息记忆或联想与之有关的信息,
      • 看到¨“苹果”能“红色”,“香蕉”能¨“黄色”。
    • 联想记忆就是通过在事物之间建立对应关系来记忆
    • 多层神经网络和CNN可应用于模式识别
      • 相互连接型网络可通过联想记忆去除输入数据中噪声

    参考文献51添加链接描述

    • 82年提出的 Hopfield神经网络是最典型的相互连接型网络

    • 优点

      • 连接权重对称
      • 没有到自身的连接
      • 单元的状态变化采用随机异步更新方式,
        • 每次只有一个单元改变状态

    • 基以上优点,
    • Hopfield神经网络
    • 每个单元只能是0或1,
    • 故而网络有2n2^n种状态
    • 联想记忆
      • 当输入模式为某种状态时,输出端要给出与之相应的输出模式y
      • 如果输入模式与输出模式一致,就称自联想记忆,
      • 否则称异联想记忆。

    • n个单元组成的 Hopfield神经网络,
    • ii个单元在t(t=0,1,2,…)时输入记ui(t)u_i(t),输出记xi(t)x_i(t)
    • 连接权重为wijw_{ij}
    • 國值bi(t)b_i(t)
    • t+1时刻单元的输出xi(t+1)x_i(t+1)可表示

    xi(t+1)x_i(t+1)显然只与t时刻这个单元的输入有关啊,如果t时刻的输入>0,那么就是1,如果t时刻的输入是0,那么维持输出不变啊

    展开全文
  • RBM受限玻尔兹曼机理解及实现

    千次阅读 2017-12-26 16:49:20
    首先字典学习它是个非凸优化问题,多层字典学习将会变得更加复杂;另外多层字典学习的所要求解的参数大大增加,在有限的训练样本下,容易引起过拟合问题。因此文献提出类似于SAE、DBN一样,采用逐层训练学习的思想...
  • 不受限的:在实际工程中用处不大,所以目前只需要研究受限玻尔兹曼机。 一层是可视化层,一般来说是输入层,另一层是隐含层,也就是我们一般指的特征提取层。 RBM是可以多层叠加在一起的。 ...
  • 一、多层感知机 二、RBM--受限玻尔兹曼机  
  • http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6889903 在机器学习中,DBN 是一种生成图模型,或者是一种深度神经网络,由多层受限玻尔兹曼机组成。 这个硬件系统基于我们所说的神经元机器(NM)硬件架构...
  • 第四章 受限玻尔兹曼机 受限玻尔兹曼机是起源于图模型的神经网络。这种网络是由Hopfield神经网络那样的相互连接型网络衍生而来的。 Hopfield神经网络、玻尔兹曼机、受限玻尔兹曼机、多个受限玻尔兹曼机堆叠组成的...
  • 2006年以前的一些经典的网络及之间的区别: ...是一种具备多层结构的无向图模型,不过像受限玻尔兹曼机一样,深层玻尔兹曼机器也是一种玻尔兹曼机器的一种特殊形式。和受限玻尔兹曼机器不同的是...
  • 常见的五种神经网络 ①前馈神经网络 ②卷积神经网络 ③循环神经网络 ④深度信念网络(DBN) 深度信念网络(Deep Belief Netword, ... 受限玻尔兹曼机 DBN的组成原件是玻尔兹曼机 ⑤生成对抗网络 ...
  • DeepLearning-Tutorial-源码

    2021-05-15 17:51:56
    RBM:受限玻尔兹曼机 CRBM:带连续值输入的受限玻尔兹曼机 dA:自动编码器降噪 SdA:堆叠式降噪自动编码器 LogisticRegression:Logistic回归 HiddenLayer:神经网络的隐藏层 MLP:多层感知器 辍学:辍学MLP CNN:...
  • 深度生成模型

    2021-06-07 16:28:26
    文章目录深度生成模型深度生成模型概述自编码器Hopfiled网络玻尔兹曼机 BM受限玻尔兹曼机 RBM深度信念网络 Deep Belief Network(DBN)深度玻尔兹曼机 Deep Boltzmann Machine(DBM) 深度生成模型概述 自编码器 自编码...
  • 深度学习浅析

    2019-03-12 16:14:41
    目录 一、第一阶段 1.1、MP模型 1.2、感知机 二、第二阶段 2.1、多层感知机(DNN) 2.2、BP神经网络 ...3.3、受限玻尔兹曼机 深度学习是基于神经网络发展起来的技术,而神经网络的发展具有...
  • 文中缩写: DBN = 深度信念网络 ...RBM = 受限玻尔兹曼机 ReLU = 修正线性单元 CNN = 卷积神经网络 限价委托单薄模型(Limit Order Book Modeling) Sirignano(2016)提出了一
  • 神经网络算法总结

    千次阅读 2020-02-24 21:34:48
    文章目录前馈神经网络1. 单层前馈神经网络(单层感知器)2. 多层感知器反馈神经网络径向基函数网络(RBF网络)1. 径向基函数2. 径向基函数网络的结构3. 径向基函数网络原理... 受限玻尔兹曼机(Restricted BM, RBM...
  • 历史 1958年:感知机(线性模型) 1980s:多层感知机 ...2006:受限玻尔兹曼机(突破) 2009:GPU STEP define a set of function 给定网络结构,相当于定义函数集 得到参数后一个network就是一个function...
  • Roux&Bengio已证明添加隐藏单元会严格提高建模能力,而受限玻尔兹曼机(RBM)是离散分布的通用近似器。 在本文中,我们提供了另一个证明。 这种新证明的优点是它将导致几种新的学习算法。 我们证明了深度神经网络...
  • 二、单层感知器 三、多层感知器 参数初始化 ...受限玻尔兹曼机和深度信念网络 Dropout 处理类不平衡的技术 SMOTE:合成少类过采样技术 神经网络中对成本敏感的学习 人脸识别 自然语言处理
  • Deep Learning 发展 1958:感知机(线性模型,和Logistic ...2006:使用受限玻尔兹曼机(RBM)初始化(和多层感知机的区别就是有无使用RBM初始化然后进行GD,RBM使用图模型并且复杂,但是提升似乎不够明显),使用了RBM初始
  • 档案 概述 该存储库是我的机器学习工具箱。它包含我从头开始创建的模型。...RBM.py –受限玻尔兹曼机 SLP.py –单层感知器 MLP.py –多层感知器 机器学习 SVM.py –支持向量机 ransac.py-随机样本共识 knn.py-k最近邻居
  • 深度学习_DBN模型_图像分类

    千次阅读 2018-08-31 22:33:24
    1.分类的一般方法 2.深度学习在分类中的应用 对输入数据从底层到高层进行特征提取,形成适合模式分类的较理想特征。...组成:多层无监督的受限玻尔兹曼机(RBM)网络和一层有监督的反向传播...
  • 本书分为以下章节(共173页): 授权许可 ...受限玻尔兹曼机RBM 深度信念网络 混合蒙特卡洛采样 基于单词嵌入的递归神经网络 用于情感分析的LSTM网络 基于RNN-RBM的复调音乐序列建模与生成...
  • 更详细介绍了Auto-encoder Auto-encoder在文本与图像的应用 CNN上的Auto-encoder 视频 pdf Auto-encoder 既有Encoder和Decoder就...受限玻尔兹曼机(RBM)初始化(和多层感知机的区别就是有无使用RBM初始化然后进行G.
  • 1. 神经网络发展历史 1957, Frank Rosenblatt:神经元,其实就是简单的线性分类器,用于字母识别。... Salakhutdinov,深层神经网络可被高效训练:通过受限玻尔兹曼机来初始化网络参数,然后利用...
  • 受限玻尔兹曼机(RBM) k阶对比散度; 是否对可见单位和隐藏单位进行抽样或使用概率; 每次体重更新的学习速度,动量和吉布斯步数可变; 正则化:L2体重下降,辍学,稀疏目标; 不同类型的随机层和RBM :实施...

空空如也

空空如也

1 2 3
收藏数 46
精华内容 18
关键字:

多层受限玻尔兹曼机