Gaussian-RBM失败了一个简单的例子

时间:2014-09-03 10:02:09

标签: matlab machine-learning artificial-intelligence deep-learning rbm

我希望对具有连续输入变量的受限玻尔兹曼机器有一个细致的理解。我正在尝试设计最简单的可能示例,以便可以轻松跟踪行为。所以,就是这样。

输入数据是二维的。每个数据点都是从两个对称正态分布(sigma = 0.03)中的一个中抽取出来的,其中心间隔很好(西格玛的15倍)。 RBM具有二维隐藏层。

我希望获得一个RBM,它会产生两个点云,其方式与我的列车数据相同。我甚至认为在添加一些稀疏性约束之后,我将隐藏层等于(0,1)用于从一个分布中提取的数据,而(1,0)用于另一个分布。

我自己编写了matlab代码并尝试了一些在线解决方案(例如DeepMat:https://github.com/kyunghyuncho/deepmat),但无论我的步长多小,RBM都会收敛到一个简单的解决方案,其中预测的可见层是相等的到整个数据的平均值。我尝试增加隐藏层的维度,但它并没有实质性地改变任何东西。我还尝试通过零均值和方差对数据进行标准化 - 没有变化。我也有sigma = 1而不是0.03,同时保持15 * sigma的传播,再没有变化。

由于这个问题不仅存在于我的代码中,而且存在于其他代码中,我认为我可能会做一些根本错误的事情,并试图以不应该使用的方式使用RBM。我希望得到意见/建议,或者如果有人可以重现我的问题。

1 个答案:

答案 0 :(得分:6)

查看here,了解可见变量的概率密度函数可以用Gaussian-Bernoulli RBM表示。下图给出了一个例子,其中b是可见偏差,w1和w2是与隐藏单位相关的权重向量。

Click图片,因为我需要更多声望直接发布...

您会看到RBM模拟具有2 ^ H分量的高斯混合模型,其中每个分量的平均值是可见偏差的叠加和与隐藏单位的子集相关联的权重向量。每个组件的权重与该子集中隐藏单元的偏差有关。

也就是说,你可以用一个只有一个隐藏单元的RBM来最好地表示你对两个高斯混合的建模问题,其中可见偏差等于一个分量的平均值和可见偏差的总和与重量矢量之和隐藏单位等于第二混合成分的平均值。当您的RBM有两个隐藏单位时,事情变得更加复杂,因为此RBM模拟了具有4个分量的高斯混合。

即使您的RBM只有一个隐藏单元,当使用学习策略(如对比差异和不良初始化权重和偏差)时,学习两个组件相距很远的高斯混合可能会失败。