Redes Neuronales en Haskell

Slides:



Advertisements
Presentaciones similares
Introducción al Teorema de Gödel
Advertisements

INTRODUCCION A TECNICAS DE MINERIA DE DATOS
Comunicacion por medio de Sistemas Expertos en las Redes
Introducción a las Redes neuronales
Historia de la Inteligencia Artificial
CIENCIAS DE LA COMPUTACIÓN
Silvana Arias Carla Espinosa Livia Loaiza INGENIERIA EN SISTEMAS
7. Máquinas Estocásticas
La maquina de Turing La máquina de Turing es una caja negra (tan simple como una máquina de escribir y tan compleja como un ser humano) capaz no sólo de.
Inteligencia Artificial
Introducción a la Programación
Redes neuronales2 José Edinson Aedo Cobo Depto. de Ing. Electrónica.
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Ingeniería de sw.
EXPERIENCIA EXITOSA EN EL USO DE LAS TIC
El Perceptrón  El psicólogo Frank Ronsenblant desarrolló un modelo simple de neurona basado en el modelo de McCulloch y Pitts que utilizaba.
Inteligencia Artificial (BAIA)  Se propone lograr que las computadoras se comporten de manera que podamos reconocerlas como inteligentes.  Tiene por.
REDES NEURONALES ARTIFICIALES
Seminario Científico Internacional 2008 de invierno (SCI 2008i) - Francisco García Fernández. Dr. Ingeniero de Montes - Luis García Esteban. Dr. Ingeniero.
INCORPORACIÒN DE LA SIMULACIÓN VÍA REDES NEURONALES COMO HERRAMIENTA DE UNIVERSALIZACIÓN DEL CONOCIMIENTO. M.Sc. Manuel Marqués 1*, Dr. Luis Oliva Ruiz.
Introducción Calculabilidad clásica Computación celular
Redes Neuronales Monocapa
INTELIGENCIA ARTIFICIAL
Ejemplo de aplicación de las ANN
1 Problema no separable linealmente Se busca obtener un algoritmo más general que permita integrar el aprendizaje entre las dos capas.
Tema 6 Razonamiento aproximado
ING. JOSE GUILLERMO GUARNIZO MARIN
Tipos de redes neuronales Perceptrón multicapa Redes de respuesta radial Competitivas Clasificación Mapa topológico.
 Fue en el año 1945 cuando el matemático Jhon Von Neumann, fascinado por las posibilidades del ENIAC, demostró que una computadora podía tener una estructura.
Integrantes: Daniel Peña Alfredo Zuñiga
Historia. Historia Historia Su nombre rinde homenaje a: Haskell Brooks Curry ( ) Lógico y matemático norteamericano Pionero de la lógica.
Aplicaciones de las Redes Neuronales Artificilaes Dr. Héctor Allende
SISTEMAS ADAPTATIVOS Y FILTRADO
Redes Asociativas.
Redes Neuronales Artificiales
Aprendizaje de Agentes II Alberto Reyes Ballesteros Programa ITESM-IIE Doctorado en Ciencias Computacionales.
Modelos Computacionales
José Ángel González Fraga, Erika. M. Ramos Michel, Facultad de Telemática, Universidad de Colima V TALLER DE PROCESAMIENTO.
Redes Competitivas.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
REDES NEURONALES.
Universidad Autónoma San Francisco CARRERA PROFESIONAL: Lengua, Traducción e Interpretación Asignatura: MATEMÁTICA Tema: “SISTEMA FORMAL”
Aprendizaje Automatizado
Redes Neuronales Artificiales 2 - Aprendizaje
Una introducción a la computación evolutiva
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
REDES NEURONALES Introducción Enrique Carlos Segura.
2.1 Breve reseña histórica de la Neurocomputación
REDES NEURONALES ARTIFICIALES TEORÍA Y APLICACIONES
8.- Inteligencia artificial
INTRODUCCIÓN A LA INTELIGENCIA ARTIFICIAL Y LOS SISTEMAS EXPERTOS
La Inteligencia Artificial "nació" en 1943 cuando Warren McCulloch y Walter Pitts propusieron un modelo de neurona del cerebro humano y animal. Estas neuronas.
Redes Neuronales BPN - Backpropagation Networks
NUEVAS TECNOLOGIAS.
Metodología de la programación
ARQUITECTURA DE LOS SISTEMAS DE INFORMACIÓN
Introducción a los Sistemas Inteligentes
REDES NEURONALES TEORÍA MODERNA DE LA FIRMA 2010.
Portafolio de evidencias
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
UNIDAD 01. EL MICROPROCESADOR
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Ángel Berihuete Francisco Álvarez
La Biología como Alternativa Computacional Nuevos Paradigmas de Computación inspirados en la Biología Mario de J. Pérez Jiménez, Fernando Sancho Caparrini.
Proceso de desarrollo de Software
NOMBRE: Paula Andrea Bedoya Rojas. GRADO: 7.3. Institución Educativa Debora Arango P.
NOMBRE: TATIANA APELLIDO: TANGARIFE POSADA GRADO: 7°3 Inteligencia artificial.
PONENCIA: III ENCUENTRO VIRTUAL DE DOCENTES CON EXPERIENCIAS DE AULAS DE INNOVACIONES PEDAGOGICAS 2013 “MEGATENDENCIAS EN EDUCACIÓN”
Conclusiones: En este trabajo se ha demostrado que se pueden aplicar los algoritmos OCH al ajuste de los parámetros de un modelo borroso mediante la discretización.
REDES NURONALES Armando A Quiñones Quiñones. Algo de Historia.
Transcripción de la presentación:

Redes Neuronales en Haskell UNIVERSIDAD DE MÁLAGA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA INGENIERÍA INFORMÁTICA Programación Declarativa Avanzada Redes Neuronales en Haskell Antonio Claros, Juan Fco. Gutiérrez, Juan Miguel Muñoz

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

Antecedentes Históricos(I) Las raí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)

Antecedentes Históricos(II) Teorema de 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)

Antecedentes Históricos(III) Tesis Church-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)

Antecedentes Históricos(IV) Warren McCulloch 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

Neurocomputación (I). Red Neuronal. ¿Qué es una red neuronal? ¿Por qué se elige el cerebro como modelo a seguir?

Neurocomputación (II). Componentes. Componentes de una red neuronal: Neuronas Conexiones sinápticas Pesos sinápticos Función de activación

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.

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…

Redes Neuronales en Haskell (I). Preámbulos. Matrices en Haskell. Operaciones sobre matrices.

Redes Neuronales en Haskell (II). Componentes. Conexiones sinápticas. Totalmente conectada Pesos sinápticos. Matriz Wi,j (i=entrada, j=neurona). Umbral Vector

Redes Neuronales en Haskell (III). Componentes (II). Función de transferencia. Personalizable (Paso, Signo, Identidad, etc.) Red neuronal, entradas y salidas.

Redes Neuronales en Haskell (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.

Redes Neuronales en Haskell (V). Entrenamiento (I). Depende del modelo. Perceptrón simple. Algoritmo: Inicializar la red con pesos y umbrales aleatorios. Elegir patrones de entrenamiento Evaluar cada patrón de entrenamiento, y si la clasificación es incorrecta, modificar los pesos hasta corregirla. Si hubo errores, repetir 3. Regla de aprendizaje:

Redes Neuronales en Haskell (VI). Entrenamiento (II). Implementación en Haskell. Problema: Bucles. Solución: añadir un parámetro de parada a la función.

Redes Neuronales en MATLAB(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

Redes Neuronales en MATLAB(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

Redes Neuronales en MATLAB(III) El Perceptrón Simple Librería Neural Network Toolbox™ Implementación de la Función OR:

Redes Neuronales en MATLAB(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’);

Redes Neuronales en MATLAB(V) El Perceptrón Simple Se inicializan los pesos net.IW{1,1}=[rands(1) rands(1)]; net.b{1}=rands(1); Se entrena a la red Numero de épocas o iteraciones Error admisible net.trainParam.epochs = 20; net.trainParam.goal = 0; [net, tr, Y, E]= train(net, P, T)

Redes Neuronales en MATLAB(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)

Redes Neuronales en MATLAB(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);

Redes Neuronales en LISP(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.

Redes Neuronales en LISP(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.

Redes Neuronales en LISP(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.

Redes Neuronales en LISP(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.

Redes Neuronales en LISP(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)

Redes Neuronales en LISP(VI) Perceptrón Simple(II). Desarrollo (defvar *mi-per*) *MI-PER* (setf *mi-per* (make-perceptron 2 2)) <red-neuronal-unicapa-16> (dotimes (i 10000) (perceptron-update *mi-per* '(0 0) (network-output '(0 0) *mi-per*) '(0)) (perceptron-update *mi-per* '(1 0) (network-output '(1 0) *mi-per*) '(1)) (perceptron-update *mi-per* '(0 1) (network-output '(0 1) *mi-per*) '(1)) (perceptron-update *mi-per* '(1 1) (network-output '(1 1) *mi-per*) '(1))) NIL (network-output '(0 0) *mi-nn*) (0.01649841654154332) (network-output '(1 0) *mi-nn*) (0.9763548612073125) (network-output '(0 1) *mi-nn*) (0.9826598437895642) (network-output '(1 1) *mi-nn*) (0.9771186414633854)

Redes Neuronales en LISP(VII) Perceptrón Multicapa(I) Funciones: (make-connected-nn lista). (network-output lista-entrada nn). (backprop-update nn lista-entrada lista-salida-actual lista-salida-deseada). (print-nn nn).

Redes Neuronales en LISP(VIII) Perceptrón Multicapa(II). Desarrollo (defvar *mi-nn*) *MI-NN* (setf *mi-nn* (make-connected-nn '(2 2 1))) <red-neuronal-multicapa-27> (dotimes (i 10000) (backprop-update *mi-nn* '(0 0) (network-output '(0 0) *mi-nn*) '(0)) (backprop-update *mi-nn* '(1 0) (network-output '(1 0) *mi-nn*) '(1)) (backprop-update *mi-nn* '(0 1) (network-output '(0 1) *mi-nn*) '(1)) (backprop-update *mi-nn* '(1 1) (network-output '(1 1) *mi-nn*) '(0))) NIL > (network-output '(0 0) *mi-nn*) > (0.01755890776674844) > (network-output '(1 0) *mi-nn*) >(0.9800031228551442) > (network-output '(0 1) *mi-nn*) >(0.9835795152680812) > (network-output '(1 1) *mi-nn*) >(0.015557196826686817)

Comparativa(I) Haskell, Matlab y Lisp(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.

Comparativa(II) Haskell, Matlab y Lisp(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.

Redes Neuronales en la 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

Redes Neuronales en la 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

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

Referencias Apuntes Jose Muñ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.

Referencias Trabajo Redes Neuronales 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

Gracias por la atención. Antonio Claros, Juan Fco. Gutiérrez, Juan Miguel Muñoz