我正在尝试实现自己的RBM,但我不确定如何100%正确地测量它的成功。因此,我开始在网上搜索,发现了许多解释,我不确定哪个是正确的。
我面临这个问题:
我有一个数据集Z,我可以将其分为训练集X和测试集Y。我在X上训练RBM,然后我想在数据集Y上测量RBM的成功。更具体地说,假设我有两个RBM,我想以某种方式比较它们。我不确定重建输入向量是否是一个好的测量方法。或者我是否应该比较RBM的能量。(以及如何正确计算整个集合Y的能量)。
如果可能的话,我对高斯可见单元和全高斯单元也感兴趣。
回答:
RBM是一种无监督学习范式,因此很难判断哪个更好。
尽管如此,它们通常被用作最近和更令人兴奋的网络(如DBN)的预训练。因此,我的建议是训练你想要比较的尽可能多的RBM(无监督学习),然后将它们交给前馈层进行学习(有监督学习)。从这里开始,你现在可以通过测量你的网络预测数据类别的效果来评估你的RBM的表现。
举个例子,假设有两个RBM(A和B):
-
你将A交给前馈层(用反向传播训练),测试数据的准确率达到80%;
-
你将B交给前馈层(用反向传播训练),测试数据的准确率达到90%;
因此,B比A是一个更好的RBM,因为它提供了更好的特征,导致更好的训练和更高的样本外结果。注意:由于网络的准确性会有所不同,请确保多次进行有监督训练,并在最后进行平均,这样你的比较才具有鲁棒性。
编辑:
关于非监督评估,任务并不那么简单。正如Tijmen Tieleman在“使用似然梯度近似训练受限玻尔兹曼机”中所展示的:
其中一种评估方法是学习的RBM对测试数据的建模效果,即对数似然。对于常规大小的RBM来说,这是不可行的,因为该计算的时间复杂度是可见层或隐藏层中最小层大小的指数级。
然而,如果你的RBM足够小,这是一种可能的方法。否则,你只能等待…