玻尔兹曼机通俗理解

来源:互联网 发布:oracle12c新建数据库 编辑:程序博客网 时间:2024/06/11 01:57

玻尔兹曼机特点:

  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