受限玻尔兹曼机(RBM)背后的直觉


15

我在Coursera上完成了Geoff Hinton的神经网络课程,并通过介绍受限的Botzmann机器进行了学习,但我仍然不理解RBM背后的直觉。

为什么我们需要在这台机器上计算能量?在这台机器中,概率有什么用?我也看了这段视频。在视频中,他只是在计算步骤之前就写了概率和能量方程,而且似乎没有在任何地方使用它。

除此之外,我不确定似然函数的作用是什么?


我试图解决这个问题,但是我认为它需要更多的工作。你需要解释你什么不懂,更具体地说,你在哪里卡住了,否则这个问题过于宽泛。
尼尔·斯莱特

唯一进入头脑的是三个步骤,首先是正阶段,然后是负阶段,然后是权重的重建。但是,能量和概率函数呢?这里有什么用?以及我们必须执行多少次程序(正相->负相>权重重构)?
Born2Code

Answers:


5

RBM是有趣的野兽。为了回答您的问题,并在这些问题上留下我的记忆,我将推导RBM并讨论推导过程。您提到您对可能性感到困惑,因此我的推论是从尝试使可能性最大化的角度出发。因此,让我们开始吧。

RBM包含两组不同的神经元,可见的和隐藏的,我分别将它们表示为vH。给定v的特定配置H,我们将其映射为概率空间。

pvH=Ë-ËvHž

还有两件事需要定义。我们用来从特定配置映射到概率空间的替代函数称为能量函数。该ž不变的是确保我们实际上映射到概率空间归一化因子。现在,让我们了解我们真正要寻找的东西。一组可见神经元的概率,换句话说就是我们数据的概率。 ž = Σ v V Σ ħ ħ ë - ë v ħ p v ËvHž

ž=vVHHË-ËvH
pv=HHpvH=HHË-ËvHvVHHË-ËvH

尽管此等式中有很多术语,但可以归结为编写正确的概率等式。但愿,到目前为止,这有助于你明白为什么我们需要能量函数来计算概率,或更有甚者通常,非标准化的概率进行。使用未归一化的概率是因为分区函数Z的计算非常昂贵。pvžž

现在让我们进入RBM的实际学习阶段。为了使似然性最大化,对于每个数据点,我们都必须采取梯度步骤使。为了获得梯度表达式,需要一些数学技巧。我们要做的第一件事是取p v )的对数。从现在开始,我们将在对数概率空间中进行运算,以使数学可行。pv=1pv

让我们以梯度相对于 p v )中的参数

log(p(v))=log[hHeE(v,h)]log[vVhHeE(v,h)]
p(v)

log(p(v))θ=1hHeE(v,h)hHeE(v,h)E(v,h)θ+1vVhHeE(v,h)vVhHeE(v,h)E(v,h)θ

现在,我在纸上进行了此操作,并将半决赛方程式写下来,以免浪费该站点上的大量空间。我建议您自己导出这些方程式。现在,我将写下一些方程式,这将有助于继续进行推导。需要注意的是:p v = Σ ħ ħ p v ħ p ħ | v =Zp(v,h)=eE(v,h)p(v)=hHp(v,h)p(h|v)=p(v,h)p(h)

log(p(v))θ=1p(v)hHp(v,h)E(v,h)θ+vVhHp(v,h)E(v,h)θlog(p(v))θ=hHp(h|v)E(v,h)θ+vVhHp(v,h)E(v,h)θ

然后,我们就得出了RBM的最大似然估计,如果您希望可以通过对它们各自的条件(条件和联合概率)的期望来写出最后两个条件。

关于神经元的能量功能和随机性的注释。

正如您在上面的推导中看到的那样,我对能量函数的定义相当模糊。这样做的原因是,许多不同版本的RBM实现了各种能源功能。在上面的链接中,欣顿在上面的演讲中描述的那个由@ Laurens-Meeus表示的是:

E(v,H=-一种Ťv-bŤH-vŤw ^H

通过期望形式可能更容易推断出上面的梯度项。

日志pvθ=-ËpH|vËvHθ+ËpvHËvHθ

第一项的期望实际上很容易计算,这就是RBM背后的天才。通过限制连接,有条件的期望简单地变成了RBM的向前传播,可见单元被夹紧。这就是玻尔兹曼机器中所谓的唤醒阶段。现在计算第二项要困难得多,通常使用蒙特卡洛方法。通过蒙特卡洛游程的平均值编写梯度:

日志pvθ-ËvHθpH|v+ËvHθpvH

如上所述,计算第一项并不难,因此,在第二项上进行蒙特卡洛计算。蒙特卡洛方法使用分布的随机连续抽样来计算期望值(总和或积分)。现在,将经典RBM中的这种随机采样定义为随机地根据其概率将一个单位设置为0或1,换句话说,如果它小于神经元概率,则获得一个随机统一数,如果将其设置为1,大于将其设置为0。


我们如何也使隐藏层二进制化?Bcoz激活函数操作之后,我们将0和1之间得到的范围内的值
Born2Code

这通常是通过激活阈值来完成的。高于0.5的任何东西将变为1,低于0.5的任何东西将变为零。
Armen Aghajanyan

但是在此链接的第3.1节中:Hinton声明“如果该概率大于0和1之间均匀分布的随机数,则隐藏单元将打开”。这到底是什么意思?并且在此链接中,他们说:“那么,如果在选择0到1之间的s均匀分布随机数时发现第一个单位小于sig [j],那么第j个单位就打开了。否则,它就关闭了。” 我没听懂
Born2Code

?????? 怎么说该特定单元是打开还是关闭?
Born2Code

我添加了一个编辑。我建议阅读蒙特卡洛方法,因为该算法的随机性是从那里得出的。
Armen Aghajanyan

5

除了现有的答案外,我还要谈谈这个能量函数,以及其背后的直觉。很抱歉,如果这太长且太物理了。

能量函数描述了所谓的Ising模型,它是根据统计力学/量子力学来描述的铁磁性模型。在统计力学中,我们使用所谓的哈密顿算子来描述量子力学系统的能量。并且系统总是试图以最低的能量进入状态。

σķH一世ĴĴ一世Ĵ

H^=一世ĴĴ一世Ĵσ一世σĴ-μĴHĴσĴ
H^σ1=+1σ2=-1Ťp一世一世Ë一世
p一世=经验值-Ë一世/ķŤ一世经验值-Ë一世/ķŤ

RBM与这种铁磁性量子力学模型有什么关系?

我们需要使用最终的物理量:熵。从热力学我们知道,系统将以最小的能量稳定在状态中,这也对应于最大熵的状态。

HXX

HX=-一世PX一世日志PX一世
XH

最后,这是我们回到RBM的地方:基本上,我们希望该RBM编码尽可能多的信息。因此,由于我们必须最大化 RBM系统中的(信息论)熵。正如Hopfield在1982年提出的那样,我们可以像物理熵一样最大化信息理论的熵:通过像上面的Ising模型那样对RBM建模,并使用相同的方法来最小化能量。这就是为什么我们在RBM中需要这种奇怪的能量函数!

Armen Aghajanyan答案中的数学推导很好地显示了我们需要做的一切,以最大程度地减少能量,从而使熵最大化,并在我们的RBM中存储/保存尽可能多的信息。

PS:亲爱的物理学家,请原谅这位工程师推导过程中的任何不准确之处。随时发表评论或修正错误(甚至是错误)。


我看了这段视频,从那点开始观看视频。您如何获得该抽样号码?我们是否刚刚在matlab中运行rand()并获得了它?然后每个h(i)都会不同。哦,不!我认为机器无法正常学习。
Born2Code

@ Born2Code这是另一个问题。您可以将它作为新问题发布到此网站吗?请尝试将您正在讨论的方程式添加到新问题中,并说明您不了解的部分。
hbaderts 2016年


0

@Armen的答案给了我很多见识。但是,尚未回答一个问题。

vvH

ËvH=-一种Ťv-bŤH-vŤw ^H

一种bw ^


我们如何也使隐藏层二进制化?Bcoz激活函数操作之后,我们将0和1之间得到的范围内的值
Born2Code

Hvh_bin = (rand() < h_val) ? 1 : 0

@NeilSlater:但是为什么是随机数?另外,是否应该为每个迭代生成随机数,还是为所有迭代使用相同的数字?一个更严重的疑问,必须执行多少次迭代?我有一个训练集V,它只有一个向量,即v1。使用v1,我应该迭代几次?
Born2Code

@NeilSlater:另一个疑问是,是否要将同一个随机数与隐藏层的所有值进行比较?我知道这是一个白痴问题,但仍然
Born2Code

1
这是一个随机数,因为这是将概率解析为二进制值的方式。它是用于每个神经元内的不同数量hv-你是采样为二进制值的向量hv,以便产生一个例子,该网络“相信”存在-即具有作为代表的高统计机会的示例训练集。在训练过程中,您要确定它与现有训练示例的匹配程度,并相应地调整权重。
尼尔·斯莱特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.