您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 深度学习DBN深度信念网络
BeliefNetsandDeepBeliefNets数媒学院-许鹏RBMReview我们已经接触过了FNN,CNN和RBM,其中传统的FNN和CNN很相似,都属于前馈神经网络,而且都是判别模型,也就是学习的模型是𝑝(𝑦|𝑥,但是RBM是一个生成模型,它学习的是𝑝(𝑥,𝑦或者说𝑝(𝑥,也就是RBM学习的是一个联合概率分布的模型,而FNN学习的是一个条件概率分布,它们有着巨大的差别,甚至就是因为传统的神经网络学习的是判别模型,还导致了上个世纪90年代以后神经网络研究的衰落,下面是神经网络衰落的两个主要原因:我们知道传统的神经网络一般都是单隐层的,最多两个隐层,而且一旦神经元个数太多,模型参数就是迅速增长,采用随机梯度下降的话一般很难找到最优解,甚至随着层数的增加,如果训练网络时权值初始化的很小,那么模型会很快的陷入局部最优解,而且是一个poorlocalminima,这是神经网络的优化问题。另外一个主要的原因就是判别模型,因为FNN是判别模型,就是即使神经网络的优化问题可以通过一些手段解决,比如替换神经元激活函数,采用ReLU单元,那么还是有问题,就是训练神经网络的时候需要很大的标签数据,因为深度神经网络的模型参数很多,所以在训练数据少的时候很难找到最优解,也就是深度神经网络不具备解决小样本问题的能力,所以受这些限制,深度的神经网络一度被认为是无法训练的,而90年代出现的支持向量机很好的解决了小样本和优化问题,所以受到人们的推崇。但是Hinton一直没有放弃对于深层神经网络的研究,因为他觉得,支持向量机其实只是感知机引入了一些tricks,比如核方法很好的解决了非线性问题,但是核的选择却深深困扰着所有的机器学习的研究者,另外最大化间隔也就是支持向量提高了模型的泛化能力,但是这些并不是提取非线性特征最有效的方法,所以深层神经网络的研究是很有意义的。以上思想来自于Hinton在coursera的公开课NeuralNetworksforMachineLearningRBMReview在2006以后深度网络开始兴盛,其实主要原因是,可以解决深层神经网络的优化问题了,也就是2006年Hinton发的文章里面采用的训练方法,逐层训练,而在逐层训练的时候起到最重要作用的受限玻尔兹曼机,这样的逐层训练有什么优点那,它的优点就是很好的解决了前面提到的深层神经网络遇到的两个问题,很容易陷入局部最优和没有大量标签样本。其中的逐层训练解决了优化的问题,因为在逐层用玻尔兹曼机预训练的时候就为整个网络赋予了较好的初始权值,使得网络只要经过微调就可以达到最优解,而不会陷入poorlocalminima,另外一个优点是由于受限玻尔兹曼机是一个生成模型,它可以充分利用大量的非标签数据,因为预训练的时候是对不含标签的数据本身进行建模,其中RBM的可见单元是非标签训练数据,隐藏层训练完以后可以看做是数据的特征,这样如果将多个RBM堆叠起来就会起到提取数据非线性特征的效果,所以由此开始了深度学习的热潮。UnsupervisedLearningforGenerativeModelSupervisedLearningforDiscriminantModelPretrainingFine-tuneUnlabeledLabeled上面这个图其实是2006年Hinton最开始进行深度学习时候的思想,其中堆叠RBM是核心的思想,当然最重要的那篇论文中并没有提到判别模型,但是用生成模型一样可以做分类,以后会提到。这整个模型中还有一个重要的知识就是信念网络,它和受限玻尔兹曼机很像,但是它是有向图,而玻尔兹曼机是无向图,它们都是学习一个联合概率分布,下面我们讲解信念网络,这对理解DBN很重要。而DBN可以认为是深度学习复兴的一个开始。BeliefNetworkRBM和BN都是属于概率图模型,而BN是有向图,它又叫Bayesiannetworks,causalnetworks,在1992年,RadfordNeal提出如果BN使用和RBM相同的sigmoid激活单元,我们可以得到SigmoidBeliefNets。既然两者都属于生成模型,都可以对非标签数据进行建模,解决前面提到的两个问题,那么我们该使用RBM还是BN那,亦或是两者的合体,其实deepbeliefnets深度信念网络就是两者的合体,我们已经学习了RBM,但是要理解DBN还必须理解BN,还有很长的路要走。BNandProbabilityGraphicalModelRBM和BN都属于PGM,PGM是图论和概率论的结合,这是人工智能一个重要的领域,因为它解决了很多不确定性的问题,用它们建模得到的都是生成模型,我们回忆一下最开始学习BM的时候最重要的两个问题,一个是学习问题,一个是推断问题(就是从模型中采样),对于BN来说也是一样,如果是稀疏连接的有向无环BN,人们已经发明了很多精确推断的方法,但是对于密集连接的BN来说,推断和学习都是问题。stochastichiddencausesvisibleeffects当我们有可见变量的时候,一般指的是训练数据,我们要解决的问题有两个:Theinferenceproblem:给定可见变量时推断蓝色的不可见变量的状态。现在已经有了很多技术处理这个问题,对于简单的贝叶斯网络,可以用精确推断,即根据贝叶斯公式计算得出隐藏节点的值;对于密集连接的网络,就是概率分布很复杂时,现在有MCMC采样方法和变分推断方法可以使用。Thelearningproblem:在给定可见单元的训练数据的时候,调整整个网络的变量之间的连接权,使得这个生成模型产生训练数据的概率最大化。其实学习问题中包含推断问题,因为学习权值时,一般都需要知道隐藏节点的状态,所以推断是必要的过程。GraphicalModelsandversusNeuralNetworks最开始的图模型都是借助专家来定义图结构和节点之间的条件概率:例如会找来一个医学专家,询问他这个病症怎么影响另一个病症,每个病症都是图模型中的一个节点,并且每个节点都有一个条件概率来描述其他节点怎么影响它,就这样依靠专家来定义一个图模型。这样的图模型一般都是稀疏连接的,因为都是人为定义的,所以不会太过复杂而且这样的图模型一般只关注怎么能正确地推断,例如知道了病的症状,怎么推测病因。因为模型是专家定义的,所以几乎不涉及图的学习问题。神经网络只是模型的结构和基本属性需要人为定义:对于神经网络来说,学习才是核心的问题像早期图模型那样人为定义模型是不可能的,所以神经网络学习到的模型都来自于训练数据,而不是专家。神经网络不像早期图模型那样希望有很好的解释性和稀疏连接的性质来使得推断更加的容易,它更注重学习而非推断。当然也有神经网络版本的信念网络,也就是这样的信念网络结构比较有意义,但是它是通过数据学得的模型,而不是人为定义,神经网络的生成模型就有两种。当然其实某些情况下,神经网络和概率图模型的界限并不清晰,只是说图模型更关注推断问题而神经网络更专注采用数据来学习模型的问题。TwoGenerativeNeuralNetworkEnergy-based:使用对称连接将二值随机神经元连接起来就形成了玻尔兹曼机,它的每一状态都对应一个能量,所以是给予能量的模型,而为了简化模型,使得模型更容易从数据中学得知识,限制了玻尔兹曼机的连接,就形成了受限玻尔兹曼机。Causal:用有向无环图的方式将二值随机神经元连接起来就可以得到SigmoidBeliefNet。注意RBM是无向图而SBN是有向图。虽然我们前面讲过受限玻尔兹曼机用对比散度的算法很容易学习,但是它也放弃了一些玻尔兹曼机的优点就是它没有玻尔兹曼机的层间连接,也就是学习到的RBM隐藏层没有相互影响其实这是不正确的,它限制了模型表达数据的能力,而且它只能学习单隐层,如果采用多隐层结构,也许就能避免层间无连接导致的模型表达能力减弱的问题。SBN是Neal在1992年提出的,他把SBN和BM做了对比,发现SBN学习起来稍微容易一些因为在生成数据时它只需要决定了最上面一层神经元的状态就可以逐层往下计算,最终得到一个生成的采样值。stochastichiddencausesvisibleeffects其实当时1992年训练BM还很困难,基本还是基于热平衡采样方法,直到2002年Hinton才发明了CD算法,所以他当时暂时转向了研究SBNLearningSBNSBN的学习算法较BM简单一些,因为不像训练BM时需要两个阶段positivephase和negativephase,训练SBN只需要positivephase,这是因为SBN是局部归一化模型,也就是每个节点的条件概率其实都是归一化的,而BM所服从的玻尔兹曼分布必须有一个配分函数使得每个状态的概率是归一化的而negative阶段就是计算配分函数的,所以SBN不需要。所以SBN简单,在给定在可见单元上面的训练数据时,只要能够对隐藏单元进行采样,就能很容易的对模型进行训练,训练过程中使用的是对最大似然函数进行批量梯度下降。所以现在的难点是如何对隐藏节点的后验概率分布进行采样,之所以采样比较难,是因为一个叫做解释失效的现象(explainingaway)。stochastichiddencausesvisibleeffects一旦SBN的学习完成了,那么生成一个可见单元的样本是很容易的,只需要从上到下逐层计算就可以因为它是一个因果模型。然而即使我们知道了模型参数,在给定可见单元时,推断隐藏节点的后验分布也是很难的,而且随着隐藏节点的增多,难度会越来越大,所以对于一个数百万参数的模型来说,即使只是从后验概率采样也很难,导致了无法进行学习。SBN—LearningRule在讲解怎么从隐藏单元的后验概率分布采样之前,我们先来看看如果能够采样了,那么学习算法是怎么样的。如果我们能够采样了,学习算法很简单,就是最大似然估计的思想,也就是使得可见单元神经元的值尽可能和训练数据对应的值一致,即最大似然,因为这里是sigmoid神经元,所以每个神经元开启的概率和它的所有父节点有关。j𝑖stochastichiddencausesvisibleeffects𝑠𝑖𝑠j𝑤𝑗𝑖𝑝𝑖=𝑝(𝑠𝑖=1=11+exp(−𝑏𝑖−𝑠𝑗𝑤𝑗𝑖𝑗所以对于每个神经元来说,就是将上述概率最大化,这里不具体推导,最后对于𝑤𝑗𝑖最大似然学习规则就是𝑤𝑗𝑖=𝜀𝑠𝑗(𝑠𝑖−𝑝𝑖下面我们重新回到前面提到的采样问题上,为什么对隐藏单元的后验分布采样不容易。ExplainingAway如果两个节点在先验分布中相互独立,而且它们连接到同一个子节点,那么当子节点的数据已知时,这两个节点将不再独立。这对应于图模型中的多因一果的模型。A𝐵𝐶考虑右图中三个变量的联合概率分布,其中A和B独立,即对于先验概率分布,A和B独立,可以看出只要A与B中任意一个为1则C就为1,这正是多因一果模型。我们所说的explainingaway现象是在推断的时候产生的,即当观测到c的值是1时,我们不知道A和B的取值情况,需要进行推断根据下面的联合概率分布表格即可求出下列概率,这都很符合常理。𝑝(𝐴=1|𝐶=1=𝑝(𝐵=1|𝐶=1=23𝑝(𝐵=1|𝐶=1𝑝(𝐵=1=12但是如果我们现在确定了A=1,则无论B是多少都有C=1,即有𝑝(𝐵=1|𝐶=1,𝐴=1=12=𝑝(𝐵=1𝑝(𝐵=1|𝐶=1我们可以看出当观测到C=1,而且知道A=1时,B=1的概率下降了,这就表示A和B的后验概率并不独立了,这就叫explainingawayLearningSBN—ProblemsWhyit’shardtolearnsigmoidbeliefnetsonelayeratatime如右图假设这里有一个多层隐变量的因果模型,是一个SBN,这个模型能生成最终的观测数据。现在我们想学习这个模型在第一隐层和可见层之间的的权值W。在学习的过程中会遇到几个问
本文标题:深度学习DBN深度信念网络
链接地址:https://www.777doc.com/doc-3896240 .html