Download Presentación - Universidad de Granada
Document related concepts
Transcript
Primer Hackathon Reto de IA de Google en la UGR Redes neuronales. El perceptrón Pedro A. Castillo Valdivieso Depto. Arquitectura y Tecnología de Computadores Universidad de Granada http://atc.ugr.es/pedro/gaicm1 1 Índice Redes neuronales artificiales El perceptrón El perceptrón multicapa Ejemplos de implementación Aplicación a la clasificación de patrones Índice 2 Redes Neuronales Artificiales Paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso de los animales Sistema de interconexión de neuronas en una red que colabora para producir una salida Modelos muy adecuados para aproximar funciones o para clasificar patrones http://es.wikipedia.org/wiki/Red_neuronal_artificial Redes Neuronales Artificiales 3 Redes Neuronales Artificiales Consisten en un conjunto de unidades de entrada, conectadas con varias capas de neuronas y una capa de salida. La señal de entrada se propaga hacia delante. Redes Neuronales Artificiales 4 Redes Neuronales Artificiales Características del modelo: • habilidad para aprender a partir de ejemplos • auto-organización: crea su propia representación de la información • tolerancia a fallos: almacenan la información de forma redundante y sigue respondiendo de manera aceptable aún si se daña algún nodo • flexibilidad: pueden manejar cambios poco importantes en la información de entrada (ruido) • estructura paralela Redes Neuronales Artificiales 5 Índice Redes neuronales artificiales El perceptrón El perceptrón multicapa Ejemplos de implementación Aplicación a la clasificación de patrones Índice 6 El Perceptrón El perceptrón es un discriminador que traza su entrada a un único valor de salida: Desarrollado por Rosenblatt (1957) http://en.wikipedia.org/wiki/Perceptron El Perceptrón 7 El Perceptrón Tiene un vector de pesos reales con el que se calcula una suma ponderada y usa un umbral para representar el grado de inhibición de la neurona El valor de salida se usa para clasificar el patrón (x) como un caso positivo o un caso negativo, en el caso de un problema de clasificación binario El Perceptrón 8 El Perceptrón El algoritmo de aprendizaje es de tipo supervisado: 1. Inicializar los pesos con valores aleatorios pequeños 2. Presentar un ejemplo (x) de entrada 3. Calcular la salida para dicho ejemplo: 4. Modificar los pesos para minimizar el error: El Perceptrón 9 El Perceptrón. Limitaciones Sólo puede discriminar patrones que pertenezcan a clases linealmente separables Una función no separable no se puede aproximar con un solo plano de separación: El Perceptrón 10 Índice Redes neuronales artificiales El perceptrón El perceptrón multicapa Ejemplos de implementación Aplicación a la clasificación de patrones Índice 11 El Perceptrón Multicapa El perceptrón multicapa es una red neuronal artificial formada por múltiples capas, esto le permite resolver problemas que no son linealmente separables La salida de una neurona está determinada por la suma ponderada con las salidas de las neuronas de la capa anterior y una función de activación. El Perceptrón Multicapa 12 Capacidad de Representación Clasificación: • Entrada - Salida: clases linealmente separables • 1 Capa Oculta: regiones convexas • 2 Capas Ocultas: regiones de cualquier tipo [Lippmann 87] Aproximación: • Una sola capa oculta es suficiente para llevar a cabo una aproximación universal [Cybenko 88,89]. El Perceptrón Multicapa 13 Entrenamiento de la red El proceso de aprendizaje tiene por objeto ajustar los pesos del MLP de forma que se minimice el error cometido ante un conjunto de patrones de entrada. El algoritmo más utilizado en el entrenamiento de estas redes es el de retropropagación: • Evaluación de la red 1 Nm ε ( p ) = ∑ ( d i ( p ) − yi ( p )) 2 2 i • Cálculo de los gradientes δε δε ( p ) δε ( p ) δzkm =∑ =∑ m m δwij δwij δzkm δwijm k • Actualización de los pesos ( wijm )t +1 = ( wijm )t − η ( El Perceptrón Multicapa δε t m t m t −1 ) + β (( w ) − ( w ) ij ij ) m δwij 14 Entrenamiento de la red Variantes del algoritmo de retropropagación: • Regla Delta-Bar-Delta [Jacobs 88] • RPROP [Riedmiller 93] • Quick-Propagation [Fahlman 88] • Silva - Almeida [Silva y Almeida 90] • SuperSab [Tollenaere 90] El Perceptrón Multicapa 15 Índice Redes neuronales artificiales El perceptrón El perceptrón multicapa Ejemplos de implementación Aplicación a la clasificación de patrones Índice 16 Ejemplos de implementación Podemos encontrar muchas implementaciones libres de redes neuronales Implementaciones del MLP en diversos lenguajes: MATLAB, C#, C++, C, Fortran, Perl, Java, PHP y VBA • http://www.philbrierley.com/code.html Veamos implementaciones en - C++ Java Matlab Perl Excel Ejemplos de implementación 17 Implementando en C/C++ http://www.codeproject.com/KB/recipes/BP.aspx http://code.activestate.com/recipes/577461-hopfieldartificial-neural-network/ http://www.amazon.com/Practical-Neural-Network-RecipiesC/dp/0124790402 Ejemplos de implementación 18 Implementando en Java http://neuroph.sourceforge.net/ http://neuron.eng.wayne.edu/software.html http://www.jeffheaton.com/ai http://www.nnwj.de Ejemplos de implementación 19 Implementando en Matlab http://www.mathtools.net/MATLAB/Neural_Networks/index.html http://www.mathworks.com/matlabcentral/fileexchange/976-ann Ejemplos de implementación 20 Implementando en Perl http://search.cpan.org/~ccolbourn/AI-NNFlex-0.24/lib/AI/NNFlex.pm http://search.cpan.org/~ccolbourn/AI-NNFlex-0.24/lib/AI/NNFlex.pm http://search.cpan.org/dist/AI-NeuralNetSimple/lib/AI/NeuralNet/Simple.pm http://search.cpan.org/~jbryan/AI-NeuralNet-BackProp-0.77/BackProp.pm Ejemplos de implementación 21 Implementando en Excel http://www.neuroxl.com/ http://www.mathtools.net/Excel/Neural_Networks/index.html http://www.philbrierley.com/main.html?code/vba.html&code/codeleft.html Ejemplos de implementación 22 Ejemplo en C++ Librería qpPerceptron Ejemplos 23 Ejemplo en C++ Cómo programar con la librería qpPerceptron: #include <qpPerceptron.h> ifstream streamTrn(fileTrn.c_str()); qpTS<vector<double>, unsigned> trnSet(streamTrn); qpPerceptron<unsigned> net( NI, NH, NO , initWeightRange ); net.initTrain(epocas, error, tolerancia, aprend, verbose); net.train(trnSet); obtenido = net.apply( tstSet.exampleAt(i) ); Ejemplos de implementación 24 Ejemplo en C++ Compilar. Ejemplo XOR. Ejecutar programa: Ejemplos de implementación 25 Índice Redes neuronales artificiales El perceptrón El perceptrón multicapa Ejemplos de implementación Aplicación a la clasificación de patrones Índice 26 Un problema de clasificación Helicasas del ADN Encimas usadas en el metabolismo del ADN. Las partículas se observan a través de un microscopio electrónico, y se clasifican para determinar su estructura circular con una mancha en el centro (vista superior) estructura rectangular (vista lateral) Cada imagen se preprocesa para obtener una de 10x10 pixels. Cada patrón tiene 25 entradas y la clase (superior/lateral) Clasificación de patrones 27 Un problema de clasificación Usaremos el ejemplo de programación en C++ para clasificar las Helicasas del ADN Clasificación de patrones 28 Evolving Objects Librería para desarrollar en C++ algoritmos evolutivos y MLPs (posibilidad de evolucionar las redes): • http://eodev.sourceforge.net/ EO 29 Otras aplicaciones Podemos entrenar una red para que ordene una acción en función de los valores recogidos con sensores: Clasificación de patrones 30 Índice Redes neuronales artificiales El perceptrón El perceptrón multicapa Ejemplos de implementación Aplicación a la clasificación de patrones Índice 31 Completar la información http://en.wikipedia.org/wiki/Artificial_neural_network http://en.wikipedia.org/wiki/Perceptron http://atc.ugr.es/pedro/tutoriales/gaic1/ http://atc.ugr.es/pedro/investigacion.html 32 ¡muchas gracias! Pedro A. Castillo Valdivieso pedro@atc.ugr.es 33