DBN原理及实践总结-2
2017-03-06
深度信念网络原理、实践及相关技巧总结
原创文章,转载请注明:转自Luozm's Blog接上回书,本文主要内容翻译自 DeepLearning 0.1 documentation1,还参考了Hinton的介绍2。
3. Deep Belief Networks
Hinton3在2006年提出,可以通过贪婪的方式来堆积和训练RBMs,形成深度信念网络(Deep Belief Networks,DBN)。DBN是用于学习提取训练数据的深层表示的一种图模型。它模拟观察到的向量 $x$ 和隐藏层 $h^k$ 之间的联合分布,如下所示:
其中 $x=h^0,P(h^{k-1}|h^k)$ 是可视单元在RBM的 $k$ 层隐含单元条件下的条件分布,而 $P(h^{l-1}|h^l)$ 是可视-隐含单元的在顶层RBM的联合分布。如下图所示:
贪婪的层级无监督训练原则可以应用于DBN,其中RBM作为每个层的构造块4。该过程如下:
- 将第一层作为一个RBM模型来训练,以原始输入 $x=h^{(0)}$ 作为其可视层;
- 使用训练好的第一层来获得输入的一种表示,这也将用作第二层的数据。有两种常见的解决办法:该表示可以是 $p(h{(1)}=1|h{(0)})$ 的 mean activations(这里不理解) 或 $p(h{(1)}|h{(0)})$的样本;
- 将第二层作为RBM模型来训练,使用转换后的数据(样本或mean activations)作为训练样本(也就是RBM的可视层);
- 迭代第2、3两步直到达到预期层数,每次向上传播样本或均值;
- 根据DBN的对数似然函数或有监督的训练指标(在添加额外的学习机制将学习表示转换为有监督预测(例如线性分类器)之后),微调此深层结构的所有参数。
具体训练算法如下:
- 首先逐层训练RBMs:
- 然后整体训练DBN:
The two most significant properties of DBN
- 有一个高效的、逐层的过程,用来学习从上到下、生成式的权重。这些权重决定了一层中的变量如何由上一层的变量确定。
- 学习之后,每层中的隐含变量值可以通过一个简单的自下而上的传递来推断,它从底层的原始数据向量开始,并使用反向生成的权重。
DBN通过处理一层中的隐含变量值(当它们从数据推断后,也作为用于训练下一层的数据),一次学习一层。这种有效的贪婪学习可以跟随其他学习过程,或与其组合,微调所有权重以改善整个网络的生成或判别性能。
可以通过添加表示期望输出的最后一层变量和反向传播误差导数来执行辨别微调。当具有许多隐藏层的网络应用于高度结构化的输入数据(例如图像)时,如果通过学习对输入数据中的结构进行建模的深度信任网来初始化隐藏层中的特征检测器,则反向传播更有效。
Justifying Greedy-Layer Wise Pre-Training
为什么这样的算法有效呢?我们举例来说明:一个2层的DBN,含有隐含层 $h^{(1)}$ 和 $h^{(2)}$(对应参数分别为 $W^{(1)}$ 和 $W^{(2)}$)。Hinton3(详细推导见5)发现 $\log p(x)$ 可以写成:
其中 $KL(Q(h^{(1)}|x)||p(h^{(1)}|x))$ 表示第一个RBM(若独立)的后验概率 $Q(h^{(1)}|x)$ 和同一层但是由整个DBN决定(即考虑由顶层RBM决定的先验概率 $p(h^{(1)},h^{(2)})$)的概率 $p(h^{(1)}|x)$ 之间的KL距离(Kullback–Leibler divergence,又称相对熵,是描述两个概率分布差异的一种方法)。而 $H_{Q(h^{(1)}|x)}$ 是 $Q(h^{(1)}|x)$ 分布的熵。
可以发现如果我们初始化两个隐含层使得 $W^{(2)}=W^{(1)^T}$,$Q(h^{(1)}|x)=p(h^{(1)}|x)$,则KL距离为空。如果我们学习第一层RBM然后固定其参数 $W^{(1)}$,根据 $W^{(2)}$ 来优化 $\log p(x)$,则似然函数 $p(x)$ 只会增加。
同时,注意到如果我们分离只依赖于 $W^{(2)}$ 的项,可以得到:
根据 $W^{(2)}$ 来优化上式等价于训练第二阶段的RBM,使用 $Q(h^{(1)}|x)$ 的输出作为训练分布,其中 $x$ 从第一个RBM的训练分布中采样得到。
未完待续
4. Implementation
4.1 DeepLearnToolbox (MATLAB)
参见 Rainbow0210的博客6。
4.2 TensorFlow (Python)
5. Tricks and other
5.1 Dropout
参见 tornadomeet的博客7,Hinton8,Srivastava9。
5.2 Mini-Batch
参见 ycheng_sjtu的博客10
5.3 Softmax
Softmax是一种简单的多类分类器,其输出概率和为1,因此常用于多类分类而在多标签分类中不常见。
Softmax与Sigmoid(Logistic)都可以作为神经网络最后一层的分类器使用,不同在于Logistic一次对一个类别输出概率,多类分类需对每个类别分别计算;而Softmax直接输出所有类别的概率,且概率和为1。
参见UFLDL Tutorial11
5.3 Others
参见 wepon_的博客12,Bengio13,Neural Networks: Tricks of the Trade14。
6. Conclusion
References
-
DeepLearning 0.1 documentation, Deep Belief Networks ↩
-
Hinton G E. Deep belief networks. Scholarpedia, 2009, 4(5):5947. ↩
-
Hinton G E, Salakhutdinov R R. Reducing the dimensionality of data with neural networks[J]. science, 2006, 313(5786): 504-507. ↩ ↩2
-
Bengio Y, Lamblin P, Popovici D, et al. Greedy layer-wise training of deep networks[J]. Advances in neural information processing systems, 2007, 19: 153. ↩
-
Bengio Y. Learning deep architectures for AI[J]. Foundations and trends® in Machine Learning, 2009, 2(1): 1-127. ↩
-
Rainbow0210, 深度学习-深度信念(置信)网络(DBN)-从原理到实现(DeepLearnToolBox) ↩
-
tornadomeet, Deep learning:四十一(Dropout简单理解) ↩
-
Hinton G E, Srivastava N, Krizhevsky A, et al. Improving neural networks by preventing co-adaptation of feature detectors[J]. arXiv preprint arXiv:1207.0580, 2012. ↩
-
Srivastava N. Improving neural networks with dropout[D]. University of Toronto, 2013. ↩
-
ycheng_sjtu, 谈谈深度学习中的 Batch_Size ↩
-
Bengio Y. Practical recommendations for gradient-based training of deep architectures[M]. Neural networks: Tricks of the trade. Springer Berlin Heidelberg, 2012: 437-478. ↩
-
Neural networks: tricks of the trade[M]. Springer, 2012. ↩