Download Presentación - Universidad de Granada

Document related concepts

Perceptrón multicapa wikipedia , lookup

Red neuronal prealimentada wikipedia , lookup

Perceptrón wikipedia , lookup

Neuroph wikipedia , lookup

Propagación hacia atrás wikipedia , lookup

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
[email protected]
33