zoukankan      html  css  js  c++  java
  • (六)6.15 Neurons Networks Deep Belief Networks

    Hintion老爷子在06年的science上的论文里阐述了 RBMs 可以堆叠起来并且通过逐层贪婪的方式来训练,这种网络被称作Deep Belife Networks(DBN),DBN是一种可以学习训练数据的高层特征表示的网络,DBN是一种生成模型,可见变量  与  个隐层的联合分布:

    这里 x = h0为RBM在第 k 层的隐层单元条件下的可见单元的条件分布, 是一个DBN顶部可见层与隐层的条件分布,如图下:

    DBN的训练:

    1. 首先充分训练第一个 RBM; 
    2. 固定第一个 RBM 的权重和偏移量,然后使用其隐性神经元的状态,作为第二个 RBM 的输入向量; 
    3. 充分训练第二个 RBM 后,将第二个 RBM 堆叠在第一个 RBM 的上方; 
    4. 重复以上三个步骤任意多次; 
    5. 如果训练集中的数据有标签,那么在顶层的 RBM 训练时,这个 RBM 的显层中除了显性神经元,还需要有代表分类标签的神经元,一起进行训练: 
    a) 假设顶层 RBM 的显层有 500 个显性神经元,训练数据的分类一共分成了 10 类; 
    b) 那么顶层 RBM 的显层有 510 个显性神经元,对每一训练训练数据,相应的标签神经元被打开设为 1,而其他的则被关闭设为 0。
    6. 对于一个4层的DBN 被训练好后如下图:( 图中的绿色部分就是在最顶层 RBM 中参与训练的标签 )
     
    DBN的fun-tuning,微调阶段:
    生成模型使用 Contrastive Wake-Sleep 算法进行调优,其算法过程是: 
    1. 除了顶层 RBM,其他层 RBM 的权重被分成向上的认知权重和向下的生成权重; 
    2. Wake 阶段:认知过程,通过外界的特征和向上的权重 (认知权重) 产生每一层的抽象表示 (结点状态) ,并且使用梯度下降修改层间的下行权重 (生成权重) 。也就是“如果现实跟我想象的不一样,改变我的权重使得我想
    象的东西就是这样的”。 
    3. Sleep 阶段:生成过程,通过顶层表示 (醒时学得的概念) 和向下权重,生成底层的状态,同时修改层间向上的权重。也就是“如果梦中的景象不是我脑中的相应概念,改变我的认知权重使得这种景象在我看来就是这个概
    念”。 
     
    DBN的使用:
    1. 使用随机隐性神经元状态值,在顶层 RBM 中进行足够多次的吉布斯抽样; 
    2. 向下传播,得到每层的状态。 
  • 相关阅读:
    Bufferedreader和BufferedWriter(带缓存的输入输出)
    FileReader和FileWriter
    Map接口的类实现
    Map接口
    Set集合
    List接口的实现类
    获取文本框或密码框中的内容
    ADTS (zz)
    初级美语 L003:My Family 解析
    初级美语 L001:Self Introduction 解析
  • 原文地址:https://www.cnblogs.com/ooon/p/5403428.html
Copyright © 2011-2022 走看看