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

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

Desconectado jpernesto_666

  • PIC10
  • *
  • Mensajes: 13
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #45 en: 24 de Septiembre de 2008, 02:38:06 »
Hola,hace tiempo estaba estudiando un poco sobre RNA's,pero como no entendia mucho lo deje jeje,pero encontre este foro,lo retomare,esta muy interesante esto,saludos!. :c) 8)

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #46 en: 30 de Octubre de 2008, 09:06:07 »
eto no puedo descargar lo que adjuntaste a tus mensajes. Podrías enviármelo o solucionar el problema por favor??


Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #47 en: 31 de Octubre de 2008, 17:08:21 »
Buenas,

adjunto un trabajo de redes hecho para matlab5 que hice para la uni.

Tambien cree un video que esta en youtube:

Se trata de reconocimiento de 5 caracteres. Existe un conjunto de datos para entrenar la red, que contiene unas 6 formas diferentes de cada letra (letra_x.mat).. Se pueden añadir mas letras, y añadir ruido a estas para probar la red. los archivos pes_x.mat son los pesos de la red.
La red implementada es una red multicapa (ahora no recuerdo la cantidad de neuronas que use al final jeje). Ejecutar visual.m para ver el funcionamiento.

Un saludo. Dani.

Desconectado eto

  • PIC12
  • **
  • Mensajes: 64
    • Programacion y Electronica
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #48 en: 31 de Octubre de 2008, 20:13:29 »
Hola TREMENS, bueno no es mucho lo que adjunto y el link está bien, al menos no tube problemas en descargarlo, pero igual te dejo los links individuales para que puedas descargarlos.

Este es el mismo  post que tengo más adelante, solo esta en word, es mi explicacion de redes neuronales, que por cierto aun no puedo acabar la segunda parte.  :oops:

El otro es un pequeño ejemplo de la utilizacion de una neurona en matlab que nos pidieron en la universidad.

PD. Solo dale a donde dice download en la parte de abajo; el ejemplo de matlab es para la version 6.5, creo que algunas veces puede importar esa diferencia, solo porsiacaso. Si aun hay problemas avisame porfavor y lo subo al foro, los puse en ese sitio para no sobrecargar el espacio del foro.

« Última modificación: 31 de Octubre de 2008, 20:18:30 por eto »
No borro mis errores, al contrario los mantengo a la vista para no cometerlos otra vez.

Mi Web

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #49 en: 05 de Abril de 2009, 20:46:31 »
Hola

Estoy depurando mi algoritmo para el perceptrón multicapa con retropropagación y a falta de buenas fuentes bibliográficas recurro a la ayuda del foro.

Ya implementé todo el algoritmo y entrené la función XOR exitosamente. Ahora estoy enseñándole al algoritmo una ecuación definida a trozos y el objetivo es que la red neuronal la aprenda bien.

Mi problema es que la curva de error total (promedio de la suma de los errores cuadráticos medios por patrón) a veces sube y a veces baja, oscila. Lo normal es que el error siempre decrezca tal y como se ve en la figura siguiente. Eso hasta donde sé, porque también tengo dudas al respecto.



pero lo que estoy obteniendo es esto:



Se observa que el error no baja siempre, hay veces en que el error sube demasiado y luego baja.

Desafortunadamente mi profesor no conoce el algoritmo ni las ecuaciones correctas de la retropropagación y estoy usando el método 'prueba y error'.

Si alguien tiene alguna sugerencia será bienvenida. Gracias.
« Última modificación: 05 de Abril de 2009, 20:55:57 por migsantiago »

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #50 en: 06 de Abril de 2009, 17:08:40 »
Agrego más datos de mi algoritmo...

1 neurona de entrada
10 neuronas en 1 capa oculta
1 neurona de salida (función lineal)

La función la tabulé en 200 puntos (200 patrones de entrada).

Pasos del algoritmo
* Hago la propagación hacia adelante dejando la última neurona lineal
* Calculo delta de la neurona de salida
* Calculo delta de las neuronas ocultas
* Actualizo pesos y umbrales de salida
* Actualizo pesos y umbrales restantes

Las ecuaciones de delta, pesos y umbrales son:



EDITO:
Apliqué una normalización a los datos de la salida y cambié la función de lineal a sigmoidal y la curva de error empezó a comportarse normalmente.  :-/



Por ahora, problema resuelto  :D Y todo por no querer normalizar los datos  :P
« Última modificación: 06 de Abril de 2009, 19:42:10 por migsantiago »

Desconectado Pericles87

  • PIC10
  • *
  • Mensajes: 2
RNA (Redes Neuronales Artificiales)
« Respuesta #51 en: 27 de Abril de 2009, 01:28:48 »
esta es primer participacion en este foro y en cualquier foro en general, soy estudiante de ing. de control en la U. nacional de Colombia- Medellin.
actualmente estoy en un proyecto de investigacion en redes neuronales artificiales con el fin de montar un sistema de procesamiento de datos de censores de posicion, y la red se montara en microcontroladores. por ahora la serie que se tiene pensado usar es la 18fxxx, que tenga conexion directa USB para evitar problemas con el serial. la el modelo de la RNA ya se tiene definido: 4-7-5-3 (4 neuronas en capa de entrada, 7 primera capa oculta, 5 segunda capa oculta, 3 capa de salida) con retropropagacion y funcion sigmoidea. la red se esta simulando en el GUI nntool de matlab y tambien conJust Neral Network, un demo de un software bastante completo aunque con algunas limitaciones.
los problemas con que contamos en estos momentos son:
eleccion definitiva del PIC a usar, creemos ke esta serie va bien, pero aun hay dudas con la capacidad de memoria. sugerencias?
funciones de la red (aprendizaje, activacion, etc) en lenguage c para programar el PIC.

en la actualidad dispongo de mucha teoria sobre redes, pero no tengo claras las politicas para poner esta info. en el foro, asi que si me aclaran esto se los agradesco.

asi que estoy disponible para ayudar al que este interesado en este tema tan interesante y de antemano muchas gracias por la colaboracion.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #52 en: 27 de Abril de 2009, 02:14:03 »
Podrás publicar aquí toda la información que sea de libre distribución. Mira las reglas del foro.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #53 en: 27 de Abril de 2009, 10:54:24 »
eleccion definitiva del PIC a usar, creemos ke esta serie va bien, pero aun hay dudas con la capacidad de memoria. sugerencias?
funciones de la red (aprendizaje, activacion, etc) en lenguage c para programar el PIC.

en la actualidad dispongo de mucha teoria sobre redes, pero no tengo claras las politicas para poner esta info. en el foro, asi que si me aclaran esto se los agradesco.

asi que estoy disponible para ayudar al que este interesado en este tema tan interesante y de antemano muchas gracias por la colaboracion.

Hola y bienvenido

Actualmente yo también estoy trabajando RNA. Ya terminé mi algoritmo para backprop y ahora estoy trabajando las redes de base radial.

Para montar una RNA en un pic, yo la entrenaría en la pc y cargaría los pesos y umbrales ya entrenados en el pic para aligerar la programación. Tienes que definir qué compilador de C usarás, los más usados aquí son el C18 de Microchip y el CCS.

Necesitarás matrices de pesos flotantes del siguiente tamaño:

Capa entrada a 1a capa oculta: 4x7= 28 flotantes
1a capa oculta a 2a capa oculta: 7x5 = 35 flotantes
2a capa oculta a capa de salida: 5x3 = 15 flotantes

Y arreglos de umbrales de los siguientes tamaño:

1a capa oculta: 7 flotantes
2a capa oculta: 5 flotantes
capa salida: 3 umbrales

Total de flotantes: 93

Total de memoria: 93 flotantes x 4bytes = 372bytes

Estos datos al ser fijos podrán almacenarse en memoria de programa ROM.

Ahora hay que considerar que se tendrán las activaciones de las neuronas.

Activaciones:
4 de entrada
7 de 1a oculta
5 de 2a oculta
3 de salida
Total: 19 flotantes

19 flotantes x 4bytes= 76bytes

Esto se deberá montar en RAM.

El algoritmo de propagación no es grande, la función más compleja es la sigmoidal, pero haciéndolo en c se facilita.

Ahí tienes un estimado de cuánta memoria emplearás. Creo que casi cualquier pic actual te da el ancho para tu problema. El PIC18F4550 es ideal ya que cuenta con USB.

Desconectado Pericles87

  • PIC10
  • *
  • Mensajes: 2
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #54 en: 30 de Abril de 2009, 02:08:35 »
Agradezco mucho por la información, eso era exactamente lo que necesitaba y no lo sabía hacer. Respecto a la función sigmoidea encontré en un artículo una aproximación recomendada para montar en un PIC que no hace uso del exponente:

Y= ( ( (1/2) + ((x + |(x)| ) / 4 ) )/(2^(|(x)|)))     C.Alipi simple approximation of sigmoidal function.

La trate de copiar lo mejor que pude pero ese es el autor y una parte del nombre del articulo.
En fin considero que es más adecuada esa función, y ocupa menos espacio. Que opinan?
Estoy trabajando en ccs, y estoy trabajando en las funciones de activación, les estaré informando sobre los avances y luego de pronto monte un video de la red funcionando (en un futuro mediano). De nuevo muchas gracias por la ayuda y por recibirme en este ameno foro.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #55 en: 30 de Abril de 2009, 12:28:22 »
Agradezco mucho por la información, eso era exactamente lo que necesitaba y no lo sabía hacer. Respecto a la función sigmoidea encontré en un artículo una aproximación recomendada para montar en un PIC que no hace uso del exponente:

Y= ( ( (1/2) + ((x + |(x)| ) / 4 ) )/(2^(|(x)|)))     C.Alipi simple approximation of sigmoidal function.

La trate de copiar lo mejor que pude pero ese es el autor y una parte del nombre del articulo.
En fin considero que es más adecuada esa función, y ocupa menos espacio. Que opinan?
Estoy trabajando en ccs, y estoy trabajando en las funciones de activación, les estaré informando sobre los avances y luego de pronto monte un video de la red funcionando (en un futuro mediano). De nuevo muchas gracias por la ayuda y por recibirme en este ameno foro.


¿Podrías dar un link al lugar en donde lo encontraste?

CCS sí cuenta con exponentes: exp(). Usando un pic18f4550 dudo que nos falte ram o rom al usarla. Si tu algoritmo requiere velocidad talvez sí sea buena idea usar la aproximación de arriba.

« Última modificación: 30 de Abril de 2009, 12:31:30 por migsantiago »

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #56 en: 11 de Septiembre de 2009, 23:35:53 »
Quizá tu problema esté en que particionaste mal los datos o hacés mal la validación cruzada en el entrenamiento. Revisá eso Migsantiago.

Saludos

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #57 en: 12 de Septiembre de 2009, 10:46:56 »
Hola Tremens

Hace ya meses que logré limpiar la curva de error de entrenamiento. Mi problema era que no realizaba correctamente la normalización de los datos de entrenamiento.

Hay que normalizar cada columna de los datos de forma independiente y yo no normalizaba nada o normalizaba todos los datos como uno solo.

Gracias por tu respuesta.

Desconectado TREMENS

  • PIC16
  • ***
  • Mensajes: 125
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #58 en: 12 de Septiembre de 2009, 14:25:51 »
Hola Pericles, solo quería hacerte la observación de que si usás la aproximación de la exponencial al programar el pic, eso implica que cuando entrenes tu RN fuera del pic tengas que usar esa aproximacion como funciones de activación donde corresponda.

Saludos
Tremens

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: RNA (Redes Neuronales Artificiales)
« Respuesta #59 en: 12 de Septiembre de 2009, 14:30:03 »
Tremens, es decir que si yo entreno mi red en una PC y luego ingreso los pesos y deltas al PIC... ¿los valores de salida serán diferentes porque el logaritmo no es exacto en el PIC comparado con el logaritmo de la PC?