受限玻尔兹曼机（英語：restricted Boltzmann machine, RBM）是一种可通过输入数据集学习概率分布的随机生成神经网络。RBM最初由发明者保罗·斯模棱斯基于1986年命名为簧风琴（Harmonium），但直到杰弗里·辛顿及其合作者在2000年代中叶发明快速学习算法后，受限玻兹曼机才变得知名。受限玻兹曼机在降维、分类、协同过滤、特征学习和主题建模中得到了应用。根据任务的不同，受限玻兹曼机可以使用监督学习或无监督学习的方法进行训练。
正如名字所提示的那样，受限玻兹曼机是一种玻兹曼机的变体，但限定模型必须为二分图。模型中包含对应输入参数的输入（可见）单元和对应训练结果的隐单元，图中的每条边必须连接一个可见单元和一个隐单元。（与此相对，“无限制”玻兹曼机包含隐单元间的边，使之成为循环神经网络。）这一限定使得相比一般玻兹曼机更高效的训练算法成为可能，特别是基于梯度的对比分歧（contrastive divergence）算法。
受限玻兹曼机也可被用于深度学习网络。具体地，深度信念网络可使用多个RBM堆叠而成，并可使用梯度下降法和反向传播算法进行调优。


结构 标准的受限玻尔兹曼机由二值（布尔/伯努利）隐层和可见层单元组成。权重矩阵
  
    
      
        W
        =
        (
        
          w
          
            i
            ,
            j
          
        
        )
      
    
    {\displaystyle W=(w_{i,j})}
  
中的每个元素指定了隐层单元
  
    
      
        
          h
          
            i
          
        
      
    
    {\displaystyle h_{i}}
  
和可见层单元
  
    
      
        
          v
          
            j
          
        
      
    
    {\displaystyle v_{j}}
  
之间边的权重。此外对于每个可见层单元
  
    
      
        
          v
          
            i
          
        
      
    
    {\displaystyle v_{i}}
  
有偏置
  
    
      
        
          a
          
            i
          
        
      
    
    {\displaystyle a_{i}}
  
，对每个隐层单元
  
    
      
        
          h
          
            j
          
        
      
    
    {\displaystyle h_{j}}
  
有偏置
  
    
      
        
          b
          
            j
          
        
      
    
    {\displaystyle b_{j}}
  
。在这些定义下，一种受限玻尔兹曼机配置（即给定每个单元取值）的“能量”(v,h)被定义为

  
    
      
        E
        (
        v
        ,
        h
        )
        =
        −
        
          ∑
          
            i
          
        
        
          a
          
            i
          
        
        
          v
          
            i
          
        
        −
        
          ∑
          
            j
          
        
        
          b
          
            j
          
        
        
          h
          
            j
          
        
        −
        
          ∑
          
            i
          
        
        
          ∑
          
            j
          
        
        
          h
          
            j
          
        
        
          w
          
            i
            ,
            j
          
        
        
          v
          
            i
          
        
      
    
    {\displaystyle E(v,h)=-\sum _{i}a_{i}v_{i}-\sum _{j}b_{j}h_{j}-\sum _{i}\sum _{j}h_{j}w_{i,j}v_{i}}
  

或者用矩阵的形式表示如下：

  
    
      
        E
        (
        v
        ,
        h
        )
        =
        −
        
          a
          
            
              T
            
          
        
        v
        −
        
          b
          
            
              T
            
          
        
        h
        −
        
          h
          
            
              T
            
          
        
        W
        v
      
    
    {\displaystyle E(v,h)=-a^{\mathrm {T} }v-b^{\mathrm {T} }h-h^{\mathrm {T} }Wv}
  

这一能量函数的形式与霍普菲尔德神经网络相似。在一般的玻尔兹曼机中，隐层和可见层之间的联合概率分布由能量函数给出：

  
    
      
        P
        (
        v
        ,
        h
        )
        =
        
          
            1
            Z
          
        
        
          e
          
            −
            E
            (
            v
            ,
            h
            )
          
        
      
    
    {\displaystyle P(v,h)={\frac {1}{Z}}e^{-E(v,h)}}
  

其中，
  
    
      
        Z
      
    
    {\displaystyle Z}
  
为配分函数，定义为在节点的所有可能取值下
  
    
      
        
          e
          
            −
            E
            (
            v
            ,
            h
            )
          
        
      
    
    {\displaystyle e^{-E(v,h)}}
  
的和（亦即使得概率分布和为1的归一化常数）。类似地，可见层取值的边缘分布可通过对所有隐层配置求和得到：

  
    
      
        P
        (
        v
        )
        =
        
          
            1
            Z
          
        
        
          ∑
          
            h
          
        
        
          e
          
            −
            E
            (
            v
            ,
            h
            )
          
        
      
    
    {\displaystyle P(v)={\frac {1}{Z}}\sum _{h}e^{-E(v,h)}}
  

由于RBM为一个二分图，层内没有边相连，因而隐层是否激活在给定可见层节点取值的情况下是条件独立的。类似地，可见层节点的激活状态在给定隐层取值的情况下也条件独立。亦即，对
  
    
      
        m
      
    
    {\displaystyle m}
  
个可见层节点和
  
    
      
        n
      
    
    {\displaystyle n}
  
个隐层节点，可见层的配置v对于隐层配置h的条件概率如下：

  
    
      
        P
        (
        v
        
          |
        
        h
        )
        =
        
          ∏
          
            i
            =
            1
          
          
            m
          
        
        P
        (
        
          v
          
            i
          
        
        
          |
        
        h
        )
      
    
    {\displaystyle P(v|h)=\prod _{i=1}^{m}P(v_{i}|h)}
  
.
类似地，h对于v的条件概率为

  
    
      
        P
        (
        h
        
          |
        
        v
        )
        =
        
          ∏
          
            j
            =
            1
          
          
            n
          
        
        P
        (
        
          h
          
            j
          
        
        
          |
        
        v
        )
      
    
    {\displaystyle P(h|v)=\prod _{j=1}^{n}P(h_{j}|v)}
  
.
其中，单个节点的激活概率为

  
    
      
        P
        (
        
          h
          
            j
          
        
        =
        1
        
          |
        
        v
        )
        =
        σ
        
          (
          
            
              b
              
                j
              
            
            +
            
              ∑
              
                i
                =
                1
              
              
                m
              
            
            
              w
              
                i
                ,
                j
              
            
            
              v
              
                i
              
            
          
          )
        
        
      
    
    {\displaystyle P(h_{j}=1|v)=\sigma \left(b_{j}+\sum _{i=1}^{m}w_{i,j}v_{i}\right)\,}
  
和
  
    
      
        
        P
        (
        
          v
          
            i
          
        
        =
        1
        
          |
        
        h
        )
        =
        σ
        
          (
          
            
              a
              
                i
              
            
            +
            
              ∑
              
                j
                =
                1
              
              
                n
              
            
            
              w
              
                i
                ,
                j
              
            
            
              h
              
                j
              
            
          
          )
        
      
    
    {\displaystyle \,P(v_{i}=1|h)=\sigma \left(a_{i}+\sum _{j=1}^{n}w_{i,j}h_{j}\right)}
  

其中
  
    
      
        σ
      
    
    {\displaystyle \sigma }
  
代表逻辑函数。


= 与其他模型的关系 =
受限玻尔兹曼机是玻尔兹曼机和马尔科夫随机场的一种特例。这些概率图模型可以对应到因子分析。


训练算法 受限玻尔兹曼机的训练目标是针对某一训练集
  
    
      
        V
      
    
    {\displaystyle V}
  
，最大化概率的乘积。其中，
  
    
      
        V
      
    
    {\displaystyle V}
  
被视为一矩阵，每个行向量作为一个可见单元向量
  
    
      
        v
      
    
    {\displaystyle v}
  
：

  
    
      
        arg
        ⁡
        
          max
          
            W
          
        
        
          ∏
          
            v
            ∈
            V
          
        
        P
        (
        v
        )
      
    
    {\displaystyle \arg \max _{W}\prod _{v\in V}P(v)}
  

或者，等价地，最大化
  
    
      
        V
      
    
    {\displaystyle V}
  
的对数概率期望：

  
    
      
        arg
        ⁡
        
          max
          
            W
          
        
        
          E
        
        
          [
          
            
              ∑
              
                v
                ∈
                V
              
            
            log
            ⁡
            P
            (
            v
            )
          
          ]
        
      
    
    {\displaystyle \arg \max _{W}\mathbb {E} \left[\sum _{v\in V}\log P(v)\right]}
  

训练受限玻尔兹曼机，即最优化权重矩阵
  
    
      
        W
      
    
    {\displaystyle W}
  
，最常用的算法是杰弗里·辛顿提出的对比分歧（contrastive divergence，CD）算法。这一算法最早被用于训练辛顿提出的“专家积”模型。这一算法在梯度下降的过程中使用吉布斯采样完成对权重的更新，与训练前馈神经网络中利用反向传播算法类似。
基本的针对一个样本的单步对比分歧（CD-1）步骤可被总结如下：

取一个训练样本v，计算隐层节点的概率，在此基础上从这一概率分布中获取一个隐层节点激活向量的样本h；
计算v和h的外积，称为“正梯度”；
从h获取一个重构的可见层节点的激活向量样本v'，此后从v'再次获得一个隐层节点的激活向量样本h'；
计算v'和h'的外积，称为“负梯度”；
使用正梯度和负梯度的差以一定的学习率更新权重
  
    
      
        
          w
          
            i
            ,
            j
          
        
      
    
    {\displaystyle w_{i,j}}
  
：
  
    
      
        Δ
        
          w
          
            i
            ,
            j
          
        
        =
        ϵ
        (
        v
        
          h
          
            
              T
            
          
        
        −
        
          v
          ′
        
        
          h
          
            ′
            
              
                T
              
            
          
        
        )
      
    
    {\displaystyle \Delta w_{i,j}=\epsilon (vh^{\mathsf {T}}-v'h'^{\mathsf {T}})}
  
。
偏置a和b也可以使用类似的方法更新。


参见 自編碼
自编码器
深度学习
Hopfield神經網絡


参考资料 外部链接 Introduction to Restricted Boltzmann Machines（页面存档备份，存于互联网档案馆）. Edwin Chen's blog, July 18, 2011.