精华内容
参与话题
问答
  • 前两节我们详细讨论了退火算法和玻尔兹曼分布,本节将使用这两个算法和Hopfield神经网络结合构成新的神经网络即随机神经网络又叫玻尔兹曼机,这个神经网络是模拟能量的特性,从能量角度出发,构造和能量过程类似的...

           前两节我们详细讨论了退火算法和玻尔兹曼分布,本节将使用这两个算法和Hopfield神经网络结合构成新的神经网络即随机神经网络又叫玻尔兹曼机,这个神经网络是模拟能量的特性,从能量角度出发,构造和能量过程类似的神经网络,之所以这样构建和Hopfield神经网络有很大的关系,稍后我们会看到和Hopfield神经网络的异同点。另外这个神经网络不具有实用性,因为计算量太大了,但是我们为什么还要学习呢?一是在此基础上后面会引入改进型的受限玻尔兹曼机,二是我们应该好好体会这样设计的思想,我觉的思想很重要,去体会前人是如何思考问题的,个人觉得最重要的是他把其他领域的思想运用到了神经网络中,这一点很重要,就像现在的神经网络都是在以人脑的基础上进行研究 ,去模仿人脑的生理机制和思考机制,这一点就很重要,也是人工智能落地的重要基础性研究。好,这里就不多说了,和前面的一样,我们先整体的去理解随机神经网络,然后再给出定义,在深入研究,本篇大家只需要知道原理即可,知道和Hopfield神经网络的异同点,知道计算量大体现在哪里就可以了。下面我们开始系统的介绍玻尔兹曼机。

    随机神经网络:

            如果将BP算法中的误差函数看作一种能量函数,则BP算法通过不断调整网络参数使其能量函数按梯度单调下降,而反馈网络(Hopfield神经网络)使通过动态演变过程使网络的能量函数沿着梯度单调下降,在这一点上两类网络的指导思想是一致的。正因如此,常常导致网络落人局部极小点而达不到全局最小点,对于BP网,局部极小点意味着训练可能不收敛;对于Hopfield网,则得不到期望的最优解。导致这两类网络陷人局部极小点的原因是,网络的误差函数或能量函数是具有多个极小点的非线性空间,而所用的算法却一味追求网络误差或能量函数的单调下降。也就是说,算法赋子网络的是只会“下山”而不会“爬山”的能力,如果为具有多个局部极小点的系统打一个形象的比喻,设想托盘上有一个凸凹不平的多维能量曲面,若在该曲面上放置一个小球,它在重力作用下.将滚入最邻近的一个低谷(局部最小点)而“不能自拔“但该低谷不一定就是曲面上最低的那个低谷(全局最小点)因此,局部极小问题只能通过改进算法来解决·,本节随机网络可赋予网络既能“下坡”也能“爬山”的本领,因而能有效地克服上述缺陷。机网络与其他神经网络相比有两个主要区别:(1)在学习阶段,随机网络不像其他网络那样基于某种确定性算法调整权值,而是按某种概率分布进行修改。(2)在运行阶段,随机网络不是按某种确定性的网络方程进行状态演变,而是按某种概率分布决定其状态的转移。神经元的净输人不能决定其状态取1还是取0,但能决定其状态取1还是取0的概率。这就是随机神经网络算法的基本概念,下图给出了随机网络算法与梯度下降算法区别的示意图:

    模拟退火算法:

              模拟退火算法是随机网络中解决能量局部极小问题的一个有效方法,其基本思想是模拟金属退火过程,金属退火过程大致是,先将物体加热至高温,使其原子处于高速运动状态,此时物体具有较高的内能;然后,缓慢降温,随着温度的下降,原子运动速度减慢,内能下降;最后,整个物体达到内能最低的状态。模拟退火过程相当于沿水平方向晃动托盘,温度高则意味着晃动的幅度大,小球肯定会从任何低谷中跳出,而落人另一个低谷。这个低谷的高度(网络能量)可能比小球原来所在低谷的高度低(网络能量下降),但也可能反而比原来高(能量上升)“后一种情况的出现.从局部和当前来看,这个运动方向似乎是错误的;但从全局和发展的角度看,正是由于给小球赋予了“爬山”的本事,才使它有可能跳出局部低谷而最终落入全局低谷。当然,晃动托盘的力度要合适,并且还要由强至弱(温度逐渐下降),小球才不致因为有了“爬山”的本領而趣爬越高。
              在随机网络学习过程中,先令网络权值作随机变化,然后计算变化后的网络能量函数。网络权值的修改应遵循以下准则:若权值变化后能量变小,则接受这种变化;否则也不应完全拒绝这种变化,而是按预先选定的概率分布接受权值的这种变化。其目的在于赋予网络一定的“爬山”能力。实现这一思想的一个有效方法就是Metropol这等提出的模拟退火算法。
             设X代表某一物质体系的微观状态(一组状态变量,如粒子的速度和位置等),E(X)表示该物质在某微观状态下的内能,对于给定温度T,如果体系处于热平衡状态,则在降温退火过程中,其处于某能量状态的概率与温度的关系遵循Boltzmann分布规律。分布函数为:

                                                      \large P(E)\infty e^{[-\frac{E(X)}{KT}]}

               其中K为玻尔兹曼常数,下面讨论会把K合并到T中。和我们前面讨论是一样的,不同的是E(x)。

    根据上式和上图可以看出,当温度一定时,物质体系的能量越高,其处于该状态的概率就越低,因此物质体系的内能趋向于向能量降低的方向演变。如给定不同的温度,上式表示的曲线变化:当物体温度T较高时,P(E)对能量E的大小不敏感,因此物体处于高能或低能状态的概率相差不大;随着温度T的下降,物质处于高能状态的概率随之减小,而处于低能状态的概率增加;当温度度接近0时,物体处于低能状态的概率接近1。由此可见,温度参数T越高,状态越容易变化“为了使物质体系最终收敛到低温下的平衡态,应在退火开始时设置较高的温度,然后逐渐降温,最后物质体系将以相当高的概率收敛到最低能量状态。用随机神经网络解决优化问题时,通过数学算法模拟了以上退火过程.模拟方法是,定义一个网络温度以模仿物质的退火温度,取网络能量为欲优化的目标函数。网络运行开始时温度较高·调整权值时允许目标数偶尔向增大的方向变化,以使网络能跳出那些能量的局
    部极小点。随着网络温度不断下降至0,最终以概率1稳定在其能量数的全局最小点,从而获得最优解。

    玻尔兹曼机

    G.E.Hinton等于1983~1986年提出一种称为Boltzmann机的随机神经网络。在这种网络中神经元只有两种输出状态,即单极性二进制的0或1。状态的取值根据概率统计法则决定,由于这种概率统计法则的表达形式与著名统计力学家Boltzmann提出的Boltzmann分布类似,故将这种网络取名BoltzmannMachine(BM).

    BM网络运行原理

    (1)BM网络的拓扑结构

           BM网络的拓扑结构比较特殊,介于DHNN网的全互连结构与BP网的层次结构之间。从形式上看,BM网络与单层反馈网络DHNN网相似,具有对称权值,即\large w_{ij}=w_{ji},且\large w_{ii}=0。但从神经元的功能上看,BM网络与三层BP网相似,具 有输人节点、隐节点和输节点称为可见节点,而将隐节点称为不可见节点。训练时输人输出节点接收训练集样本,而隐节点主要起辅助作用,用来实现输人与输出之间的联系,使训练集能在可见单元再现。BM网络的三类节点之间没有明显的层次,连接形式可用上图的有向图表示。
    (2)神经元的转移概率函数

           设BM网络中单个神经元的净输人为:

                                                       \large net_j = \sum_{i}^{n}(w_{ij}x_i - T_j)

             与DHNN网不同的是,以上净输入并不能通过符号转移函数直接获得确定的输出转态,实际输出状态按某种概率发生,神经元的净输入可通过sigmod函数获得输出某种状态的转移概率:

                                                       \large P_j(1) = \frac{1}{1+e^{-net_j/T}}                                                            (1)

    式中,\large p_j(1)表示神经元j输出状态为1的概率,状态0的概率为:

                                                        \large P_j(0) = 1-P_j(1)

    其中概率转移函数的图形为:

     从上图可以看出,如果净输入为0.则\large P_j(1)=P_j(0)=0.5,净输入越大,神经元取1的概率越大;净输入越小,神经元取0的概率越大。而温度T的变化可改变概率曲线的形状,对于同一净输入\large p_j(1)\large p_j(0)的差别小;而温度T低时概率曲线变陡峭,对于同一净输入\large p_j(1)\large p_j(0)的差别很大,当T=0,根据(1)式中的概率退化为符号函数,神经元的输出将无随机性。

      (3)网络能量函数与运行的搜索机制

              BM网络采用了与DHNN网络相同的能量函数描述网络的状态:

                                                   \large E(t) = -\frac{1}{2}x^T(t)wx(t) + x^T(t)T

                                                                 \large =-\frac{1}{2}\sum_{j=1}^{n}\sum_{i=1}^{n}w_{ij}x_ix_j+\sum_{i=1}^{n}T_ix_i                                            (2)

               设BM网络按异步方式工作,每次第j个神经元改变状态,根据深度学习 --- Hopfield神经网络详解中的(5)式:

                                                    \large \Delta E(t) = -\Delta x_j(t)net_j(t)                                                                           (3)

    我们再次分析一下可能出现的情况:

     情况a:当\large net_j> 0时,由(1)式或者上图可知,此时\large p_j(1)> 0.5,即神经元j有较大的概率取\large x_j=1,若原来\large x_j=1,则\large \Delta x_j = 0,从而\large \Delta E=0;若原来\large x_j=0,则\large \Delta x_j = 1,从而\large \Delta E< 0

    情况b:当\large net_j< 0时,根据(1)式或者上图,此时\large p_j(1)< 0.5,即神经元j有较大的概率取\large x_j=0,若原来\large x_j=1,则\large \Delta x_j = -1,从而\large \Delta E< 0;若原来\large x_j=0,则\large \Delta x_j = 0,从而\large \Delta E= 0

    以上对各种可能情况讨论的结果与深度学习 --- Hopfield神经网络详解讨论结果一致·但需要注意的是,对于BM网络,随着网络状态的演变,从概率的意义上网络的能量总是朝着减小的方向变化,这就意味着尽管网络能量的总趋势是向着减小的方向演变,但不排除在有些神经元状态可能会按小概率取值,从而使网络能量暂时增加。正是因为有了这种可能性,BM网络才具有了从局部极小的低谷中跳出的“爬山”能力,这一点是BM网络与DHNN网能量变化的根本区别。由于采用了神经元状态按概率随机取值的工作方式,BM网络的能量具有不断跳出位置较高的低谷去搜索位置较低的新低谷的能力,“这种运行方式称为搜索机制,即网络在运行过程中不断地搜索更低的能量极小值,直到达到能量的全局最小。从模拟退火法的原理可以看出,温度T不断下降可使网络能量的“爬山”能力由强减弱,这正是保证BM网络能成功搜索到能量全局最小的有效措施。

    (4) BM网络的玻尔兹曼分布

              设x_j=1时对应的网络能量为E_1\large x_j=0时网络能量为E_0,根据前面的分析结果,当x_j由1变变为0时,有\large \Delta x_j = -1,于是有:

                                                             E_0 - E_1 = \Delta E = -(-1)net_j = net_j

               则(1)式变为;

                                                             \large P_j(1) = \frac{1}{1+e^{-\frac{net_j}{T}}} = \frac{1}{1+e^{-\frac{\Delta E}{T}}}

                                                             \large P_j(0) = 1-P_j(1) = \frac{e^{-\frac{\Delta E}{T}}}{1+e^{-\frac{\Delta E}{T}}}

               两式相除,得到:

                                                             \large \frac{P_j(0)}{P_j(1)} = e^{-\frac{\Delta E}{T}} = e^{-\frac{E_0-E_1}{T}}=\frac{e^{-\frac{E_0}{T}}}{e^{-\frac{E_1}{T}}}  

                当x_j由0变为1时,有\large \Delta x_j = -1,于是有:

                                                               \large E_1-E_0 = \Delta E=-net_j

                 则(1)式变为:

                                                                  \large P_j(1) = \frac{1}{1+e^{\frac{net_j}{T}}} = \frac{1}{1+e^{\frac{\Delta E}{T}}}

                                                                   \large P_j(0) = 1-P_j(1) = \frac{e^{\frac{\Delta E}{T}}}{1+e^{\frac{\Delta E}{T}}}

                 两式相除,得到:

                                                                   \large \frac{P_j(0)}{P_j(1)} = e^{\frac{\Delta E}{T}} = e^{\frac{E_1-E_0}{T}}=\frac{e^{-\frac{E_0}{T}}}{e^{-\frac{E_1}{T}}}

    将上式推广到网络中任意两个状态出现的概率与对应能量之间的关系,有:

                                                                  \large \frac{P(\alpha )}{P(\beta )} = \frac{e^{-\frac{E_\alpha }{T}}}{e^{-\frac{E_\beta }{T}}}

     

    上式就是著名的Boltzmann分布“从式中可以得出两点结论:

       (1)BM网络处于某一状态的概率主要取决于此状态下的能量E,能量越低,概率越大;

       (2)BM网络处于某一状态的概率还取决于温度参数T,温度越高,不同状态出现的概率越接近,网络能量较易跳出局部极小而搜索全局最小;温度低则情况相反。这正是采用模拟退火方法搜索全局最小的原因所在。
           用BM网络进行优化计算时,可构造一个类似于式(2)的的目标函数作为网络的能量函数。为防止目标函数陷人局部极小,采用上述模拟退火算法进行最优解的搜索。即搜索开始时将温度设置得很高,此时神经元为1状态或0状态的机会几乎相等,因此网络能量可以达到任意可能的状态,包括局部极小或全局最小。当温度下降时,不同状态的概率发生变化,能量低的状态出现的概率大,而能量高的状态出现的概率小。当温度逐渐降至0时,每个神经元要么只能取1要么只能取0,此时网络的状态就“凝固”在目标函数的全局最小附近。对应的网络状态就是优化问题的最优解。
           用BM网络进行联想时,可通过学习用网络稳定状态的概率来模拟训练集样本的出现概率。根据学习类型,BM网络可分为自联想和异联想两种情况。自联想型BM网络中的可见节点V与DHNN网中的节点相似,既是输人节点又是输出节点,隐节点H的数目由学习的需要而定,最少可以为0。异联想BM网络中的可见节点V需按功能分为输人节点组I和出节点组O。

     

    本节主要从原理上进行讲解,下一节将从学习算法和使用算法讲,希望大家能理解玻尔兹曼机的学习原理,简单来说,随机神经网络他是模拟热力学的能量进行训练的,也因此可以完全消除伪吸引子,这是大家需要深入理解的,本节结束。 

     

     

    展开全文
  • 玻尔兹曼机(BM)

    千次阅读 2018-10-21 14:08:32
    玻尔兹曼机是一种随机神经网络,借鉴了模拟退火思想。 随机神经网络与其他神经网络相比有两个主要区别 : ① 在学习(训练)阶段 , 随机网络不像其他网络那样基于某种确定性算法调整权值,而是按某种概率分布进行...

    内容基于《人工神经网络理论,设计及应用》的学习,对重点进行了摘抄总结,网上许多博客的内容也基于此。


    玻尔兹曼机是一种随机神经网络,借鉴了模拟退火思想。

    随机神经网络与其他神经网络相比有两个主要区别 :

    ① 在学习(训练)阶段 , 随机网络不像其他网络那样基于某种确定性算法调整权值,而是按某种概率分布进行修改;(通俗解释,Hopfield网络的权值用某种方法一步确定,而玻尔兹曼机像BP网络一样,每训练一次,权值改变一次。)

    ② 在运行(预测)阶段,随机网络不是按某种确定性的网络方程进行状态演变,而是按某种概率分布决定其状态的转移。神经元的净输入不能决定其状态取1还是取0,但能决定其状态取1还是取0的概率。这就是随机神经网络算法的基本概念。(Hopfield网络后一状态的值由前一状态决定,玻尔兹曼机后一状态的值受到前一状态影响。)

    网络有两种类型,如下图,可以先不去理解,有个大致印象就行,后面有解释,其中隐节点个数可以为0。不明白为何有些线不是双向的,按分析,所有权值都对称,应该都是双向箭头?

     预测阶段

    设 BM 机中单个神经元的净输入为 :

    与DHNN不同的是,净输入并不能通过符号转移函数直接获得确定的输出状态,实际的输出状态将按照某种概率发生,输出某种状态的转移概率:

    上式表示的是神经元j输出状态为1的概率,状态为0的概率为:

    $$P_{j}(0)=1-P_{j}(1)$$

    构建能量函数,证明按上述步骤,能量会减小。

    BM机采用的与DHNN网络相同的能量函数描述网络状态,如下图所示:

    设BM机按异步方式工作,每次第j个神经元改变状态,根据能量变化公式:

    对上式进行讨论:
    (1) 当net_{j}>0时,有P_{j}(1)>0.5,即神经元有较大的概率取x_{j}=1。若原来x_{j}=1,则Δxj=0\Delta x_{j}=0,从而\Delta E=0;若原来x_{j}=0,则\Delta x_{j}=1,从而\Delta E<0
    (2) 当net_{j}<0时,有P_{j}(1)<0.5,即神经元有较大的概率取x_{j}=0。若原来x_{j}=0,则Δxj=0\Delta x_{j}=0,从而\Delta E=0;若原来x_{j}=1,则\Delta x_{j}=-1,从而\Delta E<0

    以上对各种可能的情况讨论中可以看出,对于BM机,随着网络状态的演变,从概率意义上网络的能量总是朝着减小的方向变化。这就意味着尽管网络能量的总趋势是朝着减小的方向演进,但不排除在有些神经元状态可能会按照小概率取值,从而使网络能量暂时增加。正是因为有了这种可能性,BM机才具有了从局部极小的低谷中跳出的“爬山”能力,这一点是BM机与DHNN网能量变化的根本区别。

    采用上述模拟退火算法进行最优解的搜索,开始时温度设置很高,此时神经元状态为1或0概率几乎相等,因此网络能量可以达到任意可能的状态,包括局部最小或全局最小。当温度下降,不同状态的概率发生变化,能量低的状态出现的概率大,而能量高的状态出现的概率小。当温度逐渐降至0时,每个神经元要么只能取1,要么只能取0,此时网络的状态就凝固在目标函数全局最小附近。对应的网络状态就是优化问题的最优解。

    计算过程例子http://blog.sina.com.cn/s/blog_c0ea025f0102xhk0.html,该例子最后第二图描述了某个起始状态变化为某个末状态的过程,得到状态。也就是最后得到的某个固定的状态,这与训练阶段不同,训练阶段的输入输出是各个状态的概率分布,比如

    训练阶段

    偷懒直接截图了,有些地方解释下。

    1.下面3个句子表达的同个意思,比如输入固定为

    2.下面3个句子表达的同个意思。

    这里有个疑问,如果像预测那样,最后结果就是个固定的状态,注意状态由节点构成,那么节点是0还是1就是个确定值,两节点同时为1就不是个概率,也是个确定的分数。因此猜想训练阶段T不降为0,这样概率才存在。

    贴上一个网课的训练总结。

    遗留问题

    懒得去深入了解了。

    1.网络的训练如果提供了P对模式,那么预测时是否会按照P对模式的概率产生固定状态,是否会出现其他状态?因为DHNN也会出现非人为设置的吸引子,且难以预知,称为伪吸引子。

    2.训练学习的目的是对分布进行联想记忆,那么为何就能达到这个结果?以及为何权值这样调整就能使

    展开全文
  • 玻尔兹曼机通俗理解

    万次阅读 2017-09-26 16:47:27
    玻尔兹曼机特点:  • Boltzmann机是第一个受统计力学启发的多层学习机,它是一类典型的随机神经网络属于反馈神经网络类型 。其命名来源于Boltzmann在统计热力学中的早期工作和网络本身的动态分布行为 。 ...

    玻尔兹曼机特点:

      Boltzmann机是第一个受统计力学启发的多层学习机,它是一类典型的随机神经网络属于反馈神经网络类型 。其命名来源于Boltzmann在统计热力学中的早期工作和网络本身的动态分布行为 。

     它在神经元状态变化中引入了统计概率,网络的平衡状态服从Boltzmann分布,网络运行机制基于模拟退火算法。

     Boltzmann机结合多层前馈神经网络和离散Hopfield网络在网络结构、学习算法和动态运行机制方面的优点,是建立在离散Hopfield网基础上的,具有学习能力,能够通过一个模拟退火过程寻求最优解。不过,其训练时间比BP网络要长。

     离散Hopfield神经网络+模拟退火+隐单元=Boltzman


    关于 Hopfield的介绍可以参考。
    http://blog.csdn.net/changdejie/article/details/78099410

    下图是 Boltzmann的一个具体例子。


    假如现在我们有这样一个玻尔兹曼机,下面我们将来说明如何运用边的权重来建模(就是算出v1、v2出现某种状态的概率):

    我们有两个可视层节点v1、v2,两个隐藏层节点h1、h2,每个节点的取值是0或者1,那么这4个节点共有16种状态,如上表所示 分别计算这16种状态下的能量。 计算出-E之后,再计算eEe−E值,并且得到总的eEe−E值,用红色数字表示 计算p(v, h),相当于做了归一化,把前面的每一项都除以红色的39.70 把可视层状态相同的p(v, h)概率加起来,就得到p(v),例如可视层出现11的概率为0.466

    当网络很大的时候,我们需要用马尔可夫链蒙特卡罗方法进行模型的采样和学习。过程如下。其中概率 Pj的计算就是依赖于当前的温度。用的是模拟退火算法。



    具体参考 Boltzmann(玻尔兹曼机)的算法实现 http://blog.sina.com.cn/s/blog_c0ea025f0102xhk0.html



    展开全文
  • 深度学习 --- 受限玻尔兹曼机详解(RBM)

    万次阅读 多人点赞 2018-11-23 12:38:20
    本节终于来到了重头戏受限玻尔兹曼机,为了能深入理解本节,我们深入讲了很多基础知识,这些基础知识很重要,是理解本节的基础,同时也是你学习其他算法的基础如强化学习、自然语言处理等。本节的安排是先对比一下...

    本节终于来到了重头戏受限玻尔兹曼机,为了能深入理解本节,我们深入讲了很多基础知识,这些基础知识很重要,是理解本节的基础,同时也是你学习其他算法的基础如强化学习、自然语言处理等。本节的安排是先对比一下受限玻尔兹曼机和玻尔兹曼机的区别,然后使用形式化语言讲一下学习过程和使用过程,最后 我们在逐一展开详细讲解,本节需要大家有点数学和概率论的基础当然矩阵知识也是需要一点的,这里的快速学习算法是CD(对比散度)算法,我们下面都会讲解到,废话不多说,下面开始:

    受限玻尔兹曼机的结构特点

    受限波尔兹曼机(Restricted Boltzmann Machines,RBM)是一类具有两层结构、对称连接且无自反馈的随机神经网络模型,层间全连接,层内无连接。我们知道玻尔兹曼机的是全连接的,这里我们对比一下看看:

    这里先简单的说一下区别,然后再次介绍一下二者的工作原理,然后详细深入介绍背景,二者最大的区别在输入层和隐层的连接方式上,BM模型是全连接的而RBM是相互独立的,他们的区别就在这里,那么为什么计算量会差别那么大呢?在概率中我们知道BM模型的输入和隐层的概率计算肯定是联合概率,因为他们各自有联系而RBM的概率虽然函数联合概率,但是因为独立,可以单独计算每个神经元的概率,然后相乘,进而达到计算量小的目的,另外就是RBM的学习算法是对比散度即CDCD算法,学习速度很快,我们后面讲,那么二者的深入异同点是什么呢?这里还是先了解他们的学习机制在谈会更好,这里引用hinton论文里的文章的图进行讲解《Training Products of Experts by MinimizingContrastive Divergence》:                         

    上图需要说明的是,上面的网络其实就是RBM的模型结构,只是说他这个训练过程为了让大家更清晰,所有展开了,那么我们来看看,他这里到底是怎么训练的,这里以手写体数字1和2来说明,首先我希望RBM能够记住我这个手写体的数字1和2,那么当我拿个新的1和2时,他可以准确的识别出来,因此这里在可见层输入数据data(例如手写体数字1和2)如上图的\large v_{1},刚开始网络的权值和偏置值会初始化一个值,快速学习算法就会根据这些权值计算在可见层已知的情况下(可见层此时的神经元要么为0要么为1,由手写体1或者2决定)每个隐层的神经元为1或者为0 的概率,此时我就得到了所有隐层神经元的值\large h_{1}(要么为0要么为1,这是通过计算的),此时我们就知道了隐层的神经元的每个值,我们这时候把可见层当做是未知的,根据类似的求概率的方法求出可见层神经元的值\large v_{2}或者说是重构出\large v_{2},此时我们的学习算法根据\large v_{1}-v_{2}(暂且这样理解吧,大家到后面就知道了),得到了他们的差值,然后根据这个差值进行调整权值和偏置值(这个权值和偏置值调整不简单我们稍后讲),这就是一次权值调整了,然后我们把\large v_{2}看做已知的,按照上面类似的求法继续求出\large h_{2},然后再次求出\large v_{3},,此时在和\large v_{1}相减,得到误差信号,重新调整权值,然后不断的这样迭代,随着迭代的次数增加,整个系统就会达到热平衡状态,此时系统就收敛了,或者说就训练好了,我们拿一个新的手写图片1或者2从输入层输入进去就可以识别出这图片的数字了。整个学习过程就是这样,好,到这里大家一定要有这个清晰的认识,否则后面会晕的,切记,我们下面就开始正式从背景说起了:

            在诸多人工神经网络模型中,波尔兹曼机(Boltzmann Machine是Hinton和Sejnowski于1986年提出的一种根植于统计力学的随机神经网络。这种网络中的神经元是随机神经元,神经元的输出只有两种状态(未激活、激活):一般用二进制的0和1表示,状态的取值根据概率统计法则决定。从功能上讲,BM是由随机神经元全连接组成的反馈神经网络,且对称连接,无自反馈:包含一个可见层和一个隐层的BM模型如图(a)所示。

    BM具有强大的无监督学习能力,能够学习数据中复杂的规则。但是,拥有这种学习能力的代价是其训练(学习)时间非常长。此外,不仅无法确切地计算BM所表示的分布:甚至得到服从BM所表示分布的随机样本也很困难。为克服这一问题Smolensky[引入了一种限制的波尔兹曼机(Restricted Boltzman Machine , RBM),RBM具有一个可见层,一个隐层,层内无连接,其结构如图1(b)所示。RBM具有很好的性质:在给定可见层单元状态〔输入数据)时,各隐单元的激活条件独立,反之,在给定隐单元状态时,可见层单元的激活亦条件独立。这样一来,尽管RBM所表示的分布仍无法有效计算,但通过Gibbs采样(Gibbssampling)可以得到服从RBM所表示分布的随机样本。此外:Roux和Bengio同从理论上证明,只要隐单元的数目足
    够多,RBM能够拟合任意离散分布。

    2006年,Hinton等人提出了一种深度信念网络(Deep BeliefNets,DBN),并给出了该模型的一个高效学习算法。这个算法成为了其后至今深度学习算法的主要框架。在该算法中,一个DBN模型被视为由若干个RBM堆叠在一起:训练时可通过从低到高逐层训练这些RBM来实现:

           (1)   底部RBM以原始输入数据训练;

         (2)将底部RBM抽取的特征作为顶部RBM的输入训练;

         (3)过程(1)、(2)可以重复来训练所需要的尽可能多的层数。

    由于RBM可以通过CD快速训练,这一框架绕过了直接从整体上训练DBN的高复杂度,从而将其化简为对多个RBM的
    训练问题题。Hinton建议,经过这种方式训练后,可以再通过传统的学习算法〔如反向传播算法)对网络进行微调,从而使模型收敛到全局最优解。这种学习算法,本质上等同于先通过逐层RBM训练将模型的参数初始化为全局最优解范围附近,再通过传统学习算法进一步训练。这样一来,不仅解决了模型训练速度慢的问题,而且计算量也降低了。大量试验结果也表明,这种方式能够产生非常好的参数初始值,从而大大提升了模型的建模能力。自此,机器学习领域又产生了一个新的研究方向-----深度学习(Deep learning),明确提出了面向人工智能的机器学习算法的设计目标。因此本节过后我们将正式进入深度学习。下面就开始深入讲解受限玻尔兹曼机,会使用大量的公式,大家做好心理准备。

    受限玻尔兹曼机的基本模型

          RBM也可以被视为一个无向图(undirected graph)模型,如下图所示。\large v为可见层,用于表示观测数据,\large h为隐层,可视为一些特征提取器(feature detectors),\large W为两层之间的连接权重。Welling指出,RBM中的隐单元和可见单元可以为任意的指数族单元〔即给定隐单元(可见单元),可见单元(隐单元)的分布可以为任意的指数族分布),如softmax单元、高斯单元、泊松单元等等。这里,为了讨论方便起见,我们假设所有的可见单元和隐单元均为二值变量,即\large \forall i,j,v_i\in \left \{ 0,1 \right \},h_j\in \left \{ 0,1 \right \}

           如果一个RBM有n个可见单元和m个隐单元,用向量\large v\large h分别表示可见单元和隐单元的状态,如上图所示,其中,\large v_i表示第\large i个可见单元的状态,\large h_j与表示第\large j个隐单元的状态。那么,对于一组给定的状态\large (v,h),RBM作为一个系统所具备的能量定义为:                       

    上式中,\large \theta = \left \{ W_{ij},a_i,b_j \right \}是RBM的参数,他们均为实数,其中\large W_{ij}表示可见层单元 \large i与隐单元\large j的神经元连接权重,\large a_{i}表示可见单元神经元\large i的偏置(bias),\large b_j表示隐层单元\large j的偏置。当参数确定时,基于该能量函数,我们可以得到\large (v,h)的联合概率密度分布:                      

    其中\large Z(\theta )为归一化因子即所有可能情况下的能量和,概率的形成就是某一个状态的能量除以总的可能状态能量和。需要解释一下的是,为什么根据能量函数就可以得到上面的式子 ,因为能量函数是符合玻尔兹曼分布的,不懂的建议查看我前面几节的基础知识,因此可以写成玻尔兹曼分布的形式,又因为是两层即可见层(输入层)和隐层,按照我们上面的学习过程,可知我们需要不断的计算这里两层的概率,又因为两层是有联系的因此需要写成联合概率密度,这个概率密度可以解释为在\large \theta(其中\large \theta就是待调整的权值和偏置值w,a,b)的条件下\large v\large h的联合概率密度。这点需要大家理解。

               对于一个实际问题,我们关心的是由RBM所定义的关于观测数据\large v的分布\large P(v|\Theta ),即在训练好的权值的情况下能正确在可见层识别出内容概率的分布,如何求这个概率分布呢?很简单,对(2)式求边缘分布即可,如下:

                                          

       为了确定该分布,需要计算归一化因子 \large Z(\theta ),这需要计算\large 2^{m+n}次计算(因为可见单元和隐层单元他们是全连接的,又因为可见单元为n个,隐单元为m个),计算量很大,因此,即使通过训练可以得到模型的参数  \large W_{ij},a_i,b_j,我们任然无法计算出这些参数所确定的分布。

           但是,由于RBM的特殊结构(即层间连接,层内连接)可知:当给定可见单元的状态时,各隐单元的激活状态之间是条件独立的。此时,第j个隐单元的激活概率为:

     其中 为sigmod激活函数。

             由于RBM的结构是对称的,当给定隐单元的状态时,各可见单元的激活状态之间也是条件独立的,即第\large i个可见单元的激活概率为:

                                                             

    这里大家需对(4)、(5)两式有清晰的认识其中 \large b_j\large a_{i}为对应的偏置值,如(4)式对隐层的某个神经元j的状态等于1的概率大小就等于把所有可见层的单元和权值相乘在相加然后加上偏置值取sigmod函数就是概率了,(5)式类似。

    RBM学习算法

                学习RBM的任务是求出参数\large \theta的值,大家要时刻记住\large \theta = \left \{ W_{ij},a_i,b_j \right \},使用训练数据去训练\large \theta,然后参数\large \theta可以通过最大化RBM在训练集(假设包含T个样本)上的对数释然函数学习得到,即:

    这里大家需要明确的是最大释然函数是做什么的,有什么样意义?这里我简单的提一下不懂的建议停下来研究一下释然函数的意义,所谓释然函数就在某些参数的情况下使其对应的概率达到最大,如上式(6)就是在参数\large \theta 的情况下,使其概率概率达到最大,那么(6)式代表什么意思呢?在训练样本的情况下,我们调整参数使其最大概率的复现这个训练数据,根据我们上面的模型图我们可以知道从输入数据层(可见层)到隐层,在从隐层到可见层这是一次训练,此时的可见层的概率尽肯能的和输入时相同,就是这个目的,无线逼近样本的概率,这就是学习原则了,当有新的数据时就可以识别了。那么我们解一下释然函数为什么是这样的,这里以手写体为例,有十种手写体,我们有T个样本,我们都进可能的去复现每个样本,即每个样本是概率尽量都是最大化,因此所以的概率相乘就好了,但是乘积不容易后面的计算,又因为我们最概率的最大值这个数不感兴趣,我们只对使概率最大化的参数\large \theta感兴趣,因此取对数就容易求导了,同时乘积就是求和了,最后就和(6)式一样了,上面只是简单的代表,我把上式具体化:

     其实就是把(6)式展开了,把(3)式带进去即可得到上式,我们知道\large p(v,h|\theta )是联合概率密度,而\large p(v|\theta )是联合概率密度的边缘密度,通过概率论我们知道,求联合概率密度的边缘密度,就是把另一个求和即可,因此上式对\large h求和就得到\large p(v|\theta )了,这里大家需要理解,不理解的去查概率书籍,后面很多都是这样使用的,然后(2)(3)带进去就可以得到了,上式的最后一行是利用log的性质,即相除可以写成相减。

     为了获得最优的\large \theta ^*参数,我们使用梯度上升进行求\small L(\theta ) = \sum_{t=1}^{T}logP(v^{(t)},h|\theta )的最大值,其中关键步骤是计算\small logP(v^{(t)},h|\theta )关于各个模型参数的偏导数,下面的求导中的\large \theta是代表w、a、b,因为他们的求导形式一样的,因次我们使用\large \theta代替进行求导,求出后使用对于的w、a、b替换\large \theta就好了,下面开始求偏导:

    求偏导以前先给大家介绍一下期望的求法,如下期望的定义:

                定义  设离散型随机变量\large X的分布律为:

                                       \large P(X=x_k) = p_k,k=1,2,3,4,...

                 则随机变量的数学期望为记为E(X).即:

                                       \large E(X) = \sum_{k=1}^{\infty }x_kp_k

    下面对对数释然函数关于\large \theta求偏导可得:

                                        

    上面的式子是考验大家的数学和概率基础的时候了,别害怕他,看起来很长很麻烦,其实理清思路还是很简单的,大家需要克服对数学的恐惧,拿下他你会很有成就感的,好,下面我们开始分析,首先这是对数求偏导 ,且还是对复合函数的求导,因此基本的求导大家还是懂的这些就是①式和②式他们连为一起,他们求导原理是一样的,现在我们来看看①式,大家要搞明白求和是对谁的,最外面的那个求和t=1到T的大家应该都懂,那么\tiny \sum_{h}^{}是求导出来相当于求期望的求和公式,那么红色中括号的乘号左边的是概率的表达式(因为分母是对所有h的能量求和而分子是其中某一个h的能量,他们相比就是概率),乘号右边的就是对应的随机变量h的能量值(这里大家需要好好理解为什么是期望,对比定义式深入理解,以后类似的就都懂了),我们知道此时①式的v是已知的情况下对h求和,因此正好符合期望公式,同时对应的分布概率为P(h|v^{t},\theta ),即他求的是边缘的期望。②式求的是联合的期望,因此需要全部求和,且分布概率为P(v,h|\theta ),难理解的就是如何转换为求期望的,主要原因是和求期望的形式是一样的,大家好好理解①式,那个概率,是对某个隐层除上所有的隐层和不就是概率吗?而乘号后面对应的就是隐层对应的能量值,大家好好理解一下,为什么这样,自己动手推一边就出来了,好,最后我们得到③式,代表的就是均值且分别符合各自分布的均值,下面从整体介绍一下(8)式:

     其中:\left \langle \bullet \right \rangle序表示求关于分布P的数学期望。P(h|v^{(t)},\theta )表示在可见单元限定为己知的训练样本v^{(t)}时:隐层的概率分布,故式〔8)中的前一项比较容易计算。P(v,h|\theta )表示可见单元与隐单元的联合分布,由于归一化因子\large Z(\theta )的存在,该分布很难取,导致我们无法直接计算式〔8)中的第二项,只能通过一些采样方法(如Gibbs采样)获取其近似值。值得指出的是,在最大化似然函数的过程中:为了加快计算速度,上述偏导数在每一迭代步中的计算一般只基于部分而非所有的训练样本进行,关于这部分内容我们将在后面讨论RBM的参数设置时详细阐述。

    我们根据(1)式,以w_{ij}为具体参数,带进去(8)式,把(1)式拿到这里:

    如果能量对 w_{ij}求偏导,(8)式第一项我们发现前两项为0,后面只剩下关于v_i,h_j的参数,这时是针对P(h|v^{(t)},\theta )概率分布来求的期望,同样第二项的结果也是只剩下关于v_i,h_j的参数,此时是针对P(v,h|\theta )概率分布来的。能量函数对另外两个求偏导,可分别求得对对应的偏导,如下:

         下面,假设只有一个训练样本,我们分别用“data”和“model”来简记P(h|v^{(t)},\theta )P(v,h|\theta )这两个概率分布,则对数释然函数关于连接权重W_{ij}、可见层单元的偏置a_i和隐层单元的偏置b_j的偏导数分别为:

    通过上面我们知道了学习函数,以及学习函数的难点在哪里,我们知道学习函数的难点在求均值时归一化因子 \large Z(\theta )的计算量很大即整个模型的期望,计算量是2^{m+n},无法求解,但是我们引入了Gibbs采样解决这个问题,即我通过采样去逼近这个均值,因为分布函数我们知道。只是计算量很大,因此使用统计的方法进行处理可以很好的解决问题,这就是我们前面几节的内容就在这里用上了,但是问题是计算Gibbs采样的计算量还是很大,如下图,他需要迭代很多次才能达到热平衡状态,效率还是很低,这时候的问题是 \left \langle \cdot \right \rangle_{model}通过Gibbs采样还是很大  怎么办呢?所以引入快速学习算法。

    基于对比散度的快速学习算法

    2002年,Hinton[7]提出了RBM的一个快速学习算法,即对比散度(Contrastive Divergence,CD),与Gibbs采样不同,Hinton指出当使用训练数据初始化v_0时,我们仅需要使用k(通常k=1)步吉布斯采样便可以得到足够好的近似。也就是本来Gibbs采样按照上面的方法需要n步迭代才能收敛,但是我现在就迭代一次,即在可见层v_1输入数据后,计算h_1的激活概率,然后通过h_1在反计算可见层,此时为v_2,然后调整权值,这就是一次迭代,做到这里以后再计算一下h_2,这样就可以得到均值了,这就是牛逼之处了,本来需要n步迭代才能收敛,现在只需要一步迭代就可以收敛,你说牛叉不,计算量当然降低了,什么原因呢?稍后讲解。(这里需要强调的 是上图是为了大家看权值更新的过程才这样画的,但是真实的其实就两层,就是上面受限玻尔兹曼机的基本模型,只是先通过输入层(可见层)数据计算隐层值,然后把可见层看做未知的,通过隐层计算可见层,就这样不停的迭代达到热平衡状态,就可以采样了)

    在CD算法一开始,可见单元的状态被设置成一个训练样本,并利用式(4)计算所有隐层单元的二值状态。在所有隐层单元的状态确定之后,根据式(5)来确定第i个可见单元取值为1的概率,进而产生可见层的一个重构(reconstruction),这样在使用随机梯度上升法最大化对数释然函数在训练数据上的值时,各参数的更新准则为:   

    其中\epsilon是学习率,\left \langle \cdot \right \rangle_{recon}表示一步重构后模型定义的分布。 我们先介绍一下权值更新的伪代码,最后在介绍一步迭代的合理性。

    在RBM中,可见单元数一般等于训练数据的特征维数,而隐单元数需要事先给定。为了与前文记号一致,假设可见单元数和隐单元数分别为n和m。令W表示可见层与隐层间的连接权重矩阵(m×n阶),a(n维列向量)和b〔m维列向量)分别表示可见层与隐层的偏置向量。RBM的基于CD的快速学习算法主要步骤可描述如下:

    • 输入:一个训练样本x_0;隐层神经元个数m;学习率\epsilon;最大训练周期T
    • 输出:连接权重矩阵W、可见层的偏置向量a、隐层的偏置向量b
    • 训练阶段

            初始化:令可见层单元的初始状态v_1= x_0;W,a,b为随机较小的值。

            For   t=1,2,3,...T

                     For   j=1,2,3,...m(对所有隐神经元)

                               计算P(h_{1j}=1|v_1),即P(h_{1j}=1|v_1) = \sigma (b_j + \sum_{i}v_{1i}w_{ij})

                                从条件分布P(h_{1j}|v_1)中抽取h_{1j}\in \left \{ 0,1 \right \}

                       EndFor

                       For i = 1,2,3,....,n(对所有可见单元)

                                 计算P(v_{2j}=1|h_1),即P(v_{2i}=1|h_1) = \sigma (a_i + \sum_jW_{ij}h_1j)

                                 从条件分布P(v_{2i}|h_1)中抽取v_{2i}\in \left \{ 0,1 \right \}

                        EndFor

                     

                        For   j=1,2,3,...m(对所有隐神经元)

                                 计算P(h_{2j}=1|v_2),即P(h_{2j}=1|v_2) = \sigma (b_j + \sum_{i}v_{2i}w_{ij})

                        EndFor

                      按下式更新各个参数:

                       W \leftarrow W+\epsilon \left [ P(h_1=1|v_1)v_1^T -P(h_2=1|v_2)v_2^T)]

                        a \leftarrow a+\epsilon (v_1-v_2)

                         b \leftarrow b+\epsilon [P(h_1=1|v_1)-P(h_2=1|v_2)]

                         EndFor

    这里需要和大家明确的是参数更新是按照下面的式子来的,同时简单的解释一下:

    a向量的更新,输入的期望其实就是他本身数据的期望,而根据(8)式我们知道,需要在P(h|v^{(t)},\theta )这个分布下求均值,但是这是个隐层的的分布,基本上和输入没什么关系,隐层可以单独计算输入的均值,而重构出来的就是v_2,隐层计算矩阵即可。

    b向量的更新,我们从下面的公式可以看到是求h_j的期望,而h_j的期望就等于h_j=1的概率,为什么,因为h_j要么取0,要么取1,因此1的概率和期望是相等的。

    W的更新就是按照下面更新的。

     上面大家应该可以看懂的,看伪代码会发现我刚开始就是按照这个伪代码思路来讲,目的就是希望大家从整体把握他,然后在细节深入,不要思路乱了,只有你的思路很清晰的情况下,才能说深入理解,我们下面说说为什么Hinton认为一步就可以迭代成功。 

    对比散度(cd)算法(Contrastive Divergence)

         什么是对比散度,大家可以自己研究一下,这里就不展开说了,我简单的说一下它有什么用,对比散度是衡量两个统计分布的相似度,和我们的相关性系数差不多,只是相关性衡量的是两个数据的相似度,而对比散度是衡量两个统计分布的相似性,有兴趣的可以自行了解一下。如果两个分布很相近,那么KL距离接近0,如果相差很远的话,KL距离很大,例如两个分布P(X),Q(X),那么二者的对比散度使用D(P||Q)表示,下面:我根据hinton的论文解释一下为什么一步迭代就合理了:

    假设,吉布斯采样的开始的概率分布为P^0,迭代一次后分布为P^1,不停的迭代后直到收敛我们称为:P_\theta ^\infty\theta表示和参数取值的关系),我们把P^0P_\theta ^\infty做对比散度为P^0||P_\theta ^\infty如下:

       同理 P^1P_\theta ^\infty也做对比散度P^1||P_\theta ^\infty,当然他们肯定不会为0,其中 P^0||P_\theta ^\infty应该是一个大点的数,而P^1||P_\theta ^\infty应该也是大一点的数,但是   P^1||P_\theta ^\infty应该比P^0||P_\theta ^\infty要小,因为迭代一次后接近了一点,这些还是可以接受的,现在有一个情况就是,如果我们选择了一些参数\theta,使的 P^0||P_\theta ^1很小,可以近似为0了,说明了什么呢?说明了  P^0=P^1,同时也说明了此时 P^0=P^\infty_\theta,因为一旦  P^0=P^1说明已经达到稳定了,因此会有P^0=P^\infty_\theta。此时就有一个优化目标:

           就是说此时我使用对比散度的差值作为优化目标,找到适合的参数\theta使的对比散度最小,因此求梯度就可以了。hinton论文里说上式的第三项可以忽略,因为值很小,给的理由有点牵强,说是根据大量数据的统计得到,可以省略,给了两图:

    这里没有给出严格的数学证明,但是大家都默认可行,那就可行吧?.?

    省略之后就得到了下面的式子:

    上面的式子就是我们的下面的了,牛叉吧。

     目前大家都还使用这个思想。对比散度呢就是来源上面的两个散度的差,相对比。这个算法很好的解决计算量大的问题。也因此得到了广泛的应用,下一节就讲一下hinton的另一篇大作: 《Reducing the Dimensionality of Data with Neural Networks》

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

    千次阅读 2019-04-17 09:57:06
    文章目录Boltzmann Machines起源Boltzmann Machines的结构Boltzmann Machines的搜索问题Boltzmann Machines的学习问题不含隐藏层的学习包含隐藏层的学习学习速度不同类型的Boltzmann MachinesHigh-Order Boltzmann ...
  • 玻尔兹曼机

    千次阅读 2018-06-20 13:50:49
    玻尔兹曼机 玻尔兹曼机的网络模型与BP神经网络的结构没有什么区别,只是训练的方式不太一样。 注:本文中用到的Python及其模块安装教程参见 1868年,奥地利物理学家路德维希·玻尔兹曼(Ludwig Edward ...
  • 玻尔兹曼机BM

    千次阅读 2018-07-15 12:51:41
    玻尔兹曼机(BM)神经元网络的运行:利用模拟退火算法,因为使用了玻尔兹曼分布作为激活函数,所以称为玻尔兹曼机,其原理其实是模拟退火算法。玻尔兹曼分布在统计力学中的表达形式为:E是状态能量(从一种状态变化...
  • 受限玻尔兹曼机RBM最通俗易懂的教程

    万次阅读 多人点赞 2017-08-04 00:12:56
    本人来到CSDN已经有一段时间了,写文章也写了好几篇了,本人最喜欢的风格就是用白话讲解一些通俗易懂的东西,在之前,我讲了不少东西,也不知道...我们这次要讲的东西是受限玻尔兹曼机,英文名字是Restricted Boltzmann
  • 受限玻尔兹曼机(RBM)原理总结

    万次阅读 多人点赞 2018-08-12 20:28:00
    授权转发自:刘建平《受限玻尔兹曼机(RBM)原理总结》 地址:http://www.cnblogs.com/pinard/p/6530523.html   前 言 本文主要关注于这类模型中的受限玻尔兹曼机(Restricted Boltzmann Machine,以下简...
  • 受限玻尔兹曼机

    千次阅读 2017-09-29 16:56:03
    受限玻尔兹曼机 梯度下降法(以及相关的L-BFGS算法等)在使用随机初始化权重的深度网络上效果不好的技术原因是:梯度会变得非常小。具体而言,当使用反向传播方法计算导数的时候,随着网络的深度的增加,反向传播的...
  • 去年 6 月份写的博文《Yusuke Sugomori 的 C 语言 Deep Learning 程序解读》是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原理基本不懂。近日再次学习 RBM,觉得有必要将其整理成笔记...
  • 受限玻尔兹曼机 该系列的其他文章: 常见的五种神经网络(1)-前馈神经网络 常见的五种神经网络(2)-卷积神经网络 常见的五种神经网络(3)-循环神经网络(上篇) 常见的五种神经网络(3)-循环神经网络(中篇) 常见的五种...
  • 生成式模型 生成式模型的理念大同小异,几乎都是用一个模型产生概率分布来拟合原始的数据分布情况,计算两个概率分布的差异使用KL散度,优化概率模型的方法是最小化对数...受限玻尔兹曼机 RBM模型是一种很早被提出...
  • 受限玻尔兹曼机和深度置信网络

    千次阅读 2018-06-27 21:17:24
    受限玻尔兹曼机和深度置信网络 引言 梯度弥散一直是困扰着深度神经网络的发展,那么如何解决梯度弥散问题呢?多伦多大学的Geoff Hinton提出了设想:受限玻尔兹曼机(Restricted Boltzmann Machines, RBM),即...
  • 受限玻尔兹曼机(RBM)理解

    万次阅读 2018-02-23 11:30:31
    受限玻尔兹曼机(RBM)多见深度学习,不过笔者发现推荐系统也有相关专家开始应用RBM。实际上,作为一种概率图模型,用在那,只要场景和数据合适都可以。有必要就RBM做一个初步了解。1、 RBM定义RBM记住三个要诀:1)...
  • 受限玻尔兹曼机(RBM)学习笔记(二)网络结构

    万次阅读 多人点赞 2014-02-13 23:36:33
    去年 6 月份写的博文《Yusuke Sugomori 的 C 语言 Deep Learning 程序解读》是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原理基本不懂。近日再次学习 RBM,觉得有必要将其整理成笔记...
  • 玻尔兹曼机 / 受限玻尔兹曼机

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

    2018-07-06 10:16:39
    限制波尔兹曼RBM使用方法 限制波尔兹曼RBM能量模型 从能量模型到概率 求解极大似然 用到的抽样方法 马尔科夫蒙特卡罗简介 参考文献 原文链接: https://blog.csdn.net/mytestmy/article/det...
  • 本篇文章主要写受限玻尔兹曼机、Gibbs求解方法、CD对比散度求解方法和深度信念网络。
  • 受限玻尔兹曼机(RBM)与其在Tensorflow的实现

    万次阅读 多人点赞 2018-06-14 16:29:50
    受限玻尔兹曼机是一种无监督,重构原始数据的一个简单的神经网络。 受限玻尔兹曼机先把输入转为可以表示它们的一系列输出;这些输出可以反向重构这些输入。通过前向和后向训练,训练好的网络能够提取出输入中最重要...
  • 重构但在本教程中,我们将重点关注受限玻尔兹曼机如何在无监督情况下学习重构数据(无监督指测试数据集没有作为实际基准的标签),在可见层和第一隐藏层之间进行多次正向和反向传递,而无需加大网络的深度。...
  • 去年 6 月份写的博文《Yusuke Sugomori 的 C 语言 Deep Learning 程序解读》是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原理基本不懂。近日再次学习 RBM,觉得有必要将其整理成笔记...
  • 干货 | 受限玻尔兹曼机基础教程

    千次阅读 热门讨论 2018-03-28 00:00:00
    定义与结构受限玻尔兹曼机(RBM)由Geoff Hinton发明,是一种用于降维、分类、回归、协同过滤、特征学习和主题建模的算法。下载pdf,请后台回复关键词:20180328目录:1. 定义与结构2. 重构3. 概率分布4. 多层结构5....
  • 本文摘自机器之心公众号,原文地址:一起读懂传说中的经典:受限玻尔兹曼机 侵删一起读懂传说中的经典:受限玻尔兹曼机2018-05-07 机器之心选自DL4J机器之心编译参与:Nurhachu Null、思源尽管性能没有流行的生成...
  • 去年 6 月份写的博文《Yusuke Sugomori 的 C 语言 Deep Learning 程序解读》是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原理基本不懂。近日再次学习 RBM,觉得有必要将其整理成笔记...
  • 详细介绍了受限玻尔兹曼机的原理,需要有一定的英文和数学功底。
  • RBM(受限玻尔兹曼机)原理及代码

    万次阅读 2016-11-07 17:15:01
    本文转自http://blog.csdn.net/zdy0_2004/article/details/45798223,虽然源贴也是转载的,转自http://www.cnblogs.com/xiaokangzi/p/4492466.html 本文在转载时,加入了本人的一些勘误和补充了缺失的代码,另外...
  • 第二十章 深度生成模型 Deep Generative Models 中文 英文 深度生产模型在某种程度上都代表了多个变量的概率分布。...玻尔兹曼机(Boltzmann machine)最初用来学习二值向量上的任意概率分布。 玻尔兹...
  • 一文理解受限玻尔兹曼机(RBM)

    千次阅读 2019-08-19 10:34:13
    一文理解受限玻尔兹曼机(RBM)限制性玻尔兹曼机(RBM)原理RBM简单模型RBM能量函数和概率分布求极大似然对比散度算法RBM用途分布式RBM可能遇到的问题 限制性玻尔兹曼机(RBM)原理 限制性玻尔兹曼机在玻尔兹曼机...

空空如也

1 2 3 4 5 ... 20
收藏数 4,532
精华内容 1,812
关键字:

玻尔兹曼机