Scikit-Learn 1.4使用指南:无监督学习 神经网络模型(无监督)Neural network models (unsupervised)
scikit-learn 1.6 官网中文文档翻译已经上线了,欢迎使用:http://www.aidoczh.com/scikit-learn/
限制玻尔兹曼机
限制玻尔兹曼机(RBM)是一种基于概率模型的无监督非线性特征学习器。通过RBM或一系列RBM提取的特征,通常在输入线性分类器(如线性SVM或感知器)中表现出良好的结果。
该模型对输入的分布做出了假设。目前,scikit-learn只提供了BernoulliRBM,它假设输入要么是二进制值,要么是介于0和1之间的值,每个值编码了特定特征打开的概率。
RBM试图使用特定的图模型最大化数据的似然性。所使用的参数学习算法(Stochastic Maximum Likelihood <sml>)防止表示远离输入数据,这使得它们捕捉到有趣的规律,但对于小数据集来说不太有用,并且通常不适用于密度估计。
该方法在使用独立RBM的权重初始化深度神经网络方面变得流行。这种方法被称为无监督预训练。

示例:
sphx_glr_auto_examples_neural_networks_plot_rbm_logistic_classification.py
图模型和参数化
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
$$
在上述公式中, b \mathbf{b} b和 c \mathbf{c} c分别是可见层和隐藏层的截距向量。模型的联合概率是用能量定义的:
P ( v , h ) = e − E ( v , h ) Z P(\mathbf{v}, \mathbf{h}) = \frac{e^{-E(\mathbf{v}, \mathbf{h})}}{Z} P(v,h)=Ze−E(v,h)
Restricted一词指的是模型的二分结构,禁止隐藏单元之间或可见单元之间的直接相互作用。这意味着假设以下条件独立性:
h i ⊥ h j ∣ v v i ⊥ v j ∣ h \begin{aligned} h_i \bot h_j | \mathbf{v} \\ v_i \bot v_j | \mathbf{h} \end{aligned} hi⊥hj∣vvi⊥vj∣h
二分结构允许使用高效的块Gibbs采样进行推断。
伯努利限制玻尔兹曼机
在BernoulliRBM中,所有单元都是二进制随机单元。这意味着输入数据应该是二进制的,或者是介于0和1之间的实值,表示可见单元打开或关闭的概率。这是字符识别的好模型,因为它关注的是哪些像素是活跃的,哪些是非活跃的。对于自然场景的图像,由于背景、深度和相邻像素倾向于取相同的值,它不再适用。
每个单元的条件概率分布由其接收到的输入的逻辑sigmoid激活函数给出:
P ( v i = 1 ∣ h ) = σ ( ∑ j w i j h j + b i ) P ( h i = 1 ∣ v ) = σ ( ∑ i w i j v i + c j ) \begin{aligned} 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{aligned} P(vi=1∣h)=σ(j∑wijhj+bi)P(hi=1∣v)=σ(i∑wijvi+cj)
其中 σ \sigma σ是逻辑sigmoid函数:
σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e−x1
随机最大似然学习
BernoulliRBM中实现的训练算法称为随机最大似然(SML)或持续对比散度(PCD)。直接优化最大似然是不可行的,因为数据似然的形式如下:
log P ( v ) = log ∑ h e − E ( v , h ) − log ∑ x , y e − E ( x , y ) \log P(v) = \log \sum_h e^{-E(v, h)} - \log \sum_{x, y} e^{-E(x, y)} logP(v)=logh∑e−E(v,h)−logx,y∑e−E(x,y)
为了简化起见,上述方程是针对单个训练示例写的。相对于权重的梯度由上述两个项组成。它们通常被称为正梯度和负梯度,因为它们具有相应的符号。在此实现中,梯度是在样本的小批量上估计的。
在最大化对数似然时,正梯度使模型更喜欢与观察到的训练数据兼容的隐藏状态。由于RBM的二分结构,它可以高效地计算。然而,负梯度是难以处理的。它的目标是降低模型偏好的联合状态的能量,从而使其保持与数据一致。它可以通过使用块Gibbs采样的马尔可夫链蒙特卡洛近似来计算,通过迭代地对给定其他变量的情况下的每个 v v v和 h h h进行采样,直到链混合。以这种方式生成的样本有时被称为幻想粒子。这种方法效率低下,并且很难确定马尔可夫链是否混合。
对比散度方法建议在少数迭代(通常是1次)后停止链。这种方法快速且方差低,但样本远离模型分布。
持续对比散度解决了这个问题。在每次需要梯度时,不再启动新的链,并且仅执行一次Gibbs采样步骤,而是在每次权重更新后更新 k k k个Gibbs步骤的一组链(幻想粒子)。这使得粒子能够更全面地探索空间。
参考文献:
- “A fast learning algorithm for deep belief nets”
7. Hinton, S. Osindero, Y.-W. Teh, 2006 - “Training Restricted Boltzmann Machines using Approximations to the Likelihood Gradient”
20. Tieleman, 2008
更多推荐
所有评论(0)