Download DEEP LEARNING
Document related concepts
no text concepts found
Transcript
DEEP LEARNING GABRIEL VALVERDE CASTILLA Federico Castanedo VI JORNADAS USUARIOS DE R 2014 SOCIEDAD R HISPANO GTEC – WISEATHENA Email: [email protected] CONTENIDOS •¿QUÉ ES DEEP LEARNING? • EJEMPLOS: • Autoencoders. • Stacking Autoencoders • Restricted Boltzmann Machine • Deep Belief Network • PAQUETES DE R: • DeepNet • H2O ¿QUÉ ES DEEP LEARNING? • DeepLearning = NN + IA + GM + Optimización + PR + SP. Neuronal Inteligencia Graph Procesamiento Procesamiento Network Artificial Modeling Patrones Señales. - Extracción y Transformación de nuevas características derivadas del procesamiento de la información, conocidas como features. Ya sea de forma supervisada o no. - Aprender varios niveles de representación buscando relaciones complejas. Tenemos generando features de alto y bajo nivel, jerarquizándolas, Deep arquitectura. Generalmente no supervisado. Es a tener también en cuenta que algunas representaciones son mejores que otras para depende de que tareas. - Niveles de abstracción que nos permitan dar sentido a imágenes, sonidos y texto. Aprendiendo múltiples niveles de representación EJEMPLOS Deep Belief Network (DBN): modelos probabilísticos generativos compuestos por muchas capas, y variables ocultas. Boltzmann Machine (BM): una red conectada de forma simétrica, con neuronas como unidades que toman la decisión de estar conectadas o no. Restricted Boltzmann Machine (RBM): tipo especial de BM donde no se permiten interrelación entre neuronas del mismo tipo. Deep Neural Network (DNN): perceptrón multicapa con varias capas ocultas, cuyos pesos están conectados y suelen ser iniciados usando por otro modelo supervisado o no de técnica de entrenamiento. Deep Autoencoders: modelo discriminativo DNN que toma como salida los propios valores de entrada, se trata por tanto de un modelo no supervisado. Cuando el objetivo es eliminar ruido se comporta como un modelo generativo. NO SUPERVISADOS: AUTOENCODERS NO SUPERVISADOS: STACKING AUTOENCODERS. DEEP BELIEF NETWORK: RESTRICTED BOLTZMAN MACHINE PAQUETES R Deep Net Autor: Xiao Rong Link: https://github.com/cran/deepnet Paquete en el que hay implementado varios modelos y algoritmos de Deep Learning. Aunque de utilidad para entender bien los modelos, ya que aplica una muestra bastante representativa de todos ellos, su BP, RBM, DBM, Autoencoder. Su lentitud, debido a la no paralelización, ha hecho que no sea el utilizado para obtener los resultados. Sí para realizar pruebas y adentrarnos en el mundo de DeepLearning por la fácil accesibilidad de código. FUNCIONES Utilidad Dbn.dnn.train Implementa una Deep Neural Network, con pre-entrenamiento dado por una DBN formada por RBM acopladas. Load.mnist Función para cargar la base de datos de referencia de pruebas de machine learning en el reconocimiento de dígitos manuscritos. nn.predict Función que nos permite clasificar nuevos datos a partir del modelo entrenado. Ya sea DBN o NN. nn.test nn.train Función para entrenar una red neuronal ya sea de una o varías capas. Por medio de BP. Rbm.down Generación de vector de valores a partir de los estados de las neuronas de capas ocultas. Necesario para aplicar CD. Rbm.train Entrenamiento de una Restricted Boltzmann Machine. Rbm.up Deducir el estado de las capas ocultas a partir de las visibles. También se puede utilizar para deducir estado de capa superior a partir de la inferior, siendo ambas ocultas. Sae.dnn.train Entrenar una DNN con pesos iniciados a partir de un Stacked AutoEncoder. ARGUMENTOS Argumentos Utilidad Parámetros x Matriz de casos, de ejemplos. Matriz de entrenamiento y Matriz de clases, o valores objetivos. Clasificación hidden Vector con el número de neuronas de c(200,100, 50, 25, 2) cada capa oculta. activationfun Función de activación elegida, aunque sólo está completamente implementada sigm. sigm learningrate Ratio de aprendizaje para la aplicación del gradiente descendente estocástico. 0.09 momentun Momentum para gradiente descendente. 0.5 Learning_rate_ Factor de reducción para el ratio de scale aprendizaje. numepochs Número de iteraciones. 30 Argumentos Utilidad Parámetros batchsize Tamaños de minibatch. 100 output Función de salida, puede ser sigm, linear, or softmax. Por defecto “sigm”. Sae_output Función de salida del Autoencoders. Hidden_dropout Cancelación de las capas ocultas. Visible_dropout Porcentaje de fracciones a eliminar. cd (Sólo en dbn) Número de iteraciones de Gibbs para el algoritmo de CD. cd PAQUETES R H2O Autor: Oxdata Link: https://github.com/0xdata/h2o/tree/master/docs/deeplearning Software desarrollado por OXDATA, con un paquete en R a modo de framework. Engloba distintas estrategias de análisis de datos. Entre ellas varios modelos de Deep Learning, DNN, Autoencoders. Permite observar resultados intermedios de convergencia y tiene la posibilidad desde la plataforma online de conexión al servidor lanzado, de parar y guardar modelos intermedios, continuando el entrenamiento a posteriori y observar el comportamiento de los distintos nodos del clúster, así como exportar datos desde distintas plataformas y formatos. Opciones de Uso Sparkling Water R +Hadoop Cluster EC2 Interface Gráfica Modelos Machine Learning - GLM Decision Tree Random Forest GBM K-MEANS Anomaly Detection Deep Learning Naïve Bayes Gride Search http://www.slideshare.net/0xdata/h2-odeeplearningarnocandel052114?related=1 FUNCIONES Utilidad h2o.init Función para iniciar h2o, en nuestro caso sólo lo hemos aplicado de manera local. h2o.uploadFile Función para cargar la base de datos, en función de PATH, será desde S3, HDFS, o URLs. h2o.deeplearning Función que nos permite realizar un modelo de DNN, o Autoencoders, seleccionando todos los parámetros. @model$option Eligiendo sobre el modelo nos indican distintas opciones: params los parámetros usados, varimp importancia de las variables. h2o.predict Dado el modelo nos proporcionas las puntuaciones sobre los datos de test. h2o.saveModel Nos permite almacenar el modelo realizado, en la dirección elegida. h2o.loadModel Nos permite cargar modelos almacenados. h2o.anomaly Nos permite, calculado un modelo Autoencoders, localizar anomalías. as.h2o Función que nos permite cargar en el h2o, los datos de R. h2o.performance Función que nos permite medir la validez de las puntuaciones sobre datos de referencia. ARGUMENTOS Argumentos Utilidad Parámetros Funciones ip Seleccionar la IP del servidor. Localhost. h2o.init port Puerto de conexión. Clasificación. h2o.init nthreads Número de CPU’s a usar. -1 indica todos h2o.init starH2O Lanza la conexión si esta no existe. T h2o.init data Matriz de datos de R, que se quiere llevar a Data.table con los as.h2o h2o. datos. key Nombre clave, con el que se denomina en el sistema de almacenaje de H2O. epochs Número de iteraciones. Balance_class es Balancea las clases en las distintas particiones de los datos durante la resolución del algoritmo de optimización Train/Validation/Te as.h2o st h2o.deeplearning T h2o.deeplearning Argumentos Utilidad Parámetros Función x Vector que contiene las variables de uso. Todas, salvo índice y clase h2o.deeplearning y Nombre de la variable respuesta. h2o.deeplearning data Dato en formato h2o, distribuido por el sistema. h2o.deeplearning autoencoder Nos permite elegir entre Steacking Autoencoder o DNN. classificacion Cancelación de las capas ocultas. activation Función de activación. “Tanh”/”TanhDropout” h2o.deeplearning hidden Estructura del modelo. c(200,100, 50, 25, 2) h2o.deeplearning T en el Autoencoder h2o.deeplearning h2o.deeplearning Argumentos Utilidad Parámetros Función Override_with_ best_model Nos quedamos con el último modelo de la iteración, o con el mejor. T h2o.deeplearning Checkpoint Nos permite almacenar el modelo que estamos entrenando. Key con el nombre del modelo. h2o.deeplearning Reference Clase actual con la que comparar. Clase, del conjunto de entrenamiento o validación. h2o.performance Measure Medida elegida para evaluar el modelo. Accuary. h2o.performance Thresholds Frontera. 0.5 h2o.performance APLICACIÓN: WISEATHENA o OBJETIVO: Predicción de churn (fuga) para un conjunto de datos referentes a clientes de una empresa de telecomunicaciones. PASOS A SEGUIR: - Tratar los datos, seleccionar variables de tipo numérico, transformar las de tipo clase en booleanas, estandarizar los datos para evitar mayor carga en variables con mayor peso. - Muestreo de los datos, creando training, validation, test, con los dos primeros ya clasificados, y en el caso de training, con datos balanceados. - Usar el paquete deepnet/h2o para realizar la predicción. APLICACIÓN PROCEDIMIENTO 1 Comenzar seleccionando parámetros. 2 Aplicar el modelo con la función dbn.dnn.train/h2o.deeplearning. 3 Variarlos en función de los resultados obtenidos sobre training. 4 Usar nn.test/h2o.predict para valorar los resultados con los pesos entrenados sobre Validation. 5 Valorar la posibilidad de aplicar técnicas de reducción de sobreajuste si este se da. Usar mediciones como curva ROC, usando la librería ROCR. 6 Una vez elegido aplicar sobre el conjunto de test. Datos SOLUCIÓN DEEPNET SOLUCIÓN H2O BIBLIOGRAFÍA http://cran.r-project.org/web/packages/deepnet/deepnet.pdf http://0xdata.com/ deepLearning.net https://www.youtube.com/watch?v=n6hpQwq7Inw https://www.youtube.com/watch?v=dMVLd5URpvs#t=602 http://www.cs.ubc.ca/~nando/540-2013/lectures/l13.pdf http://www.cs.ubc.ca/~nando/540-2013/lectures.html http://digital.csic.es/bitstream/10261/84753/1/RED%20NEURONAL.pdf http://books.google.es/books?id=4OgOJLGGrzcC&pg=PA145&lpg=PA145&dq=gato+barra+horizontal&source=bl&ots= Z4tEuFrkYF&sig=bWjETKt_2RPxLL8O3-B9DIORXYs&hl=es&sa=X&ei=uXTRUSWLeOc0QXWzYCYDw&ved=0CFwQ6AEwCw#v=onepage&q&f=false http://vimeo.com/101582001 http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/filter_visualization.ipynb GRACIAS Para mayor información: http://www.slideshare.net/vlopezlo/deep-learning-r-by-gabriel-valverde Email: [email protected] [email protected] www.tecnologiaucm.es