问题标签 [rbm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
746 浏览

machine-learning - RBM for collaborative filtering

My algorithm RBM for collaborative filtering will not converge... The idea of what I think RBM for collaborative filtering is

  1. initial w , b , c and random at [0,1]

  2. For By User clamp data -> visible (softmax)

    Hidden = sigmoid(b+W*V)

    Run Gibbs on Hidden -> Hidden_gibbs

    Positive = Hidden*Visible

    Hidden -> reconstruct -> reconstruct_visible

    Run Gibbs on reconstruct_visible -> reconstruct_visible_gibbs

    negative = Hidden_gibbs*reconstruct_visible_gibbs

    End for

  3. Update

    w = w + (positive-negative)/Number_User

    b = b + (visible - reconstruct_visible_gibbs)/Number_User

    c = c + (Hidden - Hidden_gibbs)/Number_User

I have seen lots of paper or lecture, and have no idea where is wrong

0 投票
0 回答
244 浏览

machine-learning - 如何检查或验证 RBM(受限玻尔兹曼机)模型?

我正在尝试实现 RBM,然后我用打网球盒来测试 rbm。

我之前尝试过自动编码器,结果很好。实际上,我对 RBM 它本身的功能感到困惑,我认为它就像自动编码器一样,对输入(每个实例)进行编码以进行特征提取,然后我们可以测试或验证模型(网络)以尝试编码和解码一些实例。

但我面临的问题是 RBM 中某些功能的结果,这似乎很奇怪。

例如 gibbs 采样的结果,采样数据的结果与实际数据非常接近。效果是来自采样数据的 h(x) 的结果,并且实际数据足够接近。

因此,当我尝试将隐藏层中的所有单元解码结果与实际值进行比较时,结果很糟糕,每个特征(单元)的结果几乎相同,大约为 0.4 到 0.5。

然后 f(x) = 1/m*sigma(log(p(x))) 丢失的功能它本身只是大约 0.07142857142857142,它永远不会改变(变化大约是 0.00000000000000001 或 0.00000000000000002)。

我对每个特征都使用了 continue 值,使用标准归一化,因此输入范围值为 0 到 1。

有人有建议吗?

*对不起我的英语不好:D

0 投票
1 回答
417 浏览

machine-learning - 如何训练像 RBM 这样的无监督神经网络?

这个过程正确吗?

假设我们有一堆数据,比如 MNIST。

我们只是将所有这些数据(没有标签)提供给 RBM,并从训练好的模型中重新采样每个数据。

然后输出可以作为新的数据进行分类。

我理解正确吗?使用 RBM 的目的是什么?

0 投票
1 回答
1166 浏览

deep-learning - 受限玻尔兹曼机 (RBM):将二进制单位更改为高斯或 relu 单位

我已经在 R 中编写了一个带有二进制隐藏/可见单元的 RBM 的工作实现。我一直在寻找一段时间,但无法弄清楚如何将二进制单元更改为高斯或 ReLU。

如果我希望我的输入数据是真实值,我会改变可见单位和隐藏单位吗?还是只是可见单位?

可以说我想改变两者。目前,我正在使用逻辑 sigmoid 函数 (1/(1+e^(-x))) 计算隐藏/可见概率。ReLU 使用 max(0, x + N(0,1))。据我目前了解,我将使用 ReLU max 函数切换所有出现的逻辑 sigmoid 函数。但是,这不会产生有意义的结果。所以我不确定我实际上应该改变什么。

0 投票
1 回答
2865 浏览

python - Scikit-learn 中的受限玻尔兹曼机:虹膜分类

我正在研究在 Iris 数据集上应用受限玻尔兹曼机的示例。本质上,我试图在人民币和LDA之间进行比较。LDA 似乎产生了合理的正确输出结果,但 RBM 不是。根据建议,我使用 skeern.preprocessing.Binarizer 对特征输入进行二值化,并尝试了不同的阈值参数值。我尝试了几种不同的方法来应用二值化,但似乎没有一个对我有用。

下面是我根据这个用户的版本User: covariance修改的代码版本。

非常感谢任何有用的评论。

0 投票
1 回答
262 浏览

java - 对于 deeplearning4j 单 RBM 使用需要一些帮助

我有一堆传感器,我真的只想重建输入。

所以我想要的是这样的:

  1. 在我训练完我的模型后,我将传入我的特征矩阵
  2. 取回重建的特征矩阵
  3. 我想调查哪些传感器值与重建值完全不同

因此,我认为 RBM 将是正确的选择,并且由于我习惯了 Java,因此我尝试使用 deeplearning4j。但是我很早就被卡住了。如果您运行以下代码,我将面临 2 个问题。

  1. 结果与正确的预测相差甚远,其中大多数只是[1.00,1.00,1.00]。

  2. 我希望得到 4 个值(这是预期要重建的输入数)

那么我必须调整什么来获得a)更好的结果和b)恢复重建的输入?

0 投票
1 回答
1259 浏览

python - 如何在机器学习中训练连续输出(回归)

我想训练输出是连续数字的回归模型(不是分类)。

假设我有输入变量 X,范围在 -70 到 70 之间。我有输出变量 Y,范围在 -5 到 5 之间。X 有 39 个特征,Y 有 16 个特征,每个特征有 50,000 个示例。然后我想用python中的深度信念网络(DBN)训练他们。

我在 theano 主页中使用了用 MNIST 数据(分类)描述 DBN 的脚本。http://deeplearning.net/tutorial/DBN.html

你能告诉我为了应用我上面解释的回归问题我必须改变哪些具体的行吗?

例如,我必须改变...

  1. sigmoid 函数到 tanh 函数。: 我听说 tanh 激活函数在回归中比 sigmoid 效果更好。正确的?
  2. 而不是使用负对数似然,我必须使用最小二乘误差......?
  3. zscore的输入和输出数据归一化?

如果您有任何解决此问题的想法,请告诉我......大多数机器学习示例都是基于 MNIST 手数分类。如果您向我推荐一些不错的博客或主页,我会很高兴,在那里我可以获得与回归相关的有用信息。

谢谢你提前。

0 投票
0 回答
212 浏览

machine-learning - 如何使用二进制 RBM 与 tanh 进行深度学习

我知道如果我们在 RBM 中处理整流器、连续输入等,我们需要使用二进制以外的不同类型的隐藏单元。现在假设 RBM 被用作监督深度学习的起点,那么 tanh 激活呢?我们可以拟合二元 sigmoid RBM 并使用训练的权重作为 tanh 激活函数神经网络的起点吗?本质上,tanh 是二进制 RBM 中重新缩放的 sigm,我想它是可行的吗?如果是这样,具体如何?

谢谢

0 投票
1 回答
136 浏览

machine-learning - 连续输入的受限玻尔兹曼机

RBM 有一个实现。原始RBM实现是针对图像等离散数据的,我的数据是二进制数据,代码也适用于真实数据吗?我在某处读到有一个典型 RBM 的 gaussin 版本适用于此,它是否也在该模块中实现?

0 投票
0 回答
2212 浏览

theano - 带有张量流的 RBM/DBN 的自定义操作实现?

自从 Google 发布了 tensorflow 之后,它就成为了当前深度学习选择的一种趋势。

我想做一些关于 RBM/DBN(受限玻尔兹曼机/深度信念网络)的实验,我自己做了一些尝试,并通过 tensorflow 中可用 API 的组合很好地实现了它。请参阅代码先前的答案

所以,如果不影响代码运行性能,这里是使用 tensorflow 实现 RBM/DBN 的礼物。

但是,必须考虑未来的运行性能。由于CD(Contrastive Divergence)算法的特殊进步,我认为它只是针对tensorflow使用的框架(数据流图)。这就是为什么我的代码看起来很奇怪。

因此,应该实现自定义操作以进行加速。我遵循了有关添加自定义操作的当前文档。

在我的设计中,NaiveRbm应该是一个将visible, weights, h_bias,v_bias作为输入的操作,但只输出3 个Variables(简单的 sigmoid(X*W+hb) ),它的梯度应该至少返回最后3 个的梯度Variables

想象一下这样的示例伪代码:

但是tensorflow库对我来说太复杂了。并且经过太多时间寻找如何在自定义操作中实现这些现有操作(sigmoid, matmul, ma_add, relu, random_uniform),我自己没有找到解决方案。

所以,我想问问是否有人可以帮助我完成剩下的工作。

PS:在得到一些想法之前,我想深入研究一下,Theano因为它已经实现了 RBM/DBN。只是在我看来,Caffe由于它的框架,它有点不适合 RBM/DBN。

更新:通过 Theano 的教程从头开始,我发现 Theano 实现 RBM/DBN 而 tensorflow 没有实现的关键原因是scan技术。因此,可能会等待 tensorflow 实施scan技术,为 RBM/DBN 实施做准备。