Autor Tema: RNA (Redes Neuronales Artificiales)  (Leído 45374 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #30 en: 25 de Diciembre de 2007, 16:59:58 »
Aunque tornar fue quien inició el hilo y hace años que no aparece
por supuesto que estamos interesados en el tema, pero el problema
por lo que este hilo quedo muerto fue por la falta de información
para poder aplicarla de una forma practica o útil.
Saludos desde Granada, España.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #31 en: 26 de Diciembre de 2007, 10:43:37 »
En la revista Servo, los meses Julio,Septiembre,Noviembre del 2007 y Enero 2008 aparece una serie de artículos prácticos sobre RNA implementadas en un PIC, hay dos casos prácticos, uno en el que aprende una puerta OR y otro algo más complicado, real e interesante que tiene que ver con un servo. Yo de este tema tengo poca idea pero espero os pueda servir de ayuda.

Saludos!
« Última modificación: 26 de Diciembre de 2007, 11:02:15 por J1M »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #32 en: 26 de Diciembre de 2007, 11:10:42 »
Hola JiM, esa revista se puede comprar o pedir desde España?
Saludos desde Granada, España.

Desconectado J1M

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1960
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #33 en: 26 de Diciembre de 2007, 11:13:31 »
En su página tienes la información sobre como hacerte suscriptor:
http://www.servomagazine.com

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #34 en: 28 de Diciembre de 2007, 16:17:28 »
En cuanto a la información para poder aplicarla de forma útil, es cierto que quizás falte, pero deberíamos empezar estudiando.O sea, me parece que es un tema al cual a que estudiarlo bien para entenderlo y sacarle utilidad práctica. Me parece que para una implementación embebida deberíamos usar pic 18 o 24, DSP, FPGA.....que opinan??
Creo que habría que aprender a programar en matlab para simular e insisto averiguar como se obtiene el código  en C con el Matlab, para cargar a un dispositivo.
O podríamos usar el Matlab para hacer algún programa de PC, usando eso del matlab que le llaman GUI(Interfaz Gráfica de Usuario).

Encontraron nombres de libros en español??? y alguno en inglés si es que está demasiado bueno como para exigirle que sea en español.

Desconectado eto

  • PIC12
  • **
  • Mensajes: 64
    • Programacion y Electronica
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #35 en: 28 de Diciembre de 2007, 22:39:27 »
Hola a todos, soy super nuevo por este subforo, pero me llamo la atencion el tema, no sabia que tambien estaban investigando esto, que bueno, he tratado de seguir el hilo de la conversacion y veo que buscan un titulo en español, ps yo tambien lleve el curso hace algunos años, y el libro que me sirvio bastante es 'REDES NEURONALES Y SISTEMAS DIFUSOS',  pero en fin el asunto es que les recomiendo el libro, porque ademas que trata el tema de forma comprensible, tambien trae uno que otro ejemplo de un perceptron en C, bueno, yo recuerdo haber bajado bastante literatura de RNA en C, la voy a buscar y ya les dejo el enlace para compartirla, lo que no recuerdo es si estaba en español, pero bueno, estaba en C, con un poco de estudio de la teoria no se hace muy complicado el desarrollo del programa. A ver si logro ubicar elpedazo de codigo de ejemplo del libro y lo posteo al rato  :)
« Última modificación: 03 de Enero de 2008, 21:48:55 por eto »
No borro mis errores, al contrario los mantengo a la vista para no cometerlos otra vez.

Mi Web

Desconectado eto

  • PIC12
  • **
  • Mensajes: 64
    • Programacion y Electronica
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #36 en: 28 de Diciembre de 2007, 23:29:08 »
ya lo encontre, y mas o menos es lo siguiente, esta en C.

(codigo quitado hasta esperar respuesta del moderador)

y algo un poco mas ilustrativo de que trata el programa (espero)  :z)  :mrgreen:


       wi1 
x1--o------- \
       wi2        \
x2--o--...        \           NEURONA i
 .     wij            ( sumatoria(wij*xj) - thi )---->[f(sumatoria)]-->Yi(salida)
xj--o--...        / |
 .     win       /  |
xn--o------- /   |(thi) umbral
                      |
                   (-1) 


la idea es hallar "Yi", haciendo que el programa, realice la sumatoria de los productos entre las entradas (xj) y los pesos(wij), le reste el umbral y aplique una funcion (que dependera del tipo de neurona que se este usando).  El de arriba es el perceptron basico, una neurona que independientemente sea el modelo de red que se use, casi siempre si no me equivoco, sera la misma, en lo que se diferencian es en la aplicacion, el modelo de red, y el tipo de aprendizaje que utilizan, como ya mencionaron antes. tienen las REDES MONOCAPA, MULTICAPA, MAO, en tipo de aprendizaje tienen BACK-PROPAGATION, HEBBIANO, etc. en fin. ojala sirva de algo mi aporte, seguire buscando la bibliografia que mencione. Y ojala encuentre un trabajo en el que casi me pidieron que transcriba el librito ese, y lo subo tambien :)

Ha tambien veo que mencionan el 'Matlab'(enlace quitado hasta esperar respuesta del moderador), para generar codigo en C, ps si se puede lo que nunca hice , pero si lei en su documentacion que se puede, porque no pasan por su pagina, buscando un poco encuentran lo referente, no pongo el enlace directo porque siempre me perdi en ese sitio  :mrgreen:  :mrgreen:
« Última modificación: 02 de Enero de 2008, 13:53:40 por eto »
No borro mis errores, al contrario los mantengo a la vista para no cometerlos otra vez.

Mi Web

Desconectado eto

  • PIC12
  • **
  • Mensajes: 64
    • Programacion y Electronica
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #37 en: 01 de Enero de 2008, 21:09:11 »
Hola a todos, que tengan un buen comienzo de año.
Aca les dejo una dirección donde subi unos pdf's que baje hace algun tiempo, ojala les sirva  'redes neuronales'(****), están los documentos que comente, sobre codigos en c++, un manual del matlab para redes neuronales, subire algo mas en cuanto encuentre más cosas ;)
« Última modificación: 03 de Enero de 2008, 08:44:38 por dogflu66 »
No borro mis errores, al contrario los mantengo a la vista para no cometerlos otra vez.

Mi Web

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #38 en: 01 de Enero de 2008, 21:44:57 »
Muchas gracias por la información.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado eto

  • PIC12
  • **
  • Mensajes: 64
    • Programacion y Electronica
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #39 en: 03 de Enero de 2008, 22:02:28 »
Hola, ya habiendo corregido todo lo que se tenia que corregir, y siguiendo un poco el consejo de dogflu66, digo que seria interesante hacer un pequeño sistema nervioso, pero como que parece muy complicado viendolo desde otra perspectiva, asi que mi propuesta es la siguiente:

Si podemos desarrollar, cada sección del sistema mensionado en partes, primero hariamos, algo sencillo como un seguidor de luz, que vendría a ser el sentido de la vista de algun futuro robot, o talvez hecer un seguidor de sonido (el oido del robot), con unos microfonos nos podría bastar creo yo, sea cual sea por el que se comiense la idea es hacer primero un pequeño soporte que sostenga lo que seria la cabeza del robot, y al ver luz o escuchar sonido, oriente su cabeza en esa dirección.

Por ahora para ir haciendo pruebas cuento con 18f452, así que ire avanzando algo y posteando lo que se avance, aunque no sea muy seguido...   8)    :)
No borro mis errores, al contrario los mantengo a la vista para no cometerlos otra vez.

Mi Web

Desconectado eto

  • PIC12
  • **
  • Mensajes: 64
    • Programacion y Electronica
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #40 en: 05 de Enero de 2008, 03:06:58 »
Hola, veo que una de las razones por la que este tema va tan lento, es por falta de informacion, asi que para los que recien van entrando con esto de las RNA, les dejo algo de informacion, (totalmente de libre distribucion, igual podrian encontrarla en muchas paginas de por ahi, pero es lo que entendi del tema), imagenes y texto (libres), espero sea entendible, trate de explicarlo lo mejor que pude, por ahora les dejo esto.

REDES NEURONALES ARTIFICIALES 1

REDES NEURONALES ARTIFICIALES

Veamos algo más directo, que información teórica se encuentra ya a montones, y me parece que son más definiciones matemáticas, veamos algo un poco más práctico.

LA NEURONA BIOLOGICA.
A manera de introducción, se puede hacer referencia a la neurona biológica, que como ya sabemos consta de tres partes principales, las dendritas, el cuerpo celular de la neurona (soma) y el axón, funcionalmente la neurona recibe información por las dendritas, la procesa en el cuerpo celular, y la reacción se emite por el axón, dependiendo donde se encuentre la neurona, trasmitirá esa información de salida a otras neuronas o a los músculos.



Haciendo una comparación funcional, con la electrónica, si quisiéramos compararla con un circuito, si fuera analógico, podríamos hacerlo con un amplificador sumador, y en el mundo digital, con cualquier procesador, específicamente en nuestro caso podemos hacerlo con un PIC o cualquier otro microcontrolador.

Como vemos en la figura, la sinapsis se realiza de la salida del axón, a las dendritas de otra neurona, las cuales llevan la información al cuerpo celular para procesarla, y transmitirla al axón nuevamente, lo cual hacemos en todos nuestros circuitos, tenemos una(as) entrada(s), y una(s) salida(s), el detalle es en como se procesa la información, implementando un método de control común, podemos encontrarnos desde un algoritmo simple hasta uno muy complejo, según sea la necesidad, pero utilizando una neurona o una red neuronal, el algoritmo siempre será el mismo.

LA NEURONA ARTIFICIAL.
Ya habiendo visto las semejanzas, veremos como procesa la información la neurona., para lo cual veremos como realiza su sinapsis.



Lo que tiene que hacer la neurona artificial es multiplicar cada entrada por su respectivo peso, lo mismo que el peso umbral, que normalmente su entrada es -1 (pero se puede utilizar otro valor, según sea el caso, pero eso se vera más adelante), y sumar esos resultados, esa sumatoria se llama la “regla de propagación”, ese resultado pasa a ser evaluado por otra función que es la “función de activación” cuyo resultado es efectivamente la salida de la neurona artificial, esta función de salida dependerá del tipo de neurona que se utilice.

La regla de propagación mas común, es la vista en la figura.

Como hemos visto, lo único que tiene que hacer nuestra neurona es multiplicar y luego sumar, para luego aplicar una función a la salida

FUNCION DE ACTIVACION
Veremos un cuadro de las más comunes.

FUNCIONRANGOGRAFICA
IDENTIDADy = x[-inf, +inf]
ESCALONy = signo(x)
y = H(x)
{-1,+1}
{0,+1}
LINEAL A TRAMOS       -1, si x<-1
y =  x, si -1<=x<=+1
        +1, si x>+1
[-1,+1]
SIGMOIDEA          1
y = -------
       1+e^(-x)
y = tgh(x)
[0,+1]


[-1,+1]
GAUSSIANAy = A.e^(-Bx^2)[0,+1]
A la próxima espero poder dejarles un programa de ejemplo para ilustrar mejor el tema, tambien tratare de explicar como es el proceso de aprendizaje, y si hay algun error, ps avisen, pa corregirlo...    8)
« Última modificación: 05 de Enero de 2008, 14:58:20 por eto »
No borro mis errores, al contrario los mantengo a la vista para no cometerlos otra vez.

Mi Web

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #41 en: 05 de Enero de 2008, 04:41:16 »
Gracias por el esfuerzo Eto. Creo que si no aprendo leyendo tus posts, ya no aprenderé de ninguna otra manera.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #42 en: 05 de Enero de 2008, 07:30:19 »

HOla eto!!

Estoy muy atento a lo que posteas , muy interesante el tema y muy entendible la manera en que lo explicas.


GRacias por la info !!!

P.D.  ¿ Puedes arreglar estos enlaces ?? o no son enlances?

Citar
REDES NEURONALES ARTIFICIALES 1

REDES NEURONALES ARTIFICIALES

Gracias de nuevo!

Atentamente
 Akenafab

Desconectado eto

  • PIC12
  • **
  • Mensajes: 64
    • Programacion y Electronica
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #43 en: 05 de Enero de 2008, 15:02:02 »
Hola.
Gracias AKENAFAB por los comentarios, respecto a los enlaces que mencionas, no son enlaces, solo son los titulos, pero ya lo arregle.
No borro mis errores, al contrario los mantengo a la vista para no cometerlos otra vez.

Mi Web

Desconectado eto

  • PIC12
  • **
  • Mensajes: 64
    • Programacion y Electronica
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #44 en: 04 de Febrero de 2008, 04:19:36 »
hola de nuevo amigos, mil disculpas por dejar abandonado el tema, pero me encontraba con algo de trabajo, bueno aun lo estoy pero tambien estoy con el tema de las RNA en la cabeza, asi que les dejo un poco mas de info, saliendo del tema un poco a alguien alguna vez le paso que el compilador de C++ o el C se le volviera loco??, le comento que a mi no me responde muy bien que digamos, bueno el punto es que cuando declaro una matriz el segundo termino siempre me devuelve de valor igual a "1", y no he podido solucionar este problema, asi que estube haciendo el programa para el entrenamiento en Delphi, pero veo que no muchos manejan este lenguaje, asi que les pediria que me dijeran si puedo continuar o tal vez seria más comodo hacerlo en VB, bueno espero sus respuestas.

regresando al tema.  8)

REDES NEURONALES ARIFICIALES 2

Antes de empezar debemos recordar que el conocimiento acumulado por la red esta en los PESOS.

APRENDIZAJE.
REDES SUPERVISADAS.

Bueno primero veremos el aprendizaje Hebbiano (desarrollado por Donal Hebb), con el asociador lineal, que creo la mayoría de libros empiezan por el, así que si encuentran alguno no nos saltearemos mucho su temario.

Básicamente lo que hace este modelo de aprendizaje es asociar un grupo de entradas con otro de salidas previstas con anterioridad o salidas deseadas.

Lo interesante de las redes neuronales artificiales es que al presentarles en patrón de entrada parecido a alguno que tenga memorizado nos dará de salida un patrón de salida también parecido, es decir que si tenemos para una entrada X una salida Y, y le presentamos una entrada (X + d) tendremos a la salida (Y + e) con (d,e) cantidades pequeñas, lo que no ocurriría con un sistema experto por ejemplo.

El asociador lineal con una función de activación identidad tendrá como salida.

Y = Suma(Wij*Xj)

Entonces el problema es justamente encontrar los pesos que nos ayuden a cumplir con esta función, para eso el algoritmo de aprendizaje trata de encontrar dichos pesos realizando comparaciones entre la salida deseada y la obtenida, probando una y otra vez con las diferentes entradas que se le presentan a la red, modificando los pesos de acuerdo a la siguiente regla de actualización.

Delta(W) = e*Yoi*Xj , con e = <0,1>

Este tipo de aprendizaje rpresenta la base para la mayoria de reglas de aprendizaje pero puede llegar a ser muy restrictivo con respecto a cuantos pares de patrones puede relacionar, esto debido a que por la forma que tiene la regla de actualización, los patrones de entrada deben ser ortonormales es decir.

Para: W = Yo1*X1’ + Yo2*X2’ + … + Yon*Xn’
Y = Suma(W*Xu) = (Yo1*X1’ + Yo2*X2’ + … + Yon*Xn’)*Xu =
= Yo1*(X1’*Xu) + … + You*(Xu’*Xu) + … + Yon*(Xn’*Xu) = You

Con:
X = vector de entradas.
W = vector de pesos
Y = vector de salidas.
Xu = patrón de entrada U-ésimo.
You = patrón de salida U-ésimo.
Xu’ = traspuesta del patrón de entrada U-ésimo.

LA REGLA DE APRENDIZAJE.
El objetivo de la regla de aprendizaje es llegara encontrar el grupo (patrón) de pesos que combinados con las entradas nos den la salida correcta, y hacerlo de la forma mas rápida posible, tratando de minimizar el error de la red al interpretar las entradas optimizando los pesos.

EL PERCEPTRON SIMPLE
“El perceptrón simple es un modelo unidireccional, compuesto por dos capas de neuronas, una sensorial, y otra de salida. La operación de una red de este tipo, con N neuronas de entrada y M de salida, se puede expresar como

Yi(t) = f(suma(de j=1 hasta N)[Wij*Xj - thi]) , para todo 1<=i<=M” [REDES NEURONALES Y SISTEMAS DIFUSOS, pag.47]

Por ahora llego hasta ahi, espero sus respuestas para poder ilustrar mejor lo escrito, ya que mejor es verlo en practica :D
No borro mis errores, al contrario los mantengo a la vista para no cometerlos otra vez.

Mi Web