我正在跟进我之前在RBMs上提出的问题。我看到很多描述它们的文献,但没有一个真正谈论回归(甚至没有使用标记数据进行分类)。我感觉它仅用于未标记的数据。是否有任何资源可用于处理回归?还是像在隐藏层之上再增加一层并上下运行CD算法一样简单?提前非常感谢。
回归的受限玻尔兹曼机?
您对未标记数据的看法是正确的。RBM 是生成模型,最常用作无监督学习器。
当用于构建深度信念网络时,最典型的过程是简单地一次训练每个新的 RBM,因为它们相互堆叠。所以对比分歧并没有像我认为你的意思那样上下波动。它一次只使用一个 RBM,使用前一个最顶层 RBM 的隐藏层作为新最顶层 RBM 的输入。毕竟,您可以将 RBM 权重堆栈视为标准前馈神经网络的初始权重,并使用您的标记数据和反向传播进行训练,或者做一些更奇特的事情,例如使用唤醒睡眠算法。请注意,直到最后一步,我们还没有使用任何标记数据,这是这些类型模型的好处之一。
另一方面,您可以通过多种方式使用 RBM 进行分类。
- 训练一个 RBM 或一堆 RBM。使用最顶层的隐藏层作为其他监督学习器的输入。
- 为每个类训练一个 RBM,并将未归一化的能量用作判别分类器的输入。
- 将 RBM 训练为 P(X, Y) 的联合密度模型。然后给定一些输入 x,只需选择最小化能量函数的类 y(归一化在这里不是问题,就像上面一样,因为常数 Z 对于所有类都是相同的)。
- 训练有区别的 RBM
我强烈建议您阅读 Geoff Hinton 的技术报告A Practical Guide to Training Restricted Boltzmann Machines。它更详细地讨论了其中几个问题,提供了宝贵的技巧,引用了许多相关论文,并可能有助于消除您可能遇到的任何其他困惑。
请看一下实现,http://code.google.com/p/matrbm/。它有一个分类人民币拟合功能值得考虑。如果您找到更好的 DBN 和 RMB 用于分类和回归的实现,也请告诉我。
我认为可以测试受限玻尔兹曼机 (RBM) 等神经网络的一种方法是将它们应用于新的数据集,或者更常见的是总数据集的子集,并查看它们的性能。您还可以使用交叉验证来测试模型。我使用了一个流行的开源机器学习 (ML) 软件工具包,该工具包易于安装和使用,它允许您使用模型的一些回归统计数据(http://www. cs.waikato.ac.nz/ml/weka/)。这可能会给你一个快速的分析,除了运行程序的基础知识之外,没有太多的干预,尽管如果很难格式化你的数据,这可能不值得(尽管你通常可以谷歌“csv to arff convert online”例如一步格式化)。