Macchine Boltzmann limitate contro reti neurali multistrato


22

Volevo sperimentare una rete neurale per un problema di classificazione che sto affrontando. Mi sono imbattuto in documenti che parlano di RBM. Ma da quello che posso capire, non sono diversi dall'avere una rete neurale multistrato. È preciso?

Inoltre lavoro con R e non vedo alcun pacchetto fisso per RBM. Mi sono imbattuto in letteratura che parla di reti di deep learning che sono sostanzialmente RBM sovrapposte ma non sono sicuro se valga la pena di implementarle in R. Qualcuno avrebbe qualche suggerimento? Grazie


3
Essi sono diversi rispetto alle reti multistrato addestrati con backprop. Ecco alcune risorse per tutti i tipi di reti neurali: stats.stackexchange.com/a/36257/13669
Stumpy Joe Pete,

Risposte:


21

Innanzitutto gli RBM sono sicuramente diversi dalle normali reti neurali e, se usati correttamente, ottengono prestazioni molto migliori. Inoltre, allenando alcuni strati di un RBM, e quindi usando i pesi trovati come punto di partenza per un NN Mulitlayer spesso si ottengono risultati migliori rispetto al semplice utilizzo di un NN multistrato.

Il miglior indicatore a cui riesco a pensare è questo corso su Coursera, tenuto da Geoffrey Hinton, che è una delle persone responsabili delle MGF:

https://class.coursera.org/neuralnets-2012-001/class/index

i video su RBM e Denoising Autoencoder sono una preziosa risorsa di apprendimento per chiunque sia interessato all'argomento.

Per quanto riguarda l'implementazione in R, non ne conosco neanche uno, ma se vuoi implementarlo, meglio non usare R puro (a meno che i tuoi dati non siano troppo grandi). L'addestramento di un RBM richiede parecchio tempo e se usi R puro invece di R con C può crescere in modo significativo.


1
Posso parlare dei problemi di prestazione di R, poiché ho scritto alcuni RBM in esso. La stragrande maggioranza del tempo di calcolo viene impiegato per moltiplicazioni di matrici, che tendono ad essere più lente in R rispetto ad altre lingue (forse per un fattore 3 o 5). Ricompilare R per il proprio sistema con una BLAS (libreria di algebra lineare) personalizzata può essere di grande aiuto, così come tradurre le parti lente in C ++ con Rcpp. Scrivere un RBM a un livello nascosto è in realtà abbastanza veloce che probabilmente ha senso codificarlo in qualsiasi lingua ti trovi più a tuo agio prima di provare a ottimizzare per la velocità.
David J. Harris,

@David J. Harris Hai condiviso le tue implementazioni in R? Mi piacerebbe dare un'occhiata a loro.
Zach,

1
@Zach Al momento sono piuttosto impegnato, ma vedrò cosa posso fare per approvvigionarlo in futuro. Puoi anche inviarmi un'e-mail all'indirizzo nel mio profilo per una copia di ciò che ho se non ti dispiace ordinare attraverso un progetto non documentato / semilavorato.
David J. Harris,

8

In R puoi usare neuralnet e RSNNS (che fornisce un'interfaccia al Stuttgart Neural Network Simulator ) per adattarsi alle reti neurali multistrato standard, ma ci sono differenze con RBM.

Per quanto riguarda l'implementazione di reti neurali profonde in R, penso che l'unica strategia utile sarebbe quella di interfacciare le implementazioni FOSS esistenti, che di solito è una soluzione molto migliore del semplice reimplementazione delle cose da soli (non ho mai capito bene perché tutti debbano reinventare la ruota). R offre molte funzionalità per farlo e puoi sfruttare la gestione dei dati di R con la velocità e gli aspetti pronti all'uso delle soluzioni esistenti. Ad esempio, si potrebbe interfacciare MDP con le funzionalità di interfaccia Python / R, vedere ad esempio questo documento .

Modifica: Andrew Landgraf di Statistically Significant fornisce un codice R per RBM .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.