我想深入理解具有连续输入变量的受限玻尔兹曼机。我试图设计一个尽可能简单的示例,以便能够轻松追踪其行为。以下是我的示例。
输入数据是二维的。每个数据点来自两个对称的正态分布(标准差为0.03),它们的中心点间隔较大(15倍标准差)。受限玻尔兹曼机的隐藏层也是二维的。
我期望得到一个能够生成与训练数据相同均值的两个点云的受限玻尔兹曼机。我甚至认为,在添加一些稀疏性约束后,来自一个分布的数据的隐藏层将为(0,1),而来自另一个分布的数据的隐藏层将为(1,0)。
我自己编写了Matlab代码,并尝试了一些在线解决方案(如DeepMat:https://github.com/kyunghyuncho/deepmat),但无论我的步长多么小,受限玻尔兹曼机总是收敛到一个平凡的解,即预测的可见层等于整个数据的均值。我尝试增加隐藏层的维度,但这并没有实质性改变。我还尝试通过零均值和方差来标准化数据——没有变化。我还将标准差设为1而不是0.03,同时保持15倍标准差的间隔,仍然没有变化。
由于这个问题不仅存在于我的代码中,也存在于其他人的代码中,我认为我可能在根本上做错了什么,并且试图以不该使用的方式使用受限玻尔兹曼机。我希望能得到评论/建议,或者有人能重现我的问题。
回答:
查看这里,了解哪些可见变量上的概率密度函数可以用高斯-伯努利受限玻尔兹曼机表达。下图给出了一个说明,其中b是可见偏置,w1和w2是与隐藏单元相关的权重向量。
点击查看图片,因为我需要更多的声望才能直接发布…
你会看到,受限玻尔兹曼机模拟了一个具有2^H个分量的Gaussian混合模型,其中每个分量的均值是可见偏置和与隐藏单元子集相关联的权重向量的叠加。每个分量的权重与该子集中隐藏单元的偏置有关。
也就是说,你的问题是模拟两个高斯分布的混合,最好用只有一个隐藏单元的受限玻尔兹曼机来表示,其中可见偏置等于一个分量的均值,可见偏置与隐藏单元的权重向量之和等于第二个混合分量的均值。当你的受限玻尔兹曼机有两个隐藏单元时,情况会变得更加复杂,因为这种受限玻尔兹曼机模拟的是具有4个分量的Gaussian混合模型。
即使你的受限玻尔兹曼机只有一个隐藏单元,当使用对比散度等学习策略和初始化的权重和偏置不佳时,学习两个分量相距甚远的Gaussian混合模型也可能会失败。