Desarrolle un codificador automático de creencias profundas para reducir la dimensionalidad

Aug 18 2020

Estoy trabajando con un gran conjunto de datos (alrededor de 50K observaciones x 11K características) y me gustaría reducir la dimensionalidad. Esto eventualmente se usará para la clasificación de clases múltiples, por lo que me gustaría extraer características que sean útiles para separar los datos. Hasta ahora, probé PCA (funcionó bien con una precisión general en SVM lineal de aproximadamente 70%), LDA (realizó con una precisión de entrenamiento muy alta de aproximadamente 96% pero la precisión de prueba fue de aproximadamente 61%) y un codificador automático (3 codificador denso de capa con 13000 - 1000 - 136 unidades, respectivamente, que funcionó aproximadamente igual que PCA). Me han pedido que pruebe una red de creencias profundas (pila de máquinas de Boltzmann restringidas) en este problema.

Hasta ahora, preveo dos desafíos. Primero, tengo acceso a una GPU que se puede usar, pero no veo muchas implementaciones de DBN por parte de los principales actores de la comunidad de redes neuronales (por ejemplo, TensorFlow / Keras, PyTorch), lo que significa que esto tendrá que ser implementado en una CPU, planteando el desafío número dos. En segundo lugar, implementar esto requerirá mucha memoria y será bastante lento. Esto trae a colación mi pregunta: ¿Existen implementaciones del codificador automático DBN en Python (o R) que sean confiables y, de manera óptima, utilicen GPU? Si no es así, ¿cuál es el método preferido para construir un DBN en Python? ¿Debería usar sklearn?

Respuestas

1 hH1sG0n3 Aug 18 2020 at 21:16

A diferencia de los Autoencoders, las máquinas Botzmann (restringidas o no) no tienen una capa de salida y, por lo tanto, se clasifican como modelos generativos profundos.

Hay una variedad de implementaciones en Pytorch. Este es compatible con GPU (https://github.com/GabrielBianconi/pytorch-rbm) y lo he encontrado particularmente útil en el pasado.

Los RBM pueden ser muy útiles en una variedad de tareas como

  • Reducción de dimensionalidad
  • Filtrado colaborativo para sistemas de recomendación
  • Característica de aprendizaje y otros.

Esta fue una lectura interesante en caso de que desee obtener más información sobre las GBR. https://heartbeat.fritz.ai/guide-to-restricted-boltzmann-machines-using-pytorch-ee50d1ed21a8