我们都听说过深度学习,但是有多少人知道深度信念网络是什么?让我们从本章开始回答这个问题。深度信念网络是一种非常先进的机器学习形式,其意义正在迅速演变。作为一名机器学习开发人员,对这个概念有一定的了解是很重要的,这样当您遇到它或它遇到您时就会很熟悉它!
在机器学习中,深度信念网络在技术上是一个深度神经网络。我们应该指出,深度的含义,当涉及到深度学习或深度信念时,意味着网络是由多层(隐藏的单位)组成的。在深度信念网络中,这些连接在一层内的每个神经元之间,而不是在不同的层之间。一个深度信念网络可以被训练成无监督学习,以概率重建网络的输入。这些层就像“特征检测器”一样,可以识别或分类图像、字母等等。
在本章,我们将包括:
受限玻尔兹曼机
在c#中创建和培训一个深度信念网络
受限玻尔兹曼机
构建深度信念网络的一种流行方法是将其作为受限玻尔兹曼机(RBMs)的分层集合。这些RMBs的功能是作为自动编码器,每个隐藏层作为下一个可见层。深度信念网络将为训练前阶段提供多层RBMs,然后为微调阶段提供一个前馈网络。训练的第一步将是从可见单元中学习一层特性。下一步是从以前训练过的特性中获取激活,并使它们成为新的可见单元。然后我们重复这个过程,这样我们就可以在第二个隐藏层中学习更多的特性。然后对所有隐藏层继续执行该过程。
我们应该在这里提供两条信息。
首先,我们应该稍微解释一下什么是自动编码器。自动编码器是特征学习的核心。它们编码输入(输入通常是具有重要特征的压缩向量)和通过无监督重构的数据学习。
其次,我们应该注意到,将RBMs堆积在一个深度信念网络中只是解决这个问题的一种方法。将限制线性单元(ReLUs)叠加起来,再加上删除和训练,然后再加上反向传播,这又一次成为了最先进的技术。我再说一遍,因为30年前,监督方法是可行的。与其让算法查看所有数据并确定感兴趣的特征,有时候我们人类实际上可以更好地找到我们想要的特征。
我认为深度信念网络的两个最重要的特性如下:
l 有一个有效的,自上而下的逐层学习过程,生成权重。它决定了一个层中的变量如何依赖于它上面层中的变量。
l 当学习完成后,每一层变量的值都可以很容易地通过一个自底向上的单次遍历推断出来,该遍历从底层的一个观察到的数据向量开始,并使用生成权值逆向重构数据。
说到这里,我们现在来谈谈RBMs以及一般的玻尔兹曼机。
玻尔兹曼机是一个递归神经网络,具有二进制单元和单元之间的无向边。无向是指边(或链接)是双向的,它们没有指向任何特定的方向。
下面是一个带有无向边的无向图:
玻尔兹曼机是最早能够学习内部表征的神经网络之一,只要有足够的时间,它们就能解决难题。但是,它们不擅长伸缩,这就引出了我们的下一个主题,RBMs。
引入RBMs是为了解决玻尔兹曼机器无法伸缩的问题。它们有隐藏层,每个隐藏单元之间的连接受到限制,但不在这些单元之外,这有助于提高学习效率。更正式地说,我们必须深入研究一些图论来正确地解释这一点。
RBMs的神经元必须形成二分图,这是图论的一种更高级的形式;来自这两组单元(可见层和隐藏层)中的每一组的一对节点之间可能具有对称连接。任何组中的节点之间都不能有连接。二分图,有时称为生物图,是将一组图顶点分解为两个不相交的集合,使同一集合内没有两个顶点相邻。
这里有一个很好的例子,它将有助于可视化这个主题。
注意同一组内没有连接(左边是红色的,右边是黑色的),但两组之间有连接:
更正式地说,RBM是所谓的对称二分图。这是因为所有可见节点的输入都传递给所有隐藏节点。我们说对称是因为每个可见节点都与一个隐藏节点相关。
假设我们的RBM显示了猫和狗的图像,我们有两个输出节点,每个动物一个。在我们向前通过学习,我们的RBM问自己:“对于我看到的像素,我应该向猫或狗发送更强的权重信号吗?”在它想知道“作为一只狗,我应该看到哪个像素分布?”我的朋友们,这就是今天关于联合概率的课: 在给定A和给定X的情况下X的同时概率。在我们的例子中,这个联合概率表示为两层之间的权重,是RBMs的一个重要方面。