我有一个训练集,我将它(考虑来自训练集的数据)提供给可见层。然后遵循正常的过程,即正阶段->负阶段->权重重构,发生偏差单元。它会在这里结束还是我必须再次使用当前的可见单位值进行迭代(该过程遵循几个固定的迭代)?因为在任何地方都没有正确说明是否针对训练集的每个数据,它必须一次又一次地迭代或针对训练集的每个数据。
# 受限玻尔兹曼机 (RBM) 中的迭代次数
数据挖掘
机器学习
神经网络
深度学习
无监督学习
RBM
2022-03-01 17:54:28
1个回答
当您不确定应该如何真正实现某些东西(例如 RBM)时,查看其他人的代码通常很有用。G. Hinton 自己发布了一个 MATLAB 脚本(此处),它演示了 RBM 的训练。在那里,您可以看到对于每个小批量,他执行正阶段,然后是负阶段,最后更新权重 - 就是这样。所以他不会在可见状态和隐藏状态之间迭代。
然而,这并不是全部真相:对于权重更新,我们需要知道概率. 这计算起来非常复杂,因为它将包含 RBM 所有可能状态的总和。有一个叫做 Gibbs 采样的“数学技巧”:它允许我们在可见和隐藏单元之间来回迭代来计算这个概率.
但是:为了使结果正确,我们必须永远迭代,这并不实际。所以 Hinton 提议的是只迭代 1 步(这是),所以他只来回一次。
但是,您也可以迭代任意次数,表示为. 而对于 Hinton 的,你会做
visible --> hidden --> visible
为一个,您将从可见到隐藏再返回三次:
visible --> hidden --> visible --> hidden --> visible --> hidden --> visible
并且要明确一点:您对训练集中的每个数据点运行此迭代。实际上,您通常会同时运行大约 10 个数据点的所谓小批量。然后你计算这个批次的平均重量更新。但是,你会一次又一次地重复这个迭代,直到你完成训练。
其它你可能感兴趣的问题