了解对比分歧

数据挖掘 机器学习 Python 神经网络 无监督学习 RBM
2022-03-03 22:36:33

我试图理解并最终构建一个受限玻尔兹曼机。我理解更新规则——即用于改变权重的算法——被称为“对比散度”。在 Wikipedia 上查找了此内容,并找到了以下步骤:

  1. 取一个训练样本 v,计算隐藏单元的概率,并从该概率分布中采样一个隐藏激活向量 h。
  2. 计算 v 和 h 的外积并将其称为正梯度。
  3. 从 h 中采样可见单元的重建 v',然后从中重新采样隐藏的激活 h'。(吉布斯抽样步骤)
  4. 计算 v' 和 h' 的外积并将其称为负梯度。
  5. ...

我不明白第 3 步,我正在努力掌握吉布斯抽样的概念。有人会简单地向我解释一下吗?如果对您有帮助,我已经介绍了神经网络。

1个回答

吉布斯采样是更通用的马尔可夫链蒙特卡罗方法从高维空间中的分布中采样的示例。

为了解释这一点,我首先要介绍术语状态空间回想一下,玻尔兹曼机是由二进制单元构成的,即每个单元都可以处于两种状态之一——比如 0 和 1。然后,网络的整体状态由每个单元的状态指定,即网络的状态可以描述为空间中的点{0,1}N,其中 N 是网络中的单元数。这个点称为状态空间

现在,在那个状态空间上,我们可以定义一个概率分布细节并不那么重要,但您实际上要做的是为每个状态定义能量,并使用玻尔兹曼分布将其转换为概率分布因此,将有可能的状态和不太可能的其他状态。

Gibbs 采样器现在是一个产生样本的程序,即一个序列Xn状态,粗略地说,这些状态在状态空间中的分布反映了概率分布。因此,您想要大部分Xn处于状态空间中具有高概率(和低能量)的区域,并且很少有处于低概率(和高能量)的区域。

为此,一个朴素的吉布斯抽样方法将按如下方式进行。你从一些状态开始X0. 找到状态X1,您将选择某个单位并根据所有其他单位的当前值计算该单位处于状态 1(“开启”)的条件概率拨打这个号码 p。然后,您将以概率 p 将单位设置为 1 并选择下一个单位以重复此操作以从中获取X1X2等等。

在受限玻尔兹曼机的特殊情况下,这可以大大简化。不是先遍历所有隐藏单元,然后遍历所有可见单元,然后像这样逐个更新它们,实际上,您可以一步更新所有隐藏单元,一步更新所有可见单元,因为任何两个隐藏单元单位和任何两个可见单位都是独立的。因此,对于通过状态空间的所有单元的完整循环,您将:

  • 给定可见单元的值,计算所有隐藏单元为 1 的概率
  • 以这个概率将隐藏单元设置为 1
  • 计算可见单元为 1 的概率,同样取决于隐藏单元的值,以及
  • 以这个概率将可见单位设置为 1

这构成了一个完整的吉布斯采样步骤,是您的步骤 1 + 3 的第一部分(然后需要第二部分进行进一步计算,而不是采样的一部分)。我们在 CD 算法中这样做的原因是我们实际上想要近似一个期望值并为此使用采样器。

这是一个复杂的话题,很难用几句话概括。如果你想了解更多关于这背后的数学(马尔可夫链)和 RBM 的应用(对比散度和持久对比散度),你可能会发现这个这个文档很有帮助 - 这些是我在学习时整理的一些笔记这。