Costruisci un Autoencoder Deep Belief per la riduzione della dimensionalità

Aug 18 2020

Sto lavorando con un set di dati di grandi dimensioni (circa 50.000 osservazioni x 11.000 caratteristiche) e vorrei ridurre la dimensionalità. Questo verrà eventualmente utilizzato per la classificazione multi-classe, quindi mi piacerebbe estrarre le funzionalità utili per separare i dati. Finora, ho provato PCA (eseguito correttamente con una precisione complessiva in SVM lineare di circa il 70%), LDA (eseguito con una precisione di addestramento molto elevata di circa il 96% ma l'accuratezza del test era di circa il 61%) e un autoencoder (3 encoder ad alta densità con 13000 - 1000 - 136 unità, rispettivamente, che ha funzionato più o meno come PCA). Mi è stato chiesto di provare una rete di credenze profonde (stack di macchine Boltzmann limitate) in questo problema.

Finora, prevedo due sfide. Innanzitutto, ho accesso a una GPU che può essere utilizzata, ma non vedo molte implementazioni di DBN da parte dei principali attori nella comunità della rete neurale (ad esempio, TensorFlow / Keras, PyTorch), il che significa che questo dovrà essere implementato su una CPU, sollevando la sfida numero due. In secondo luogo, l'implementazione di ciò richiederà una memoria significativa e sarà piuttosto lenta. Questo solleva la mia domanda: ci sono implementazioni dell'autoencoder DBN in Python (o R) che sono affidabili e, in modo ottimale, utilizzano la GPU? In caso contrario, qual è il metodo preferito per costruire un DBN in Python? Dovrei usare sklearn?

Risposte

1 hH1sG0n3 Aug 18 2020 at 21:16

A differenza degli Autoencoder, le Macchine Botzmann (limitate o meno) non hanno un livello di output e quindi classificate come modelli generativi profondi.

C'è una varietà di implementazioni in Pytorch. Questo è compatibile con GPU (https://github.com/GabrielBianconi/pytorch-rbm) e in passato l'ho trovato particolarmente utile.

Gli RBM possono tornare molto utili in una varietà di attività come

  • Riduzione della dimensionalità
  • Filtraggio collaborativo per sistemi di raccomandazione
  • Apprendimento delle funzionalità e altro.

Questa è stata una lettura interessante nel caso volessi saperne di più sugli RBM. https://heartbeat.fritz.ai/guide-to-restricted-boltzmann-machines-using-pytorch-ee50d1ed21a8