转载自:http://blog.sciencenet.cn/blog-110554-889016.html
DBN的学习一般都是从Hinton的论文A Fast Learning Algorithm for Deep Belief Nets开始。如果没有相关的背景知识,不知道问题的来由,这篇论文读起来是相当费劲的。
学习过程中主要参考了三篇文献,尤其是其中第二篇文献。这篇论文被我忽视了很久,造成了学习中很大的困惑。
1、A Fast Learning Algorithm for Deep Belief Nets
2、The wake-sleep algorithm for unsupervised neural networks
3、An Introduction to Restricted Boltzmann Machines
文献【1】总体描述了DBN算法的实现。
我认为DBN算法就是Wake-Sleep算法+RBM,文中讨论了Explaining away,complementary prior两个重要概念。讨论了RBM与Infinite directed model with tied weights的等价性。
但是论文对Wake-Sleep算法解释特别少,因此,我对为什么讨论Explaining away,complementary prior两个概念非常不理解,云里雾里。使得我对为什么要用Wake-Sleep算法+RBM来学习多层神经网络非常难以理解。
文献【2】研究了Wake-Sleep算法。
多层神经网络有很好的特征表达能力,但许多学习算法效率不高。
Wake-Sleep算法是一种有效的多层神经网络学习算法。
它使得训练数据的表示最经济,同时能够准确地重构训练数据。
训练数据的表示分布(representation)记为,训练数据的生成分布(generation)记为。
学习的目标是:使得描述长度(description length)最小。即:
在Wake阶段使得逼近,在Sleep阶段使得逼近。
但是,由于为因子形式分布(factorial distribution),很难准确地匹配。因为的公式为:
在一般情况下是不具备因子形式的分布。因此 难以匹配 ,从而加大了学习误差。
为了改善Wake-Sleep算法,需要使得似然分布对应的后验分布具有因子形式分布。
算法使得高层权值能够影响低层权值。
RBM的作用就是用来生成似然分布的互补先验分布,使得其后验分布具有因子形式。
因此,DBN算法解决了Wake-Sleep算法表示分布难以匹配生成分布的难题,通过RBM使得训练数据的生成分布具有因子形式,从而提高了学习效率。