我的理解是,要在 RBM 中生成新数据,我需要传入真实数据。有没有办法在没有真实数据的情况下获取生成的数据?就像 VAE 和 GAN 如何从先验分布中采样潜在变量以生成数据一样。
如果是这样,对于像 MNIST 这样的标记数据集,我如何从特定类生成数据?我需要为每个数字训练 10 个不同的 RBM 模型吗?
我的理解是,要在 RBM 中生成新数据,我需要传入真实数据。有没有办法在没有真实数据的情况下获取生成的数据?就像 VAE 和 GAN 如何从先验分布中采样潜在变量以生成数据一样。
如果是这样,对于像 MNIST 这样的标记数据集,我如何从特定类生成数据?我需要为每个数字训练 10 个不同的 RBM 模型吗?
我的理解是,要在 RBM 中生成新数据,我需要传入真实数据。有没有办法在没有真实数据的情况下获取生成的数据?就像 VAE 和 GAN 如何从先验分布中采样潜在变量以生成数据一样。
是的当然。这实际上是在训练的消极阶段发生的过程。您正在从联合分布中进行抽样,因此让网络“梦想”它所接受的训练。我想这取决于您的实现,但我已经能够通过将输入初始化为零并运行吉布斯采样进行几次迭代来做到这一点。结果,正如我所解释的那样,我应该在可见节点中看到“看起来像数字的东西”,而不一定是数据集中的数字。
这是我喜欢的一个示例,在 MNIST 上进行了训练,并且在没有任何节点钳位的情况下进行了采样:
对于你的第二个问题:
如果是这样,对于像 MNIST 这样的标记数据集,我如何从特定类生成数据?我需要为每个数字训练 10 个不同的 RBM 模型吗?
使用标记数据时,您可以做的是将您的标签用作额外的可见节点。检查“训练受限玻尔兹曼机:简介”图 2。
此外,对于这两种情况,我认为使用其他逐渐降低采样温度的采样技术(例如模拟退火)会给您带来更好的结果。