关于受限玻尔兹曼机(RBM)的基本混淆

机器算法验证 神经网络 受限玻尔兹曼机
2022-04-09 10:24:07

据我了解,标准受限玻尔兹曼机(RBM)表现出二进制随机可见和隐藏单元。二进制和可见单位的联合概率由统计物理学中熟悉的玻尔兹曼因子给出:

P(v,h)=eE(v,h)Z
其中能量和配分函数由下式给出
E(v,h)=(aivi+bjhj+viWijhj)
Z=configurationseE(v,h)

一个特定的配置由两组二进制向量组成,(v,h),然后所有配置的总和对应于所有可能的此类对的总和。

还有另一种类型的 RBM,称为高斯 RBM,它使用连续单位,因此(v,h)是真正有价值的。显然现在必须修改配置的总和。

现在考虑 MNIST 数据集,其中可见单元对应于从 0 到 255 的整数值像素值。事实上,这些可见单元不适用于任何 RBM 算法。一种解决方案是将 256 值离散向量扩展为更大的二进制向量,然后使用第一个 RBM。另一种解决方案是将像素除以 255,以便它们位于单位间隔内。然后可以将它们视为真实的,并应用高斯 RBM。

我的困惑是我发现了一些案例,例如

http://www.pyimagesearch.com/2014/06/23/applying-deep-learning-rbm-mnist-using-python/ https://gist.github.com/dwf/359323

其中数据被重新缩​​放以位于 [0,1] 范围内,并且 RBM 被视为具有随机二进制单位。有人可以向我解释为什么这是可以接受的吗?

3个回答

看看部分13.2Hinton 的 RBM 训练指南,在方程17或 Salakhutdinov 的 Learning Deep Generative Models 部分中类似且更好的描述2.2.

http://www.cs.toronto.edu/~hinton/absps/guideTR.pdf http://www.cs.cmu.edu/~rsalakhu/papers/annrev.pdf

高斯 RBM 假设您在区间 0-1 之间有实值可见单位(与归一化 MNIST 一样)和一些方差σ2. 实际上,您必须推断σ2,但出于所有目的,这是在训练模型之前选择的,在某些情况下,方差为 0.01。

您提到的教程使用 scikit 学习包 BernoulliRBM,它固有地接受浮点数作为输入并将方差设置为 0.01(参见fitgithub上的函数)。所以他们所做的事情是允许的,可以,但它是在幕后完成的:)希望这会有所帮助!

帕特里克

是的,实数有一些简单的扩展,但在 0 和 1 之间缩放数据是一种简单的技巧(比如概率)。然后你可以学习使用二进制随机单位。

在 0 和 1 之间缩放数据是加快学习速度的众多预数据过滤技巧之一——最终目标。将像素白化为灰度也很常见。您可以将灰度转换为 0 到 1 的值而不会丢失信息。

根据定义,具有二进制可见单元的 RBM 只能对二进制观测值进行建模。因此,对于具有 [0, 255] 中整数像素值的 MNIST,可以进行某种阈值处理来对输入进行二值化。或者,就像您建议的那样,将像素值重新缩放为实数并使用高斯可见单位对其进行建模。另一种选择是将 [0,1] 中的像素值视为二进制事件的概率,并使用 Hinton (2006) 中的二项式单位(深度信念网络的快速学习算法)。

pyimagesearch 帖子的作者实际上在评论中澄清了这一点:

我想你可能对我原来的评论感到困惑。如果假设 MNIST 数字已经被阈值化,那么我们有两个像素值:255(白色,前景)和 0(黑色,背景)。如果将所有像素值除以 255,则它们都在 [0, 1] 范围内。