Redes Neuronales enHaskell
Antonio Claros, Juan Fco. Gutiérrez, Juan Miguel
Muñoz
UNIVERSIDAD DE MÁLAGA
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA
INGENIERÍA INFORMÁTICA
Programación Declarativa Avanzada
2.
Contenidos
Antecedentes Históricos
Neurocomputación
Redes Neuronales en Haskell
Redes Neuronales en MATLAB
Redes Neuronales en LISP
Redes Neuronales en la Universidad
Conclusiones
Referencias
2
3.
Antecedentes Históricos(I)
Lasraíces de la computación datan del siglo XIX
Problema de Decisión:
“Dada una
representación formal
de una afirmación
matemática, diseñar un
algoritmo que determine
si la afirmación es
verdadera o falsa”.
David Hilbert (1862-1943)
3
4.
Antecedentes Históricos(II)
Teoremade Incompletitud:
“Ningún sistema de
razonamiento matemático
es lo suficientemente
potente para ser capaz de
probar toda afirmación
cierta acerca de las
propiedades de los
números naturales”.
Kart Gödel (1906-1978)
4
5.
Antecedentes Históricos(III)
TesisChurch-Turing:
“La clase de problemas
que se pueden resolver
utilizando el sistema de
programación de Turing es
exactamente el mismo que
los que se pueden resolver
utilizando cualquier
sistema de programación
razonable”.
Alan Turing (1912-
1954)
5
6.
Antecedentes Históricos(IV)
WarrenMcCulloch y Walter Pitts padres de la
neurocomputación con la publicación en 1943 “A logical
calculus of the ideas immanent in nervous activity”.
En 1957, Frank Rosenblatt desarrolló un conjunto de redes
neuronales artificiales que se denominaron perceptrones.
Teuvo Kohonen, en 1972, trabajó en el desarrollo de las
redes neuronales de memoria asociativa.
Ágil Carpenter junto con Stephen Grossberg , desarrollaron
las redes autoorganizadas
John Hopfield en 1980,trabajó con varias redes neuronales
recurrentes con pesos fijos y activaciones adaptativas que
pueden resolver problemas de optimización combinatoria
6
7.
Neurocomputación (I). RedNeuronal.
¿Qué es una red neuronal?
¿Por qué se elige el cerebro como modelo a seguir?
7
8.
Neurocomputación (II). Componentes.
Componentes de una red neuronal:
Neuronas
Conexiones sinápticas
Pesos sinápticos
Función de activación
8
9.
Neurocomputación (III). Características.
No linealidad.
Representación de correspondencias entrada-salida.
Tolerancia a fallos y robustez frente a ruido.
Masivamente paralelas.
Información contextual.
9
10.
Neurocomputación (IV). Aplicaciones.
No haya algoritmo.
Entradas con ruido.
Con alto costo computacional
Ejemplos:
Clasificación de patrones (voz, imágenes, etc.)
Problema del viajante y homólogos.
Robótica (controladores).
Y muchos más…
10
11.
Redes Neuronales enHaskell (I).
Preámbulos.
Matrices en Haskell.
Operaciones sobre matrices.
11
Redes Neuronales enHaskell (III).
Componentes (II).
Función de transferencia.
Personalizable (Paso, Signo, Identidad, etc.)
Red neuronal, entradas y salidas.
13
14.
Redes Neuronales enHaskell (IV).
Simulación.
¿Cómo se calcula la salida de una neurona?
Implementación de una red de una capa.
Implementación de una red multicapa.
14
15.
Redes Neuronales enHaskell (V).
Entrenamiento (I).
Depende del modelo.
Perceptrón simple.
Algoritmo:
1. Inicializar la red con pesos y umbrales aleatorios.
2. Elegir patrones de entrenamiento
3. Evaluar cada patrón de entrenamiento, y si la clasificación es incorrecta,
modificar los pesos hasta corregirla.
4. Si hubo errores, repetir 3.
Regla de aprendizaje:
15
16.
Redes Neuronales enHaskell (VI).
Entrenamiento (II).
Implementación en Haskell.
Problema: Bucles.
Solución: añadir un parámetro de parada a la función.
16
17.
Redes Neuronales enMATLAB(I)
MATLAB es un software de computación numérica
MATLAB es un software muy usado, tanto en
universidades como para propósitos de desarrollo e
investigación.
Fue creado en la década de los setenta por Cleve
Moler
Reconociendo el potencial comercial del software se
unieron junto a Steve Bangert para fundar en 1984
The MathWorks
17
18.
Redes Neuronales enMATLAB(II)
MATLAB (Laboratorio de Matrices)
Las matrices son ideales para el diseño de Redes Neuronales
Una red de Hopfield de 6 neuronas se puede representar
mediante un vector y una Matriz
Donde representa la neurona i
Donde es el peso sináptico entre la neurona
i y la neurona j
18
19.
Redes Neuronales enMATLAB(III)
El Perceptrón Simple
Librería Neural Network Toolbox™
Implementación de la Función OR:
19
20.
Redes Neuronales enMATLAB(IV)
El Perceptrón Simple
Necesitaremos los patrones de entrenamiento y las salidas
deseadas
Lo siguiente será crear la red con la función newp especifica
para los perceptrones:
‘hardlim’ representa la función paso
‘learnp’ especifica el tipo de entrenamiento
net = newp([0 1;0 1], 1,’hardlim’,’learnp’);
20
21.
Redes Neuronales enMATLAB(V)
El Perceptrón Simple
Se inicializan los pesos
Se entrena a la red
Numero de épocas o iteraciones
Error admisible
net.IW{1,1}=[rands(1) rands(1)];
net.b{1}=rands(1);
net.trainParam.epochs = 20;
net.trainParam.goal = 0;
[net, tr, Y, E]= train(net, P, T)
21
22.
Redes Neuronales enMATLAB(VI)
El Perceptrón Simple
Se simula la red y se presentan los parametros
S= sim(net, P);
net.IW{1}
net.b{1}
mae(S-T)
22
23.
Redes Neuronales enMATLAB(VII)
El Perceptrón Multicapa
Muy parecido al perceptrón simple
load diabetes;
[pn,minp,maxp,tn,mint,maxt]=premnmx(P,T);
net=newff([minmax(pn))],[15 1],{'tansig’,’logsig’},’trainrp’);
net.trainParam.show=20; Se muestran los resultados cada 50 iteraciones
net.trainParam.lr=0.1; Tasa de aprendizaje
net.trainParam.epochs=500; Número máximo de iteraciones
net.trainParam.goal=0.05; Tolerancia de error como criterio de parada
net.trainParam.min_grad=0.0000001; Valor mínimo del gradiente para parar
net1=train(net,pn,T);
Sn=sim(net1,pn);
23
24.
Redes Neuronales enLISP(I)
Introducción a LISP(I)
LISP (LISt Processing).
Propuesto por John McCarthy a finales de los 50 como una
alternativa al modelo de computación tradicional.
Las listas son la base tanto de los programas como de los datos en
LISP, proporcionando un conjunto potente de funciones que las
manipulan.
Implementado internamente como punteros.
24
25.
Redes Neuronales enLISP(II)
Introducción a LISP(II)
Originalmente un lenguaje simple y pequeño.
Se le han ido incorporando funciones especializadas
como estructuras de datos, aritmética de reales…
provocando la aparición de diferentes dialectos del LISP.
en 1983, la Agencia de Proyectos Avanzados de
Investigación propuso un dialecto standard del lenguaje,
conocido bajo el nombre de Common Lisp.
25
26.
Redes Neuronales enLISP(III)
Introducción a LISP(III)
En un principio, muchos de los programas desarrollados
dentro del ámbito de la Inteligencia Artificial se
implementaron en LISP.
Posteriormente, aparecieron formalismos de más alto
nivel utilizando LISP como lenguaje para su
implementación.
Se podría considerar el LISP como el lenguaje referencia
de la Inteligencia Artificial.
26
27.
Redes Neuronales enLISP(IV)
Implementación.
Existe un repositorio de código Lisp accesible y público
(http://aima.cs.berckeley.edu/).
En él están implementados los principales tipos de
redes neuronales, así como una amplia gama de
funciones necesarias para su manipulación.
27
28.
Redes Neuronales enLISP(V)
Perceptrón Simple(I)
Funciones:
(make-perceptron n m).
(network-output lista-entrada nn).
(perceptron-update per lista-entrada lista-salida-actual
lista-salida-deseada).
(print-nn nn)
28
Comparativa(I)
Haskell, Matlab yLisp(I)
Para realizar el muestreo:
La función OR
1000 iteraciones para completar el aprendizaje.
Los tiempos han sido medidos antes de la impresión de los
resultados.
32
33.
Comparativa(II)
Haskell, Matlab yLisp(II)
En cuanto al tiempo de ejecución de nuestro:
Matlab ha sido el más bajo.
Por delante de Haskel.
Lisp ha sido el más lento.
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
Perceptrón Simple
Haskell
Matlab
Lisp
33
34.
Redes Neuronales enla Universidad(I)
Universidad Granada
2 asignaturas (una troncal y otra optativa)
MATLAB
Universidad Sevilla
1 Tema introductorio de una asignatura Troncal sobre
Teoría del Conocimiento e Inteligencia Artificial
Carácter completamente teórico
34
35.
Redes Neuronales enla Universidad(II)
Universidad Politécnica de Madrid
1 asignatura (optativa)
Carácter teórico
Universidad Politécnica de Barcelona
1 tema de una asignatura (optativa)
Carácter introductorio y teórico
35
36.
Conclusiones
¿Cuál elegir?
Depende de nuestras necesidades:
Máxima eficiencia: MATLAB
Gran volumen de datos: MATLAB
RN relativamente pequeñas: Haskell
Claridad del programa: Haskell
¿Haskell o Lisp?
Haskell más eficiente y menos engorroso
Al final se reduce a una cuestión de preferencia
36
37.
Referencias
Apuntes JoseMuñoz Perez, asignatura “Modelos
Computacionales” Universidad de Málaga (2009)
“Redes Neuronales y Sistemas Borrosos” Bonifacio Martín del Brio
(2001)
“Estructura Dinámica y Aplicaciones de las Redes de Neuronas
Artificiales” Juan Rios (1991)
Wikipedia http://es.wikipedia.org
Imágenes google http://images.google.es/imghp?hl=es&tab=wi
Razonando con Haskell.
Una Introducción a la Programación Funcional , Blas C. Ruiz,
Francisco Gutiérrez, Pablo Guerrero y José E. Gallardo.
37
38.
Referencias
Trabajo RedesNeuronales en Haskell (2006), Francisco Jesús
Fernández Burgos, José Manuel Cortés López
Paginas web de las diferentes asignaturas:
Universidad Granada:
http://decsai.ugr.es/~castro/MCII/
http://decsai.ugr.es/index.php?p=temarios&cod_asigtura=24
Universidad Sevilla:
http://www.us.es/estudios/titulaciones/planes/plan_26_23/asignatura_260108
Universidad Madrid:
http://www.dia.fi.upm.es/index.php?page=inteligencia-artificial-coenexionista-rna&hl=es_ES
Universidad Barcelona:
http://www.fib.upc.edu/es/infoAca/estudis/assignatures/A.html
38
39.
Gracias por laatención.
Antonio Claros, Juan Fco. Gutiérrez, Juan Miguel
Muñoz