Upload
dinhdat
View
214
Download
0
Embed Size (px)
Citation preview
1
Pedro A. Castillo ValdiviesoDepto. Arquitectura y Tecnología de Computadores
Universidad de Granada
http://atc.ugr.es/pedro/gaicm1
Primer Hackathon Reto de IA de Google en la UGR
Redes neuronales. El perceptrón
2
Índice
� Redes neuronales artificiales
� El perceptrón
� El perceptrón multicapa
� Ejemplos de implementación
� Aplicación a la clasificación de patrones
Índice
3
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_artificia l
Redes Neuronales Artificiales
4
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
5
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
6
Índice
� Redes neuronales artificiales
� El perceptrón
� El perceptrón multicapa
� Ejemplos de implementación
� Aplicación a la clasificación de patrones
Índice
7
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
8
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
9
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
10
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
11
Índice
� Redes neuronales artificiales
� El perceptrón
� El perceptrón multicapa
� Ejemplos de implementación
� Aplicación a la clasificación de patrones
Índice
12
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
13
Capacidad de Representación
� Clasificación:
El Perceptrón Multicapa
� Aproximación:
• Entrada - Salida: clases linealmente separables
• 1 Capa Oculta: regiones convexas
• 2 Capas Ocultas: regiones de cualquier tipo [Lippmann 87]
• Una sola capa oculta es suficiente para llevar a cabo una aproximación universal [Cybenko 88,89].
14
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
• Cálculo de los gradientes
• Actualización de los pesos
El Perceptrón Multicapa
∑ −=mN
iii pypdp 2))()((
2
1)(ε
∑∑ ==k
mij
mk
mk
mij
mij w
z
z
p
w
p
w δδ
δδε
δδε
δδε )()(
))()(()()()( 11 −+ −+−= tmij
tmij
tmij
tmij
tmij ww
www β
δδεη
15
Entrenamiento de la red
El Perceptrón Multicapa
� 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]
16
Índice
� Redes neuronales artificiales
� El perceptrón
� El perceptrón multicapa
� Ejemplos de implementación
� Aplicación a la clasificación de patrones
Índice
17
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
18
Implementando en C/C++
� http://www.codeproject.com/KB/recipes/BP.aspx
� http://code.activestate.com/recipes/577461-hopfield -artificial-neural-network/
� http://www.amazon.com/Practical-Neural-Network-Reci pies-C/dp/0124790402
Ejemplos de implementación
19
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
20
Implementando en Matlab
� http://www.mathtools.net/MATLAB/Neural_Networks/ind ex.html
� http://www.mathworks.com/matlabcentral/fileexchange /976-ann
Ejemplos de implementación
21
Implementando en Perl
� http://search.cpan.org/~ccolbourn/AI-NNFlex-0.24/li b/AI/NNFlex.pm
� http://search.cpan.org/~ccolbourn/AI-NNFlex-0.24/li b/AI/NNFlex.pm
� http://search.cpan.org/dist/AI-NeuralNet-Simple/lib/AI/NeuralNet/Simple.pm
� http://search.cpan.org/~jbryan/AI-NeuralNet-BackPro p-0.77/BackProp.pm
Ejemplos de implementación
22
Implementando en Excel
� http://www.neuroxl.com/
� http://www.mathtools.net/Excel/Neural_Networks/inde x.html
� http://www.philbrierley.com/main.html?code/vba.html &code/codeleft.html
Ejemplos de implementación
23
Ejemplo en C++
Librería
qpPerceptron
Ejemplos
24
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
25
Ejemplo en C++
� Compilar. Ejemplo XOR. Ejecutar programa:
Ejemplos de implementación
26
Índice
� Redes neuronales artificiales
� El perceptrón
� El perceptrón multicapa
� Ejemplos de implementación
� Aplicación a la clasificación de patrones
Índice
27
Un problema de clasificación
Clasificación de patrones
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 estructura mancha en el rectangularcentro (vista (vista lateral)superior)
� Cada imagen se preprocesa para obtener una de 10x10 pixels.� Cada patrón tiene 25 entradas y la clase (superior/lateral)
28
Un problema de clasificación
� Usaremos el ejemplo de programación en C++ para clasificar las Helicasas del ADN
Clasificación de patrones
29
Evolving Objects
� Librería para desarrollar en C++ algoritmos evolutivos y MLPs (posibilidad de evolucionar las redes):• http://eodev.sourceforge.net/
EO
30
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
31
Índice
� Redes neuronales artificiales
� El perceptrón
� El perceptrón multicapa
� Ejemplos de implementación
� Aplicación a la clasificación de patrones
Índice
32
Completar la información� http://en.wikipedia.org/wiki/Artificial_neural_netw ork
� http://en.wikipedia.org/wiki/Perceptron
� http://atc.ugr.es/pedro/tutoriales/gaic1/
� http://atc.ugr.es/pedro/investigacion.html