CS229 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. 向下传播,得到每层的状态。 

猜你喜欢

转载自www.cnblogs.com/alan-blog-TsingHua/p/10024065.html