Máquinas de Boltzmann restringidas frente a redes neuronales multicapa

22

He estado queriendo experimentar con una red neuronal para un problema de clasificación que estoy enfrentando. Me encontré con documentos que hablan de RBM. Pero por lo que puedo entender, no son diferentes de tener una red neuronal multicapa. ¿Es esto exacto?

Además, trabajo con R y no veo ningún paquete enlatado para RBM. Me encontré con literatura que habla sobre redes de aprendizaje profundo que básicamente son RBM apiladas, pero no estoy seguro de si vale la pena el esfuerzo para implementarlas en R. ¿Alguien tendría alguna sugerencia? Gracias

brócoli
fuente
3
Ellos son diferentes a las redes multicapa formado con Backprop. Aquí hay algunos recursos para todo tipo de redes neuronales: stats.stackexchange.com/a/36257/13669
Stumpy Joe Pete

Respuestas:

21

En primer lugar, las RBM son ciertamente diferentes de las redes neuronales normales, y cuando se usan correctamente logran un rendimiento mucho mejor. Además, entrenar algunas capas de un RBM y luego usar los pesos encontrados como punto de partida para un NN multicapa a menudo produce mejores resultados que simplemente usar un NN multicapa.

El mejor indicador que se me ocurre es este curso en Coursera, impartido por Geoffrey Hinton, quien es una de las personas responsables de las GBR:

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

Los videos sobre RBM y Denoising Autoencoders son un recurso de aprendizaje valioso para cualquier persona interesada en el tema.

En cuanto a la implementación en R, tampoco conozco ninguno, pero si desea implementarlo, mejor no use R puro (a menos que sus datos no sean demasiado grandes). El entrenamiento de un RBM lleva bastante tiempo, y si usa R puro en lugar de R con C, puede crecer significativamente.

sjm.majewski
fuente
1
Puedo hablar sobre los problemas de rendimiento de R, ya que he escrito algunos RBM en él. La gran mayoría del tiempo de cálculo se gasta en multiplicaciones matriciales, que tienden a ser más lentas en R que en otros idiomas (quizás por un factor de 3 o 5). Volver a compilar R para su propio sistema con un BLAS (biblioteca de álgebra lineal) personalizada puede ayudar mucho, al igual que traducir las partes lentas a C ++ con Rcpp. Escribir un RBM de una capa oculta es en realidad lo suficientemente rápido como para que tenga sentido codificarlo en el idioma en el que se sienta más cómodo antes de intentar optimizar la velocidad.
David J. Harris
@David J. Harris ¿Ha compartido alguna de sus implementaciones en R? Me encantaría echarles un vistazo.
Zach
1
@Zach Estoy bastante ocupado en este momento, pero veré qué puedo hacer para abrirlo en el futuro. También puede enviarme un correo electrónico a la dirección de mi perfil para obtener una copia de lo que tengo si no le importa ordenar un proyecto indocumentado / a medio terminar.
David J. Harris el
8

En R puede usar neuralnet y RSNNS (que proporciona una interfaz para el Simulador de redes neuronales de Stuttgart ) para adaptarse a redes neuronales multicapa estándar, pero existen diferencias en RBM.

Con respecto a la implementación de redes neuronales profundas en R, creo que la única estrategia que vale la pena sería interactuar con las implementaciones de FOSS existentes, que generalmente es una solución mucho mejor que simplemente volver a implementar las cosas por su cuenta (nunca entendí por qué todos necesitan reinventar la rueda). R ofrece muchas funcionalidades para hacer esto y puede aprovechar el manejo de datos de R con la velocidad y los aspectos listos para usar de las soluciones existentes. Por ejemplo, uno podría interconectar MDP con las capacidades de interfaz de Python / R, consulte, por ejemplo, este documento .

Editar: Andrew Landgraf de Statistically Significant proporciona un código R para RBM .

Momo
fuente