为降维构建深度信念自动编码器

数据挖掘 深度学习 特征提取 RBM
2022-03-10 14:56:36

我正在处理一个大型数据集(大约 50K 观察 x 11K 特征),我想降低维度。这最终将用于多类分类,所以我想提取对分离数据有用的特征。到目前为止,我已经尝试过 PCA(在线性 SVM 中表现良好,总体准确率约为 70%)、LDA(以约 96% 的非常高的训练准确率执行,但测试准确率约为 61%)和自动编码器(3层密集编码器,分别具有 13000 - 1000 - 136 个单元,其性能与 PCA 大致相同)。我被要求在这个问题中尝试深度信念网络(受限玻尔兹曼机堆栈)。

到目前为止,我预见到两个挑战。首先,我可以使用可以使用的 GPU,但我没有看到神经网络社区的主要参与者(例如 TensorFlow/Keras、PyTorch)对 DBN 的许多实现,这意味着这需要在 CPU 上实现,提出了第二个挑战。其次,实现这一点需要大量内存并且速度会非常慢。这提出了我的问题:在 Python(或 R)中是否有任何 DBN 自动编码器的实现是可信的,并且最好是利用 GPU?如果不是,在 Python 中构建 DBN 的首选方法是什么?我应该使用sklearn吗?

1个回答

与自动编码器不同,Botzmann Machines(受限或不受限)没有输出层,因此被归类为深度生成模型。

Pytorch 中有多种实现方式。这个是 GPU 兼容的(https://github.com/GabrielBianconi/pytorch-rbm),我发现它在过去特别有用。

RBM 可以在各种任务中派上用场,例如

  • 降维
  • 推荐系统的协同过滤
  • 特征学习等。

如果您想了解有关 RBM 的更多信息,这是一本有趣的读物。https://heartbeat.fritz.ai/guide-to-restricted-boltzmann-machines-using-pytorch-ee50d1ed21a8