我正在努力理解,并最终建立了一台受限的玻尔兹曼机器。我理解更新规则--也就是用来改变权重的算法--是一种叫做“对比发散”的方法。我在维基百科上查了一下这,发现了以下步骤:
我不明白第三步,我很难理解吉布斯抽样的概念。有人能简单地向我解释一下吗?我已经报道过神经网络,如果这对你有帮助的话。
发布于 2018-04-11 20:50:54
Gibbs抽样是比较一般的马尔可夫链蒙特卡罗方法在高维空间中从分布中抽样的一个例子。
为了解释这一点,我首先要介绍状态空间这个术语。回想一下,一台Boltzmann机器是由二进制单元构成的,即每个单元都可以处于两种状态之一--比如0和1。然后,网络的总体状态由每个单元的状态指定,即网络的状态可以描述为空间\{0,1\}^N中的点,其中N是网络中的单元数。这一点被称为状态空间。
现在,在这个状态空间上,我们可以定义一个概率分布。细节并不是那么重要,但本质上,你定义了每个状态的能量,然后用玻尔兹曼分布将能量转化为概率分布。因此,会有可能发生的州和不太可能发生的其他州。
吉布斯取样器现在是一种产生样本的过程,即状态的序列X_n,粗略地说,这些状态在状态空间中的分布反映了概率分布。因此,您希望大多数X_n位于高概率(和低能量)状态空间的区域,而很少有在低概率(和高能量)的区域中。
要做到这一点,一个天真的吉布斯抽样方法将进行如下。从一些状态X_0开始。要找到状态X_1,您可以选择某个单元并计算该单元处于状态1 (" on ")的条件概率,该状态取决于所有其他单元的当前值。调用这个数字p,然后用概率p将这个单元设置为1,然后选择下一个单元来重复这个,从X_1到X_2等等。
在限制Boltzmann机器的特殊情况下,这可以大大简化。而不是先通过所有隐藏单元,然后所有可见单元,然后像这样一个一个地更新它们,实际上,你可以一步更新所有隐藏单元,一步更新所有可见单元,因为任何两个隐藏单元和任何两个可见单元都是独立的。因此,对于状态空间的所有单元进行一个完整的循环,您可以:
这是一个完整的Gibbs抽样步骤,是步骤1+3的第一部分(然后需要第二部分进行进一步的计算,而不是取样的一部分)。我们在CD算法中这样做的原因是,我们实际上想要近似一个期望值,并为此使用一个取样器。
这是一个复杂的话题,很难用几句话来概括。如果您想了解更多关于这个(马尔可夫链)背后的数学以及RBMs的应用(对比散度和持续对比发散),您可能会发现这和这文档很有帮助--这是我在学习这方面时所做的一些说明。
https://datascience.stackexchange.com/questions/30186
复制相似问题