28.md 6.7 KB
Newer Older
L
loopyme 已提交
1
# 2.9. 神经网络模型(无监督)
W
init  
wizardforcel 已提交
2

3 4
校验者:
        [@不将就](https://github.com/apachecn/scikit-learn-doc-zh)
N
Nino 已提交
5 6 7
        [@Loopy](https://github.com/loopyme)
        [@barrycg](https://github.com/barrycg)
        [@N!no](https://github.com/lovelybuggies)
8 9
翻译者:
        [@夜神月](https://github.com/apachecn/scikit-learn-doc-zh)
W
init  
wizardforcel 已提交
10

L
loopyme 已提交
11
## 2.9.1. 限制波尔兹曼机
W
init  
wizardforcel 已提交
12

N
Nino 已提交
13
限制玻尔兹曼机(Restricted Boltzmann machines,简称 RBM)是基于概率模型的无监督非线性特征学习器。当用 RBM 或多层次结构的RBMs 提取的特征在馈入线性分类器(如线性支持向量机或感知机)时通常会获得良好的结果。
W
init  
wizardforcel 已提交
14

N
Nino 已提交
15
该模型对输入的分布作出假设。目前,scikit-learn 只提供了 [`BernoulliRBM`](https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.BernoulliRBM.html#sklearn.neural_network.BernoulliRBM "sklearn.neural_network.BernoulliRBM"),它假定输入是二值(binary values)的,或者是 0 到 1 之间的值,每个值都编码特定特征被激活的概率。
W
init  
wizardforcel 已提交
16

N
Nino 已提交
17
RBM 尝试使用特定图形模型最大化数据的似然。它所使用的参数学习算法([随机最大似然](#sml))可以防止特征表示偏离输入数据。这使得它能捕获到有趣的特征,但使得该模型对于小数据集和密度估计不太有效。
W
init  
wizardforcel 已提交
18

N
Nino 已提交
19
该方法在初始化具有独立 RBM 权值的深度神经网络时得到了广泛的应用。这种方法是无监督的预训练。
W
init  
wizardforcel 已提交
20

21
[![http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_rbm_logistic_classification_0011.png](img/3af1cb0026efe5789c3acf3669ff5bc6.jpg)](https://scikit-learn.org/stable/auto_examples/neural_networks/plot_rbm_logistic_classification.html)
W
init  
wizardforcel 已提交
22

N
Nino 已提交
23 24 25
> **示例**:
>
> *   [Restricted Boltzmann Machine features for digit classification](https://scikit-learn.org/stable/auto_examples/neural_networks/plot_rbm_logistic_classification.html#sphx-glr-auto-examples-neural-networks-plot-rbm-logistic-classification-py)
W
init  
wizardforcel 已提交
26

L
loopyme 已提交
27
### 2.9.1.1. 图形模型和参数化
W
init  
wizardforcel 已提交
28

N
Nino 已提交
29
RBM 的图形模型是一个全连接的二分图。
W
init  
wizardforcel 已提交
30

31
![http://sklearn.apachecn.org/cn/0.19.0/_images/rbm_graph.png](img/0dd4aedd59a06ecbaead248c17a3ce80.jpg)
W
init  
wizardforcel 已提交
32

N
Nino 已提交
33
节点是随机变量,其状态取决于它连接到的其他节点的状态。这个模型可通过连接的权重、以及每个可见或隐藏单元的偏置项进行参数化,为了简单起见,我们省略了上图中的偏置项。
W
init  
wizardforcel 已提交
34

N
Nino 已提交
35
用能量函数衡量联合概率分布的质量:
W
init  
wizardforcel 已提交
36

N
Nino 已提交
37
![E(\mathbf{v}, \mathbf{h}) = -\sum_i \sum_j w_{ij}v_ih_j - \sum_i b_iv_i  - \sum_j c_jh_j](img/5959a6fe3c27570b7d474f26126eb628.png)
W
init  
wizardforcel 已提交
38 39


N
Nino 已提交
40
在上面的公式中, ![\mathbf{b}](img/4dee38783cbd4faef5d5639ce23a5c59.jpg) 和 ![\mathbf{c}](img/a4dd5119f3eeb13b99180aab64917975.jpg) 分别是可见层和隐藏层的偏置向量。模型的联合概率是根据能量来定义的:
41 42 43

![P(\mathbf{v}, \mathbf{h}) = \frac{e^{-E(\mathbf{v}, \mathbf{h})}}{Z}](img/224162d8cfff6c8ad85718be6b261b70.jpg)

N
Nino 已提交
44
“限制”是指模型的二分图结构,它禁止隐藏单元之间或可见单元之间的直接交互。 这代表以下条件独立性成立:
45 46


L
loopyme 已提交
47
![h_i \bot h_j | \mathbf{v} \\v_i \bot v_j | \mathbf{h}](img/9521899a181a367c5873e61b9f7785ce.jpg)
48 49


N
Nino 已提交
50
二分图结构允许使用高效的块吉比斯采样(block Gibbs sampling)进行推断。
51

L
loopyme 已提交
52
### 2.9.1.2. 伯努利限制玻尔兹曼机
53

N
Nino 已提交
54
[`BernoulliRBM`](https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.BernoulliRBM.html#sklearn.neural_network.BernoulliRBM "sklearn.neural_network.BernoulliRBM") 中,所有单位都是二进制随机单元。这意味着输入数据应该是二值,或者是在 0 和 1 之间的实数值,其表示可见单元活跃或不活跃的概率。 这是一个很好的字符识别模型,其中的关注点是哪些像素是活跃的,哪些不是。 对于自然场景的图像,它因为背景、深度和相邻像素趋势取相同的值而不再适合。
55

N
Nino 已提交
56
每个单位的条件概率分布由其接收的输入的 logistic sigmoid函数给出:
57 58


L
loopyme 已提交
59
![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)](img/e6811d3f6333e9490d602db8dc1e3d96.jpg)
60 61


N
Nino 已提交
62
其中 ![\sigma](img/8c4a5c99b21079b9fb1be49910ff96e3.jpg) 是 logistic sigmoid函数:
63 64 65

![\sigma(x) = \frac{1}{1 + e^{-x}}](img/f1c8c9b812ae1b6ec189eda900e47269.jpg)

L
loopyme 已提交
66
### 2.9.1.3. 随机最大似然学习
67

N
Nino 已提交
68
[`BernoulliRBM`](https://scikit-learn.org/stable/modules/generated/sklearn.neural_network.BernoulliRBM.html#sklearn.neural_network.BernoulliRBM "sklearn.neural_network.BernoulliRBM") 函数中实现的训练算法被称为随机最大似然(SML)或持续对比发散(PCD)。由于数据的似然函数的形式,直接优化最大似然是不可行的:
69 70 71

![\log P(v) = \log \sum_h e^{-E(v, h)} - \log \sum_{x, y} e^{-E(x, y)}](img/1252aa7af065b0afd424b2ff01b4e2a5.jpg)

N
Nino 已提交
72
为了简单起见,上面的等式是针对单个训练样本所写的。相对于权重的梯度由对应于上述的两个项构成。根据它们的符号,它们通常被称为正梯度和负梯度。这种实现按照小批量样本对梯度进行计算。
73

N
Nino 已提交
74
在最大化对数似然度(maximizing the log-likelihood)的情况下,正梯度使模型更倾向于与观察到的训练数据兼容的隐藏状态。RBM 的二分体结构使他可以被高效地计算。然而,负梯度是棘手的。其目标是降低模型偏好的联合状态的能量,从而使数据保持真实。它可以使用块吉比斯采样通过马尔可夫链蒙特卡罗来粗略估计,它通过迭代地对每个 ![v](img/ce7fd91ddb116ab5d747de0316caf657.jpg) 和 ![h](img/c5f49595b56010ad04fce358940848e5.jpg) 进行交互采样,直到链混合。以这种方式产生的样本有时被称为幻想粒子。这是低效的,并且我们很难确定马可夫链是否混合。
75

N
Nino 已提交
76
对比发散方法建议在经过少量迭代后停止链,迭代数 ![k](img/f93871977da52a6d11045d57c3e18728.jpg) 通常为 1。该方法快速且方差小,但样本远离模型分布。
77

N
Nino 已提交
78
持续对比发散解决了这个问题。在 PCD 中,我们保留了多个链(幻想粒子)来在每个权重更新之后更新 ![k](img/f93871977da52a6d11045d57c3e18728.jpg)个吉比斯采样步骤,而不是每次需要梯度时都启动一个新的链,并且只执行一个吉比斯采样步骤。这使得粒子能更彻底地探索空间。
W
init  
wizardforcel 已提交
79

N
Nino 已提交
80
> **参考资料**:
L
loopyme 已提交
81 82
>*   [“A fast learning algorithm for deep belief nets”](http://www.cs.toronto.edu/~hinton/absps/fastnc.pdf) G. Hinton, S. Osindero, Y.-W. Teh, 2006
>*   [“Training Restricted Boltzmann Machines using Approximations to the Likelihood Gradient”](http://www.cs.toronto.edu/~tijmen/pcd/pcd.pdf) T. Tieleman, 2008