【学习笔记】【DBN】十九——深度信念网络DBN

本篇简要介绍深度信念网络DBN,是一个不太常见的神经网络。

首先对深度信念网络(DBN)进行简要介绍,然后对其组成原件RBM的结构、原理和训练过程进行介绍。接着对DBN的训练过程进行介绍。

目录

一、DBN概述

二、首先玻尔兹曼机(RBM)

1. RBM基本结构

2. 神经元之间的条件独立性

3. 使用RBM的过程

三、深度信念网络DBN

1. DBN训练过程

 2. 调优过程

四、将DBN用于分类任务

1. 用于BP网络分类

2. DBN的拓展

总结:


一、DBN概述

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

从非监督学习来讲,其目的是尽可能地保留原始特征的特点,同时降低特征的维度。从监督学习来讲,提高分类的准确率。二者都是对特征进行学习的过程,即如何得到更好的特征表达。

作为神经网络,DBN由若干神经元组成,组成原件是受限玻尔兹曼机(RBM)。训练DBN的过程是一层一层进行的,每一层中,用数据向量推断隐层,再把这一隐层当作下一层的数据向量

二、首先玻尔兹曼机(RBM)

1. RBM基本结构

RBM有两层神经元,一层叫做显层(visible layer),用于输入训练数据;一层叫做隐层(hidden layer),用于提取特征,也称特征检测器。

【学习笔记】【DBN】十九——深度信念网络DBN_第1张图片

上图为RBM的结构。每一层都可以用一个向量表示,每一维表示一个神经元。层间是双向(兑成)全连接,层内不存在连接。隐层单元被训练去捕捉在可视层表现出来的高阶数据的相关性。

2. 神经元之间的条件独立性

由于显层和隐层内部神经元没有互联,只有层间是对称全连接,这样的好处是:

(1)在给定所有显元的值的情况下,每一个隐元取值是互不相关的。同理,在给定所有隐元下,显元取值不相关

(2)这样,计算每个神经元取值就可以并行计算

3. 使用RBM的过程

假设我们已经得到一个训练好的RBM,隐元和显元之间的权重用矩阵W表示:

【学习笔记】【DBN】十九——深度信念网络DBN_第2张图片

 M代表显元个数,N代表隐元个数。

当我们将新来的数据赋给显层后,RBM依照权值W决定开启或关闭隐元,具体操作如下:

(1)首先,(并行)计算出每个隐元的激励值;’

(2)将每个隐元的激励值用S形函数进行标准化,变成它们处于开启状(用1表示)的概率值;

(3)由此我们得到每个隐元的开启和关闭概率,此时我们将开启的概率与从一个[0,1]均匀分布中的随机抽取值进行比较,决定每个神经元开启或者关闭的概率;

(4)给定隐层,显层的计算概率一样的。

这时我们就要进行训练RBM。它实际上是求一个最能产生训练样本的概率分布,也就是说,要求一个分布,在这个分布里,训练样本的概率最大。

 G.Hitton提出了名为对比散度的学习算法,简述如下:

首先,对于训练集的每一条记录x,将其赋给显层,计算隐层神经元被开启的概率,然后从(隐层)计算出的概率中抽取一个样本,用来重构显层,再次使用重构过的显层计算隐层神经元概率,按公式更新权重矩阵W。

【学习笔记】【DBN】十九——深度信念网络DBN_第3张图片

上述反复向上和向下的操作称为吉布斯采样(Gibbs)。隐层激活单元和可视层输入之间的相关性差别就作为权值更新的主要依据。

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

三、深度信念网络DBN

1. DBN训练过程

DBN是由多层RBM组成的一个神经网络,它既可以被看作一个生成模型,也可以看作一个判别模型(最后一层加label进行BP算法输出训练)。

其训练过程是,使用非监督贪婪逐层方法预训练获得权值。训练过程如下:

(1)首先充分训练第一个RBM;

(2)固定第一个RBM的权重和偏移量,然后使用其隐性神经元的状态作为第二个RBM的输入向量;

(3)充分训练第二个RBM后,将第二个RBM堆叠在第一个RBM的上方;

(4)重复以上三个步骤任意多次;

(5)如果训练集中的数据有标签,那么在顶层的RBM训练时,这个RBM的显层中除了显性神经元,还需要有代表分类标签的神经元,一起进行训练:

          ——假设顶层 RBM 的显层有 500 个显性神经元,训练数据的分类一共分成了 10 类;

          ——那么顶层 RBM 的显层有 510 个显性神经元,对每一训练训练数据,相应的标签神经元被打开设为1,而其他的则被关闭设为0。

训练结果如下图:

【学习笔记】【DBN】十九——深度信念网络DBN_第4张图片

 2. 调优过程

生成模型使用Contrastive Wake-Sleep算法进行调优,其算法过程是:

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

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

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

使用过程 :

(1)使用随机隐性神经元状态值,在顶层 RBM 中进行足够多次的吉布斯抽样;

(2)向下传播,得到每层的状态。

四、将DBN用于分类任务

1. 用于BP网络分类

RBM的训练特点导致训练时间显著减少,因为只需要单个步骤就可以接近最大似然学习。网络的每一层都可会改进训练数据的对数概率

在预训练后,DBN可以通过利用带标签数据用BP算法去对判别性能做调整。在这里,一个标签集将被附加到顶层(推广联想记忆),通过一个自下向上的,学习到的识别权值获得一个网络的分类面。

这个性能会比单纯的BP算法训练的网络好。这可以很直观的解释,DBNs的BP算法只需要对权值参数空间进行一个局部的搜索,这相比前向神经网络来说,训练是要快的,而且收敛的时间也少。

2. DBN的拓展

(1)用于二维数据的卷积DBNs

DBNs并没有考虑到图像的2维结构信息,因为输入是简单的从一个图像矩阵一维向量化的。而CDBNs就是考虑到了这个问题,它利用邻域像素的空域关系,通过一个称为卷积RBMs的模型区达到生成模型的变换不变性,而且可以容易得变换到高维图像。

(2)用于时间序列的堆叠时间RBMs

(3)DBN中RBM的替换

目前,和DBNs有关的研究包括堆叠自动编码器,它是通过用堆叠自动编码器来替换传统DBNs里面的RBMs。

这就使得可以通过同样的规则来训练产生深度多层神经网络架构,但它缺少层的参数化的严格要求。与DBNs不同,自动编码器使用判别模型,这样这个结构就很难采样输入采样空间,这就使得网络更难捕捉它的内部表达。

但是,降噪自动编码器却能很好的避免这个问题,并且比传统的DBNs更优。它通过在训练过程添加随机的污染并堆叠产生场泛化性能。训练单一的降噪自动编码器的过程和RBMs训练生成模型的过程一样。

总结:

(1)注意RBM层间的双向全连接层内无连接,由此有概率独立性和并行计算的特点;

(2)熟悉单个RBM的训练算法流程,即对比散度算法;简单来说就是根据显层的初始值计算隐层,用隐层的样本重构显层,再用显层计算一遍隐层,将两遍计算隐层的结果结合起来,得到权值矩阵W;

(3)同时,重构后的显层也可以向下传播,被随机选择后去重构原始的输入信号(因为它既是本层的显层,也是下层的隐层)。上面这种反复过程称为吉布斯采样(Gibbs)

(3)了解DBN的训练过程,即逐层训练;简单来说就是训练好一个RBM,将这个隐层作为下一个RBM的显层,训练好第二个,如此循环,一直训练好整个网络;

(4)如果要做分类器使用的话,就在顶层的RBM显层加上分类概率神经元即可;

(5)了解一些DBN的拓展。

你可能感兴趣的:(神经网络,神经网络,深度学习,机器学习)