精华内容
下载资源
问答
  • 基于分离特征学习的DBN结构用于SSMVEP信号分类
  • DBN(深度置信网络)解析

    万次阅读 2016-12-14 22:42:01
    1.DBN结构 DBN: 将RBM像砖块一样叠加起来构建的一个网络。 DBN训练方法: 第 1 步:(预训练) 分别单独无监督地训练每一层 RBM 网络,确保特征向量映射到不同特征空间时,都尽可能多地保留特征信息;(H0可以看作...

    我在上篇文章介绍了RBM(受限玻尔兹曼机),本篇文章需要RBM的先验知识,不了解的可以去看看,了解了继续往下看。

    1.DBN结构

    DBN: 将RBM像砖块一样叠加起来构建的一个网络。

    DBN训练方法:
    DBN训练方法

    第 1 步:(预训练)
    分别单独无监督地训练每一层 RBM 网络,确保特征向量映射到不同特征空间时,都尽可能多地保留特征信息;(H0可以看作H1的可见层)

    第 2 步:(微调)
    在 DBN 的最后一层设置 BP 网络,接收 RBM 的输出特征向量作为它的输入特征向量,有监督地训练实体关系分类器.

    每一层 RBM 网络只能确保自身层内的权值对该层特征向量映射达到最优,并不是对整个 DBN 的特征向量映射达到最优,所以反向传播网络还将错误信息自顶向下传播至每一层 RBM,微调整个 DBN 网络.

    RBM 网络训练模型的过程可以看作对一个深层 BP 网络权值参数的初始化,使DBN 克服了 BP 网络因随机初始化权值参数而容易陷入局部最优和训练时间长的缺点.这可以很直观的解释,DBNs的BP算法只需要对权值参数空间进行一个局部的搜索,这相比前向神经网络来说,训练是要快的,而且收敛的时间也少。

    注意:本过程和栈式自编码器类似,用RBM将自编码器进行替换,并用对比差异算法替换反向传播。

    展开全文
  • DBN

    万次阅读 多人点赞 2016-09-01 16:27:48
    接着分别讲述了:(1) 其基本组成结构——受限玻尔兹曼机的的基本情况,以及,(2) 这个基本结构如何组成深度信念网络。 本文仅仅能使读者了解深度信念网络这一概念,内容非常浅显,甚至有许多不严密的地方。如果有...

    本篇非常简要地介绍了深度信念网络的基本概念。文章先简要介绍了深度信念网络(包括其应用实例)。接着分别讲述了:(1) 其基本组成结构——受限玻尔兹曼机的的基本情况,以及,(2) 这个基本结构如何组成深度信念网络。 本文仅仅能使读者了解深度信念网络这一概念,内容非常浅显,甚至有许多不严密的地方。如果有愿意深入了解受限玻尔兹曼机、深度信念网络的,想对深度学习有更多了解的,请访问深度学习官方网站。或者读者可以参考文末的“推荐阅读”一节。 
     
    目录 
    概述 .............................................................................................................................. 2 
    受限玻尔兹曼机 ............................................................................................................ 3 
    神经元之间的条件独立性 .......................................................................................... 3 
    使用 RBM 的过程 ..................................................................................................... 4 
    训练 RBM ................................................................................................................. 5 
    深度信念网络 ................................................................................................................ 5 
    训练过程: ................................................................................................................ 6 
    调优过程 (Fine-Tuning) : ...................................................................................... 6 
    使用过程 ................................................................................................................... 7 
    推荐阅读 ....................................................................................................................... 8 
    论文 .......................................................................................................................... 8 
    博文和网络教程 ........................................................................................................ 8 
     
     
    概述 
    深度信念网络 (Deep Belief Network, DBN) 由 Geoffrey Hinton 在 2006 年提出。它是一种生成模型,通过训练其神经元间的权重,我们可以让整个神经网络按照最大概率来生成训练数据。我们不仅可以使用 DBN 识别特征、分类数据,还可以用它来生成数据。下面的图片展示的是用 DBN 识别手写数字: 

    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
     
    图 1 用深度信念网络识别手写数字。图中右下角是待识别数字的黑白位图,它的上方有三层隐性神经元。每一个黑色矩形代表一层神经元,白点代表处于开启状态的神经元,黑色代表处于关闭状态的神经元。注意顶层神经元的左下方即使别结果,与画面左上角的对应表比对,得知这个 DBN 正确地识别了该数字。

     
    下面是展示了一个学习了大量英文维基百科文章的 DBN 所生成的自然语言段落: 
    In 1974 Northern Denver had been overshadowed by CNL, and several Irish intelligence agencies in the Mediterranean region. However, on the Victoria, Kings Hebrew stated that Charles decided to escape during an 
    alliance. The mansion house was completed in 1882, the second in its bridge are omitted, while closing is the proton reticulum composed below it aims, such that it is the blurring of appearing on any well-paid type of box printer. 
     
    DBN 由多层神经元构成,这些神经元又分为显性神经元隐性神经元(以下简称显元和隐元)。显元用于接受输入,隐元用于提取特征。因此隐元也有个别名,叫特征检测器 (feature detectors)。最顶上的两层间的连接是无向的,组成联合内存 (associative memory)。较低的其他层之间有连接上下的有向连接。最底层代表了数据向量 (data vectors),每一个神经元代表数据向量的一维。 
    DBN 的组成元件是受限玻尔兹曼机 (Restricted Boltzmann Machines, RBM)。训练 DBN 的过程是一层一层地进行的。在每一层中,用数据向量来推断隐层,再把这一隐层当作下一层 (高一层) 的数据向量。 


    受限玻尔兹曼机 
    如前所述,RBM 是 DBN 的组成元件。事实上,每一个 RBM 都可以单独用作聚类器。 
    RBM 只有两层神经元,一层叫做显层 (visible layer),由显元 (visible units) 组成,用于输入训练数据。另一层叫做隐层 (Hidden layer),相应地,由隐元 (hidden units) 组成,用作特征检测器 (feature detectors)。 
     【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
     
    图 2 受限玻尔兹曼机的结构。图中的较上一层神经元组成隐层,较下的神经元组成显元。每一层都可以用一个向量来表示,每一维表示每个神经元。注意这两层间的对称 (双向) 连接。 

    神经元之间的条件独立性 
    应注意到,显层和隐层内部的神经元都没有互连,只有层间的神经元有对称的连接线。这样的好处是,在给定所有显元的值的情况下,每一个隐元取什么值是互不相关的。也就是说, 
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
     同样,在给定隐层时,所有显元的取值也互不相关: 
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
     
    有了这个重要性质,我们在计算每个神经元的取值情况时就不必每次计算一个,而是同时并行地计算整层神经元。 
     
    使用 RBM 的过程 
    假设我们现在已经得到一个训练好的 RBM,每个隐元与显元间的权重用矩阵
    W表示,且: 
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
      
    其中Wij代表从第i个显元到第j个隐元的权重,M代表显元的个数,N代表隐元的个数。那么,当我们把一条新来的数据【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen附给 (clamp to) 显层后,RBM 将会依照权值W来决定开启或关闭隐元。具体的操作如下: 
    首先,将每个隐元的激励值 (activation) 计算出来: 
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
     注意,这里用到了前面提到的神经元之间的条件独立性。 
    然后,将每个隐元的激励值都用 S 形函数进行标准化,变成它们处于开启状 (用 1 表示) 的概率值: 
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
     
    此处的 S 形函数我们采用的是 Logistic 函数: 
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
    至此,每个隐元hj开启的概率被计算出来了。其处于关闭状态 (用 0 表示) 的概率自然也就是 
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
    那么到底这个元开启还是关闭,我们需要将开启的概率与一个从 0, 1 均匀分布中抽取的随机值 
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
     进行如下比较 
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
    然后开启或关闭相应的隐元。
    给定隐层,计算显层的方法是一样的。 

    训练 RBM 
    RBM 的训练过程,实际上是求出一个最能产生训练样本的概率分布。也就是说,要求一个分布,在这个分布里,训练样本的概率最大。由于这个分布的决定性因素在于权值W ,所以我们训练 RBM 的目标就是寻找最佳的权值。为了保持读者的兴趣,这里我们不给出最大化对数似然函数的推导过程,直接说明如何训练 RBM。 
    G. Hinton 提出了名为对比散度 (Contrastive Divergence) 的学习算法。下面我们来详述它的具体过程。 
    我们沿用前文的符号记法。 
    算法1. 对比散度 
    对于训练集中的每一条记录
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
      
    如此训练之后的 RBM 就能较为准确地提取显层的特征,或者根据隐层所代表
    的特征还原显层了。 


    深度信念网络 
    前文我们已经介绍了 RBM 的基本结构和其训练、使用过程,接下来我们介绍DBN 的相关内容。
    DBN 是由多层 RBM 组成的一个神经网络,它既可以被看作一个生成模型,也可以当作判别模型,其训练过程是:使用非监督贪婪逐层方法去预训练获得权值。 
    训练过程: 
    1. 首先充分训练第一个 RBM; 
    2. 固定第一个 RBM 的权重和偏移量,然后使用其隐性神经元的状态,作为第二个 RBM 的输入向量; 
    3. 充分训练第二个 RBM 后,将第二个 RBM 堆叠在第一个 RBM 的上方; 
    4. 重复以上三个步骤任意多次; 
    5. 如果训练集中的数据有标签,那么在顶层的 RBM 训练时,这个 RBM 的显层中除了显性神经元,还需要有代表分类标签的神经元,一起进行训练: 
    a) 假设顶层 RBM 的显层有 500 个显性神经元,训练数据的分类一共分成了 10 类; 
    b) 那么顶层 RBM 的显层有 510 个显性神经元,对每一训练训练数据,相应的标签神经元被打开设为 1,而其他的则被关闭设为 0。 
    6. DBN 被训练好后如下图: (示意) 
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
     图 3 训练好的深度信念网络。图中的绿色部分就是在最顶层 RBM 中参与训练的标签。注意调优 (FINE-TUNING) 过程是一个判别模型 
     另:
    【转】深度学习--深度信念网络(Deep Belief Network) - 路过天堂_ellen - 狗狗的地盘_ellen
     
    调优过程 (Fine-Tuning) : 
    生成模型使用 Contrastive Wake-Sleep 算法进行调优,其算法过程是: 
    1. 除了顶层 RBM,其他层 RBM 的权重被分成向上的认知权重和向下的生成权重; 
    2. Wake 阶段:认知过程,通过外界的特征和向上的权重 (认知权重) 产生每一层的抽象表示 (结点状态) ,并且使用梯度下降修改层间的下行权重 (生成权重) 。也就是“如果现实跟我想象的不一样,改变我的权重使得我想
    象的东西就是这样的”。 
    3. Sleep 阶段:生成过程,通过顶层表示 (醒时学得的概念) 和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概
    念”。 

    使用过程 :
    1. 使用随机隐性神经元状态值,在顶层 RBM 中进行足够多次的吉布斯抽样; 
    2. 向下传播,得到每层的状态。 

     
    推荐阅读 
    论文 
    1. Representation Learning: A Review and New Perspectives, Yoshua Bengio, Aaron Courville, Pascal Vincent, Arxiv, 2012. 
    2. The monograph or review paper Learning Deep Architectures for AI (Foundations & Trends in Machine Learning, 2009). 
    3. Deep Machine Learning – A New Frontier in Artificial Intelligence Research – a survey paper by Itamar Arel, Derek C. Rose, and Thomas P. Karnowski. 
    4. A Fast Learning Algorithm for Deep Belief Nets by Geoffrey E. Hinton and Simon Osindero. 
    博文和网络教程 
    1. Introduction to Restricted Boltzmann Machines by Edwin Chen. 
    2. An Introduction to Restricted Boltzmann Machines by Yuhuan Jiang. 
    3. Restricted Boltzmann Machine - Short Tutorial by iMonad. 
    4. 《深度学习学习笔记整理系列》 by Zouxy. 


    下面是对上一面的补充

    Deep Belief Networks深信度网络

            DBNs是一个概率生成模型,与传统的判别模型的神经网络相对,生成模型是建立一个观察数据和标签之间的联合分布,对P(Observation|Label)和 P(Label|Observation)都做了评估,而判别模型仅仅而已评估了后者,也就是P(Label|Observation)。对于在深度神经网络应用传统的BP算法的时候,DBNs遇到了以下问题:

    (1)需要为训练提供一个有标签的样本集;

    (2)学习过程较慢;

    (3)不适当的参数选择会导致学习收敛于局部最优解。

           DBNs由多个限制玻尔兹曼机(Restricted Boltzmann Machines)层组成,一个典型的神经网络类型如图三所示。这些网络被“限制”为一个可视层和一个隐层,层间存在连接,但层内的单元间不存在连接。隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。

           首先,先不考虑最顶构成一个联想记忆(associative memory)的两层,一个DBN的连接是通过自顶向下的生成权值来指导确定的,RBMs就像一个建筑块一样,相比传统和深度分层的sigmoid信念网络,它能易于连接权值的学习。

           最开始的时候,通过一个非监督贪婪逐层方法去预训练获得生成模型的权值,非监督贪婪逐层方法被Hinton证明是有效的,并被其称为对比分歧(contrastive divergence)。

           在这个训练阶段,在可视层会产生一个向量v,通过它将值传递到隐层。反过来,可视层的输入会被随机的选择,以尝试去重构原始的输入信号。最后,这些新的可视的神经元激活单元将前向传递重构隐层激活单元,获得h(在训练过程中,首先将可视向量值映射给隐单元;然后可视单元由隐层单元重建;这些新可视单元再次映射给隐单元,这样就获取新的隐单元。执行这种反复步骤叫做吉布斯采样)。这些后退和前进的步骤就是我们熟悉的Gibbs采样,而隐层激活单元和可视层输入之间的相关性差别就作为权值更新的主要依据。

           训练时间会显著的减少,因为只需要单个步骤就可以接近最大似然学习。增加进网络的每一层都会改进训练数据的对数概率,我们可以理解为越来越接近能量的真实表达。这个有意义的拓展,和无标签数据的使用,是任何一个深度学习应用的决定性的因素。

           在最高两层,权值被连接到一起,这样更低层的输出将会提供一个参考的线索或者关联给顶层,这样顶层就会将其联系到它的记忆内容。而我们最关心的,最后想得到的就是判别性能,例如分类任务里面。

           在预训练后,DBN可以通过利用带标签数据用BP算法去对判别性能做调整。在这里,一个标签集将被附加到顶层(推广联想记忆),通过一个自下向上的,学习到的识别权值获得一个网络的分类面。这个性能会比单纯的BP算法训练的网络好。这可以很直观的解释,DBNs的BP算法只需要对权值参数空间进行一个局部的搜索,这相比前向神经网络来说,训练是要快的,而且收敛的时间也少。

           DBNs的灵活性使得它的拓展比较容易。一个拓展就是卷积DBNs(Convolutional Deep Belief Networks(CDBNs))。DBNs并没有考虑到图像的2维结构信息,因为输入是简单的从一个图像矩阵一维向量化的。而CDBNs就是考虑到了这个问题,它利用邻域像素的空域关系,通过一个称为卷积RBMs的模型区达到生成模型的变换不变性,而且可以容易得变换到高维图像。DBNs并没有明确地处理对观察变量的时间联系的学习上,虽然目前已经有这方面的研究,例如堆叠时间RBMs,以此为推广,有序列学习的dubbed
    temporal convolutionmachines,这种序列学习的应用,给语音信号处理问题带来了一个让人激动的未来研究方向。

           目前,和DBNs有关的研究包括堆叠自动编码器,它是通过用堆叠自动编码器来替换传统DBNs里面的RBMs。这就使得可以通过同样的规则来训练产生深度多层神经网络架构,但它缺少层的参数化的严格要求。与DBNs不同,自动编码器使用判别模型,这样这个结构就很难采样输入采样空间,这就使得网络更难捕捉它的内部表达。但是,降噪自动编码器却能很好的避免这个问题,并且比传统的DBNs更优。它通过在训练过程添加随机的污染并堆叠产生场泛化性能。训练单一的降噪自动编码器的过程和RBMs训练生成模型的过程一样。



    个人理解:
    在DBNs网络的中其训练是逐层次的,每一层训练好之后才进行下一层的叠加,计算这一层的参数的,
    还有就是DBNs可以看做是一种无监督的自编码的过程其最后一层可以加入分类成份进行训练,SAE,SDAE,DBN可以看做是一个大的类型,缺点是只能是一维的数据。

    展开全文
  • 很好的基于蚁群优化的DBN转移网络结构学习算法,算法描述很详细,特别适合初学者
  • DBN+DNN的结构问题(含bottleneck)

    千次阅读 2016-10-03 19:04:00
    假期之前遇到一个问题一直在困扰着我,先用DBN做pretrain的时候,那么DNN的层数以及每层的结构该怎么设计呢?匆匆忙忙的三四天假期结束了,先解决一下这个问题。先来看一下,之前做的一个wsj的一个demo,用的原始的...

    假期之前遇到一个问题一直在困扰着我,先用DBN做pretrain的时候,那么DNN的层数以及每层的结构该怎么设计呢?匆匆忙忙的三四天假期结束了,先解决一下这个问题。

    先来看一下,之前做的一个wsj的一个demo,用的原始的配置:

      hidlayers=2
      hiddims=512
      #训练dbn的脚本,两层的RBM 隐层维数是512
      steps/nnet/pretrain_dbn.sh --rbm-iter 3 --nn-depth $hidlayers --hid-dim $hiddims \
        data/fmllr_${gmmname}/train_data $dir
      #训练dnn的脚本,用的上面pretrain生成的feature_transform 和 dbn, 注意:--hid-layers 0,也没有hidden_dim的参数
      steps/nnet/train.sh --feature-transform $feature_transform --dbn $dbn --hid-layers 0 --learn-rate 0.004 data/fmllr_${gmmname}/train_data data/fmllr_${gmmname}/test_data data/lang ${ali}_train \ ${ali}_test $dir || exit 1;

    下面分别看一下生成的网络拓扑图:

    #1.rbm.proto
    <Rbm> <InputDim> 462 <OutputDim> 512 <VisibleType> gauss <HiddenType> bern <ParamStddev> 0.1
    #2.rbm.proto
    <Rbm> <InputDim> 512 <OutputDim> 512 <VisibleType> bern <HiddenType> bern <ParamStddev> 0.1 <VisibleBiasCmvnFilename> exp/pretrain_lstm_2_512_recurrent/2.cmvn
    #nnet.proto, 这里用的lstm,AffineTransform是输出层
    <NnetProto>
    <LstmProjectedStreams> <InputDim> 462 <OutputDim> 512 <CellDim> 800 <ParamScale> 0.010000 <ClipGradient> 5.000000
    <LstmProjectedStreams> <InputDim> 512 <OutputDim> 512 <CellDim> 800 <ParamScale> 0.010000 <ClipGradient> 5.000000
    <AffineTransform> <InputDim> 512 <OutputDim> 1979 <BiasMean> 0.0 <BiasRange> 0.0 <ParamStddev> 0.040000
    <Softmax> <InputDim> 1979 <OutputDim> 1979
    </NnetProto>

    初步总结一下结论(不确定,具体问一下作者再来补充): dnn隐层的个数等于dbn的层数,并且前两层的维数保持与之前dbn的结构一致(不设置隐层维数参数)。

    但是现在我们需要加bottleneck layer:
    dnn_hidden_layer=0
    scripts/train.sh –splice 5 –dbn dbnfeaturetransformfeature_transform –hid-layers dnnhiddenlayerbndimbn_dim
    –learn-rate 0.004 12 34 $5 || exit 1;

    #command: /home/zjm/kaldi/src/nnetbin/nnet-info exp/train_0_512/nnet_dbn_dnn.init
    #results:
    num-components 11
    input-dim 286
    output-dim 48
    number-of-parameters 0.828464 millions
    component 1 : <AffineTransform>, input-dim 286, output-dim 512, 
      linearity ( min -1.00076, max 1.05867, mean -0.000582807, stddev 0.0549108, skewness 1.95299, kurtosis 34.2073 ) , lr-coef 1, max-norm 0
      bias ( min -5.15176, max 3.76015, mean -2.61085, stddev 1.22834, skewness 0.860572, kurtosis 1.58346 ) , lr-coef 1
    component 2 : <Sigmoid>, input-dim 512, output-dim 512, 
    component 3 : <AffineTransform>, input-dim 512, output-dim 512, 
      linearity ( min -2.07009, max 2.73179, mean -0.0121263, stddev 0.133941, skewness 1.1626, kurtosis 18.9128 ) , lr-coef 1, max-norm 0
      bias ( min -26.1294, max 18.4352, mean -3.11283, stddev 3.36512, skewness -2.40273, kurtosis 16.4141 ) , lr-coef 1
    component 4 : <Sigmoid>, input-dim 512, output-dim 512, 
    component 5 : <AffineTransform>, input-dim 512, output-dim 512, 
      linearity ( min -1.85442, max 2.6435, mean -0.0147206, stddev 0.137383, skewness 1.64592, kurtosis 23.7388 ) , lr-coef 1, max-norm 0
      bias ( min -5.55276, max 1.51492, mean -2.62382, stddev 0.815517, skewness -0.163322, kurtosis 2.72185 ) , lr-coef 1
    component 6 : <Sigmoid>, input-dim 512, output-dim 512, 
    component 7 : <LinearTransform>, input-dim 512, output-dim 128, 
      linearity ( min -0.588584, max 0.635746, mean 0.000682702, stddev 0.147005, skewness 0.00623861, kurtosis -0.00738311 ) , lr-coef 0.1
    component 8 : <AffineTransform>, input-dim 128, output-dim 512, 
      linearity ( min -0.571826, max 0.64164, mean -0.000542065, stddev 0.146909, skewness 0.00927952, kurtosis 0.00426197 ) , lr-coef 0.1, max-norm 0
      bias ( min -3.98881, max -0.00461864, mean -1.98305, stddev 1.12245, skewness -0.0044525, kurtosis -1.14907 ) , lr-coef 0.1
    component 9 : <Sigmoid>, input-dim 512, output-dim 512, 
    component 10 : <AffineTransform>, input-dim 512, output-dim 48, 
      linearity ( min -0.926078, max 0.86341, mean 0.0022525, stddev 0.209632, skewness -0.00951353, kurtosis 0.0446613 ) , lr-coef 1, max-norm 0
      bias ( min 0, max 0, mean 0, stddev 0, skewness -nan, kurtosis -nan ) , lr-coef 0.1
    component 11 : <Softmax>, input-dim 48, output-dim 48, 

    注意:这里的nnet.proto只有bottleneck layer + affinetransform + softmax. 并不是最后生成的网络拓扑图。因为train.sh中进行了:
    nnet-concat “dbn"nnet_init_old $nnet_init
    将dbn 和 nnet.proto 共同生成了 nnet_init(exp/train_0_512/nnet_dbn_dnn.init), 所以我们上面的结论是正确的,想知道具体的信息还得去看train.sh。

    ---》 补充
    经过一段时间的使用,可以发现在总层数确定的情况下,DBN的层数不一定越多越好。 Kaldi默认是BN层是在输出层的前边的全联接层的前边,并且通过train.sh添加的DNN层数在BN的前边,所以整体结构是这样的:
    “n层DBN + m层DNN + BN + 全连接层(48*1024 +sigmoid) + output(1024 * 600 + softmax)”
    我们假设的BN层是固定的48位,输出层的lables是600个
    还有一个DBN生成的结构跟DNN是一样的夜市输出+sigmoid激活层(核函数)
    NOTE: 综上不要去加 remove-last-compnents 参数,除非你想用deep feature.
    嗯嗯,核函数,是个好问题,可以去知乎学习一下

    展开全文
  • 其经典结构为: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181110120423330.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubm...

    深度信念网络在处理维数比较多的数据时,可以起到压缩数据维度的作用。其经典结构为:
    在这里插入图片描述

    DBN由多个RBM堆叠而成,训练过程由预训练和微调构成
    深度信念网络训练步骤:
    (1)预训练:分别单独无监督的训练每一层RBM网络,确保特征向量映射到不同特征空间,都尽可能的保留特征信息;它通过一个非监督贪婪逐层方法预训练获得权重(即不要类标,不断拟合输入,依次逐层)。在这个过程中,数据输入到可见层,生成一个向量V,在通过权值w传给隐藏层,得到h,由于隐藏层之间是无连接的,所以可以并行得到隐藏层所有节点值。通过隐层激活单元和可视层输入之间的相关性差别(通过能量函数来度量网络的稳定性,优化函数是根据求能量函数球指数后,归一化,然后最大似然得到)就作为权值更新的主要依据。具体公式?
    从单层的RBM训练说起,可见层是用来接受输入信号,隐藏层用来提取特征,RBM是通过无监督学习自动找到研究问题的最佳特征。
    (2)在 DBN 的最后一层设置 BP 网络,接收 RBM 的输出特征向量作为它的输入特征向量,有监督地训练实体关系分类器.而且每一层 RBM 网络只能确保自身层内的 权值对该层特征向量映射达到最优,并不是对整个 DBN 的特征向量映射达到最优,所以反向传播网络还将错误信息自顶向下传播至每一层 RBM,微调整个 DBN 网络.RBM 网络训练模型的过程可以看作对一个深层 BP 网络权值参数的初始化,使DBN 克服了 BP 网络因随机初始化权值参数而容易陷入局部最优和训练时间长的缺点.


    转载:
    https://blog.csdn.net/u013714645/article/details/74892888
    https://blog.csdn.net/NIeson2012/article/details/52184189

    展开全文
  • dbn matlab代码果蝇DBN 果蝇动态贝叶斯网络(DBN)项目的MATLAB代码 介绍 能够从时空表达数据推断基因调控网络是生物学中的...最后,使用贝叶斯统计,我们对拟议的基因调控网络的拓扑结构和调控权重进行了稳健性测试。
  • DBN的训练过程

    万次阅读 2015-03-17 20:37:47
    有一种更好的神经网络模型,这就是受限... 经典的DBN网络结构 是由若干层 RBM 和一层 BP 组成的一种深层神经网络, 结构如下图所示.:   DBN 在训练模型的过程中主要分为两步:  第 1 步:分别单独无监督地训练每一
  • RBM&DBN

    2015-03-14 00:06:55
    下面是限制玻尔兹曼机的结构 每一个单元(包括可见层单元和隐层单元)可以为任意的指数族单元,我们假设所有的可见单元和隐单元均为二值变量,即∀\forall i,j ,viv_i∈\in{0,1},hjh_j∈\in{0,1}。 RBM作为一个...
  • 在下图的基本神经元结构后面,你会看到详细的讲解: 基本的人工神经网络神经元(basic neural network cell)相当简单,这种简单的类型可以在常规的前馈人工神经网络架构里面找到。这种神经元与其它神经元之间的连接...
  • 理解RBM&DBN

    2018-09-18 14:42:28
    网络结构 RBM是一个无监督拟合训练数据分布的一种方法。包含两层,可视层(V)和隐藏层(H)。层与层之间是全连接,层内部每个节点互相独立,参数包含(W,a,b)。网络结构比较简单,给定训练数据...
  • 深度信念网络DBN

    千次阅读 2017-03-08 20:28:14
    接着分别讲述了:(1) 其基本组成结构——受限玻尔兹曼机的的基本情况,以及,(2) 这个基本结构如何组成深度信念网络。 本文仅仅能使读者了解深度信念网络这一概念,内容非常浅显,甚至有许多不严密的地方。如果有...
  • DBN的GeNIe显示

    千次阅读 2018-05-23 19:07:19
    https://www.bayesfusion.com/dbns以下GeNIe屏幕显示表示此问题的模型的结构。 GeNIe代表动态模型的方式与其他表示不同,因为它不关注时间片而是关注变量。这种表示允许对高阶时间影响进行紧凑建模。我们可以在下面...
  • 深度置信网络(DBN

    2020-08-09 13:41:05
    DBN,英文全称deep belief network,是使用层叠波尔兹曼机 (Restricted Boltzmann Machines, RBM)组成深度神经网络。 下图为受限玻尔兹曼机的结构。图中的上层神经元组成隐层,下层神经元组成显层。每一层都可以用一...
  • DBN和DNN的区别(未完待续)

    万次阅读 2014-10-16 12:59:35
     DNN是一个bottom-up的结构,同时,在一般的文献中,将DNN作为一个DBN进行训练得到的模型还是称为DBN(这就是为什么我一直分不清这两种结构的原因)。 二.训练算法  DBN在训练的时候,当做一个...
  • 随着经济的发展,电力需求逐渐增大,但由于电力系统在电量自动化的技术方面相对落后,窃电现象屡禁不止。...主要介绍了DBN结构与学习算法和基于DBN算法的反窃电模型,最后进行了实验,对结果进行了分析。
  • DBN(深度置信网络)

    万次阅读 多人点赞 2018-09-12 21:24:35
    具有层次结构的数学算法: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;神经网络&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &n
  • DBN的浅显易懂解释

    千次阅读 2018-09-19 22:54:21
      本篇非常简要地介绍了深度信念网络的基本概念。...接着分别讲述了:(1) 其基本组成结构——受限玻尔兹曼机的的基本情况,以及,(2) 这个基本结构如何组成深度信念网络。 本文仅仅能使读者了解深度信念...
  • DBN深度信念网络详解

    千次阅读 2018-09-11 15:44:24
    1. 自联想神经网络与深度网络  自联想神经网络是很...其网络结构可以很简单的表示如下:  如果我们在上述网络中不使用sigmoid函数,而使用线性函数,这就是PCA模型。中间网络节点个数就是PCA模型中的主分量个...
  • 动态贝叶斯网络DBN

    万次阅读 2012-12-05 19:34:50
    贝叶斯网络 贝叶斯网络...贝叶斯网络为人们提供了一种方便的框架结构来表示因果关系,这使得不确定性推理变得在逻辑上更为清晰、可理解性强。对于贝叶斯网络,我们可以用两种方法来看待它:首先贝叶斯网表达了各个节
  • 针对传统BP神经网络在检测速度、精度、复杂度等方面的缺陷,提出了一种基于深度信念网(deep belief nets,DBN)的网络入侵检测算法,将数据通过双层RBM结构降维,再用BP神经网络反向微调结构参数,从而简化了数据...
  • dbn matlab代码multimodal_dbn_pose--亚什基塔利亚 该代码旨在对RGB和深度图像的混合.../的目录结构,并将其内容粘贴将下载的文件夹放入cad60_directory。 步骤3:执行preprocess_cad60.py 步骤4:运行cad60_dataset.p
  • 在该项目中,从RBM结构实现了神经网络: 受限玻尔兹曼机(RBM)是一种生成型随机人工神经网络,可以学习其输入集上的概率分布。 然后,实现一个DBN: 在机器学习中,深度信念网络(DBN)是一个生成的图形模型,或者...
  • HMM)的动作识别,提出深度置信网络模型(DBN)和隐马尔可夫模型相结合的动作识别模型,构建了一种非线性的基于条件限制玻尔兹曼机(CRBM)的DBN深度学习模型,深层次结构使其建模能力更强,且能够结合历史信息建模...
  • 八.DBN深度置信网络

    2019-10-02 08:04:38
    BP神经网络是1968年由Rumelhart和Mcclelland为首的科学家提出的概念,是一种按照误差反向传播算法进行训练的多层前馈神经网络,是目前应用比较广泛的一种神经网络结构。BP网络神经网络由输入层、隐藏层和输出层三...
  • DBN---RBM简介

    2016-12-30 14:16:30
    上图即是RBM(受限玻尔兹曼机)的网络结构图,与玻尔兹曼机的区别就在于没有层内连接,其中vv为可见层,hh为隐藏层,可见层用于输入数据和获取结果,隐藏层则表示状态的变化

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 173
精华内容 69
关键字:

dbn结构