深度信念网络(DBN)

由于课题需要使用DBN,今天抽时间总结下其相关内容!!

深度信念网络,DBN,Deep Belief Nets,神经网络的一种。既可以用于非监督学习,类似于一个自编码机;也可以用于监督学习,作为分类器来使用。

从非监督学习来讲,其目的是尽可能地保留原始特征的特点,同时降低特征的维度。从监督学习来讲,其目的在于使得分类错误率尽可能地小。而不论是监督学习还是非监督学习,DBN的本质都是Feature Learning的过程,即如何得到更好的特征表达。

作为神经网络,神经元自然是其必不可少的组成部分。DBN由若干层神经元构成,组成元件是受限玻尔兹曼机(RBM)

先了解下RBM:

RBM 只有两层神经元,一层叫做显层 (visible layer),由显元 (visible units) 组成,用于输入训练数据。另一层叫做隐层 (Hidden layer),相应地,由隐元 (hidden units)组成,用作特征检测器 (feature detectors)。

RBM基本结构

每一层都可以用一个向量来表示,每一维表示每个神经元。注意这两层间的对称 (双向) 连接。 神经元之间是相互独立的,这样的好处是,在给定所有显元的值的情况下,每一个隐元取什么值是互不相关的。

隐层的概率


显层的概率

由于每个神经元是独立的,所以同时并行地计算整层神经元,不必每次计算每一个神经元。

使用RBM:(假设我们已经得到了训练好的RBM,每个隐元与显元间的权重用矩阵W表示)

权重矩阵

其中Wij代表从第i个显元到第j个隐元的权重,M代表显元的个数,N代表隐元的个数。

当来一个新样本时,每个隐元的取值为。表示隐元处于开启状态的概率(当激活函数为线性函数时相当于PCA降维)。那么到底这个元开启还是关闭,我们需要将开启的概率与一个从 0, 1 均匀分布中抽取的随机值进行比较。

给定隐层,计算显层的方法是一样的。

训练RBM

RBM 的训练过程,实际上是求出一个最能产生训练样本的概率分布。也就是说,要求一个分布,在这个分布里,训练样本的概率最大。由于这个分布的决定性因素在于权值W ,所以我们训练 RBM 的目标就是寻找最佳的权值。

对比散度

如此训练之后的 RBM 就能较为准确地提取显层的特征,或者根据隐层所代表的特征还原显层了。

深度信念网络(DBN)

将若干个RBM“串联”起来则构成了一个DBN,其中,上一个RBM的隐层即为下一个RBM的显层,上一个RBM的输出即为下一个RBM的输入。训练过程中,需要充分训练上一层的RBM后才能训练当前层的RBM,直至最后一层。

若想将DBM改为监督学习,方式有很多,比如在每个RBM中加上表示类别的神经元,在最后一层加上softmax分类器。也可以将DBM训出的W看作是NN的pre-train,即在此基础上通过BP算法进行fine-tune。实际上,前向的算法即为原始的DBN算法,后项的更新算法则为BP算法,这里,BP算法可以是最原始的BP算法,也可以是自己设计的BP算法。例如下图使用DBN作为判别模型:

在最后的一层RBM的显层加入表示类别的神经元,一起参与训练。

DBN调优的过程是一个生成模型的过程:

1.除了顶层 RBM,其他层 RBM 的权重被分成向上的认知权重和向下的生成权重;

2.Wake 阶段:认知过程,通过外界的特征和向上的权重 (认知权重) 产生每一层的抽象表示 (结点状态) ,并且使用梯度下降修改层间的下行权重 (生成权重) 。

3. Sleep 阶段:生成过程,通过顶层表示 (醒时学得的概念) 和向下权重,生成底层的状态,同时修改层间向上的权重。

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

Gibbs采样:Gibss采用是需要知道样本中一个属性在其它所有属性下的条件概率,然后利用这个条件概率来分布产生各个属性的样本值。

附一个关于DBN的案例

你可能感兴趣的:(深度信念网络(DBN))