受限玻尔兹曼机(RBM)是一种无监督的非线性特征学习算法,它基于概率模型来提取特征。RBM或RBM层级结构提取的特征在输入到线性分类器(如线性SVM或感知机)时,通常能获得良好的结果。RBM模型对输入数据的分布做了一定的假设。目前,scikit-learn库仅提供了BernoulliRBM,它假设输入数据是二进制值或0到1之间的值,每个值表示特定特征被激活的概率。
RBM的图形模型是一个全连接的二分图。图中的节点是随机变量,其状态取决于它们连接的其他节点的状态。因此,模型的参数化由连接的权重以及每个可见和隐藏单元的一个截距(偏置)项来决定。为了简化,图中省略了这些偏置项。能量函数衡量了联合赋值的质量,其公式如下:
E(\mathbf{v}, \mathbf{h}) = -\sum_i \sum_j w_{ij}v_ih_j - \sum_i b_iv_i - \sum_j c_jh_j
在上述公式中,\(\mathbf{b}\)和\(\mathbf{c}\)分别是可见层和隐藏层的截距向量。模型的联合概率定义为能量的函数:
P(\mathbf{v}, \mathbf{h}) = \frac{e^{-E(\mathbf{v}, \mathbf{h})}}{Z}
“受限”一词指的是模型的二分结构,它禁止隐藏单元之间或可见单元之间的直接交互。这意味着模型假设了以下条件独立性:
\begin{split}h_i \bot h_j | \mathbf{v} \\
v_i \bot v_j | \mathbf{h}\end{split}
二分结构允许使用高效的块吉布斯采样进行推断。
在伯努利RBM中,所有单元都是二进制随机单元。这意味着输入数据应该是二进制的,或者是0到1之间的实数值,表示可见单元被激活或关闭的概率。这种模型适用于字符识别,其中关注的是哪些像素是活跃的,哪些不是。然而,对于自然场景的图像,由于背景、深度和邻近像素倾向于取相同值,这种模型不再适用。每个单元的条件概率分布由输入的逻辑sigmoid激活函数给出:
\begin{split}P(v_i=1|\mathbf{h}) = \sigma(\sum_j w_{ij}h_j + b_i) \\
P(h_i=1|\mathbf{v}) = \sigma(\sum_i w_{ij}v_i + c_j)\end{split}
其中\(\sigma\)是逻辑sigmoid函数:
\sigma(x) = \frac{1}{1 + e^{-x}}
BernoulliRBM中实现的训练算法被称为随机最大似然(SML)或持续对比散度(PCD)。直接优化最大似然是不可行的,因为数据似然的形式如下:
\log P(v) = \log \sum_h e^{-E(v, h)} - \log \sum_{x, y} e^{-E(x, y)}
上述方程为单个训练样本简化书写。相对于权重的梯度由两个项组成,分别对应上述两个项。它们通常被称为正梯度和负梯度,因为它们各自的符号。在这个实现中,梯度是在样本的mini-batch上估计的。在最大化对数似然时,正梯度使模型倾向于与观察到的训练数据兼容的隐藏状态。由于RBM的二分结构,它可以高效地计算。然而,负梯度是不可行的。其目标是降低模型偏好的联合状态的能量,从而使其保持对数据的真实性。它可以通过马尔可夫链蒙特卡洛使用块吉布斯采样来近似,通过迭代地给定另一个来采样每个\(v\)和\(h\),直到链混合。以这种方式生成的样本有时被称为幻想粒子。这是低效的,并且很难确定马尔可夫链是否混合。
对比散度方法建议在链迭代了少量迭代后,\(k\),通常甚至是1,就停止链。这种方法快速且方差低,但样本远离模型分布。持续对比散度解决了这个问题。它不是每次需要梯度时都启动一个新的链,并仅执行一个吉布斯采样步骤,在PCD中,保留一些链(幻想粒子),在每次权重更新后\(k\)吉布斯步骤更新。这允许粒子更彻底地探索空间。
"A fast learning algorithm for deep belief nets", G. Hinton, S. Osindero, Y.-W. Teh, 2006