DBN算法的基本知识解读
扫描二维码
随时随地手机看文章
2006年Hinton发表了一篇革命性的论文“Hinton, G. E., Osindero, S. and Teh, Y.,A fast learning algorithmfor deep belief nets.Neural ComputaTIon 18:1527-1554, 2006”,引领了DBN深度信念网络的研究,并突破了深度学习的架构。
DBN深度置信网络是神经网络的一种,既可以用于非监督学习,类似于一个Autoencoder自编码机;也可以用于监督学习,作为分类器来使用。因此十分值得研究。
DBN深度置信网络是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(ObservaTIon|Label)和 P(Label|ObservaTIon)都做了评估,而判别模型仅仅评估了后者P(Label|ObservaTIon)。
DBN算法概念:
DBN深度置信网络(Deep BeliefNets)是一种生成模型,也是神经网络的一种,通过训练其神经元间的权重,可以让整个神经网络按照最大概率来生成训练数据。不仅可以使用DBN来识别特征、分类数据,还可以用它来生成数据。
DBN由多层神经元构成,这些神经元又分为2种:显性神经元和隐性神经元。显性神经元用于接收输入,隐性神经元用于提取特征,因此隐性神经元也叫特征检测器(Feature Detectors)。最顶上的两层间的连接是无向的,组成联合内存(associative memory)。较低的其他层之间有连接上下的有向连接。最底层代表了数据向量(data vectors),每一个神经元代表数据向量的一维。
DBN组成元件是RBM受限玻尔兹曼机。训练DBN的过程是一层一层地进行的。在每一层中,用数据向量来推断隐层,再把这一隐层当作下一层 (高一层)的数据向量。
作为神经网络,神经元自然是其必不可少的组成部分。DBN由若干层神经元构成,组成元件是RBM受限玻尔兹曼机,DBN网络结构限制为两层:可视层和隐层,层与层之间存在连接,但层内的单元间不存在连接,隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。具体DBN网络结构如下图所示。
DBN算法本质:
从非监督学习来讲,其目的是尽可能地保留原始特征的特点,同时降低特征的维度。从监督学习来讲,其目的在于使得分类错误率尽可能地小。而不论是监督学习还是非监督学习,DBN算法本质都是Feature Learning的过程,即如何得到更好的特征表达。
DBN训练过程:
DBN 是由多层 RBM 组成的一个神经网络,它既可以被看作一个生成模型,也可以当作判别模型,其训练过程是:使用非监督贪婪逐层方法去预训练获得权值。
DBN训练过程如下:
1)充分训练第一个RBM;
2)固定第一个RBM的权重和偏移量,然后使用其隐性神经元的状态,作为第二个RBM的输入向量;
3)充分训练第二个RBM后,将第二个RBM堆叠在第一个RBM的上方;
4)重复以上1)~3)任意多次;
5)如果训练集中的数据有标签,那么在顶层的RBM训练时,这个RBM的显层中除了显性神经元,还需要有代表分类标签的神经元,一起进行训练;
6)DBN 训练完成。
最终训练成的生成模型如下图所示:
用公式表示为:
概括的说,将若干个RBM“串联”起来则构成了一个DBN。上一个RBM的隐层即为下一个RBM的显层,上一个RBM的输出即为下一个RBM的输入。训练过程中,需要充分训练上一层的RBM后才能训练当前层的RBM,直至最后一层。
注:隐层激活单元和可视层输入之间的相关性差别就作为权值更新的主要依据。
DBN训练过程非常重要,这种逐层叠加RBM的方式叫做Greedy Layer-Wise Training,它是最开始提出深度学习时候的核心!
DBN调优过程:
DBN生成模型使用ContrastiveWake-Sleep算法进行调优,其算法调优过程是:
1) 除了顶层 RBM,其他层RBM的权重被分成向上的认知权重和向下的生成权重;
2)Wake阶段(认知过程):通过外界的特征和向上的权重 (认知权重)产生每一层的抽象表示(结点状态) ,并且使用梯度下降修改层间的下行权重 (生成权重) 。
3)Sleep 阶段(生成过程):通过顶层表示和向下权重,生成底层的状态,同时修改层间向上的权重。
DBN使用过程:
1)使用随机隐性神经元状态值,在顶层 RBM 中进行足够多次的Gibbs吉布斯抽样;
2)向下传播,得到每层的状态。
DBN算法优点:
1)灵活性好;
2)扩展容易;
3)性能较好;
4)并行计算;
5)相比前向神经网络,训练较快,收敛时间较少。
DBN算法缺点:
1)只能是一维的数据;
2)需要为训练提供一个有标签的样本集;
3)学习过程较慢;
4)不适当的参数选择会导致收敛于局部最优解;
5)没有明确地处理对观察变量时间联系的学习。
注:扩展的CDBNs(卷积DBNs) 考虑到2维数据结构。
DBN算法应用:
很多的情况下,DBN是作为无监督学习框架来使用的,它的应用范围较广,扩展性也强,可应用于机器学习之手写字识别、语音识别和图像处理等领域。且在语音识别中取得了很好的效果。
语音识别:微软研究人员通过与hinton合作,首先将RBM和DBN引入到语音识别声学模型训练中,并且在大词汇量语音识别系统中获得巨大成功,使得语音识别的错误率相对减低30%。
结语:
DBN算法是机器学习之神经网络的一种,既可以用于非监督学习,也可以用于监督学习,值得深入研究。DBN是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布。通过训练其神经元间的权重,可以让整个神经网络按照最大概率来生成训练数据。不仅可以使用DBN来识别特征、分类数据,还可以用它来生成数据。DBN算法是一种非常实用的学习算法,应用范围较广,扩展性也强,可应用于机器学习之手写字识别、语音识别和图像处理等领域。