Redes neuronales en haskell
This presentation is the property of its rightful owner.
Sponsored Links
1 / 39

Redes Neuronales en Haskell PowerPoint PPT Presentation


  • 155 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Redes Neuronales en Haskell

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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

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

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

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

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

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

Neurocomputación (I). Red Neuronal.

  • ¿Qué es una red neuronal?

    • ¿Por qué se elige el cerebro como modelo a seguir?


Neurocomputaci n ii componentes

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

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

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

Redes Neuronales en Haskell (I).Preámbulos.

  • Matrices en Haskell.

  • Operaciones sobre matrices.


Redes neuronales en haskell ii componentes

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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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

    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.


    Referencias1

    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

    Gracias por la atención.

    Antonio Claros, Juan Fco. Gutiérrez, Juan Miguel Muñoz


  • Login