Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: brians444 en 25 Octubre 2011, 07:03 am



Título: Red Neuronal (BackPropagation)
Publicado por: brians444 en 25 Octubre 2011, 07:03 am
Hola gente! como les va?

Soy nuevo en el foro, y como muchos es en busca de ayuda, aunque espero aportar tambien.

El caso es que desarrolle en c++ una aplicacion para simular redes neuronales, de cualkier cantidad de capas y cualkier cantidad de entradas o salidas. Para los conocidos del tema, la red entrena y minimiza el error, pero al probarlo para el patron entrenado la red no responde como deberia. He revisado todas las formulas de entrenamiento y estan todas bien (tengo mis dudas igual)...

Para no subir el codigo aqui he creado un proyecto en https://sourceforge.net/projects/neuronallab/files/ (https://sourceforge.net/projects/neuronallab/files/) .

El entrenamiento se hace desde un archivo al igual que la ejecución, creo q esta un poco inmaduro el codigo todavia debido a mi desorden al programar, pero la idea es ir mejorandolo.

bienvenido sea cualkiera que se quiera sumar al proyecto, la idea mas adelante es hacerle una interfaz grafica  con wxWidgets para simulaciones, asi como tambien agregar otro tipos de redes neuronales..

saludos

PD: el proyecto esta hecho con el ide Codeblocks y lo he probado en debian 6, pero si les sirve subo para que lo compilen con make

Por comodidad lo subi tambien a : https://code.google.com/p/neuronallab/ (https://code.google.com/p/neuronallab/)


Título: Re: Red Neuronal (BackPropagation)
Publicado por: cioran en 6 Diciembre 2011, 04:59 am
saludo, hace unos meses al hacer mi servicio social me puse a programar redes neoronales, y como buen teorico (mat-fis) me puse a entender el funcionamiento para diseñar las redes, por lo que veo confias en formulas, lo que quiebra proyectos. Hoy  retomo el asunto porque quiero usar otros lenguajes y esto de las nra me emociona. Me interesa el proyecto, estoy releyendo para crear redes, pero te propongo que comencemos por los principios (tu simulador es muy ambicioso). Luego o  a la par crear de cada tipo de rna una aplicación simple, pasar luego a uso de librerias y  hacer finalmente un simulador. Encontre un programa simple en java para reconocimiento de patrones simples (letras) tu dibujas algo y te dice cual es la letra más parecida, en cuanto lo reencuentre lo comparto. Estoy estudiando las redes y tomando apuntes en cunato tenga algo lo subo, la idea es ir colocando principio y aplicaciones con sus debiadas explicaciones.

EI: juntando mensajes.

Para que se integren al proyecto, les paso una sitio con material para que tengan bases.
http://perso.wanadoo.es/alimanya/index2.html

Estoy releendo sobre redes de hopfiel, en la pagina que les comparto viene una explicacion muy buena con un ejemplo practico, quiza a la primera sea confuso pero tenganlo a mano porque ilustara como crear una memora asociativa. Ahora estoy viendo como construir una red que le pase patrones en binario y los recuerde, la idea es crear dotar de sensibilidad y memoria a una ia.

Memorias olfativas
Hace unas semanas escuche a Georgina Montemayor (una tia que habla sobre el cerebro) decia que las memorias olfativas no se procesan y que sus identificadores (neuronas o redes) se conectan directamente de las celulas nerviosas de la nariz hasta el cerebro, a direfencia de las memorias o recuerdos de los sabores (estos se pueden combinar y extrapolar, decir "entre coco y queso") en el caso de los olores, lo que nos permite identificarlos tienen un deposito concreto en el cerebro, algo así como memoria idetica - memoria exclusiva, si lo que cuenta Georgina y si lo interprete correctamente sugiere dos mecanismos distintos de memoria. Uno, el clasico es el asociativo que igual simulamos con Hopfield y otro que tenemos que desarrollar no asociatvo, o no predominantemente asociativo o mas exclusivo, cosa extraña para la naturaleza dispersa de las rna.

Programando
Sobre la programación, estoy probando python (me gusta mucho) y c/c++, aunque tener en cuenta que hay material interesante en java y mas aun el poder multihilo de java que es ideal para las rna. EN python he visto algo y me pareció confuso y en java se claro. Quiza sea cosa de estudiarlo con cuidado, si alguien conoce una buena explicacion del trabajo distribuido en python comparta aquí.
En cuanto tenga listo mi red de hopfield la comparto junto al perceptron, ojala se integren al proyecto.


Título: Re: Red Neuronal (BackPropagation)
Publicado por: brians444 en 26 Enero 2012, 14:31 pm
Hola cioran! Disculpa mi tardanza, es que estuve en epoca de finales, y luego me di unas vacaciones. Me gusta tu idea, de hacer varias aplicaciones con distintas rna, para poder entender los diferentes modelos!
En lo que respecta a las formulas, confio en ellas por q estan sacadas del libro "Redes Neuronales y Sistemas Difusos" de Martin del Brio, y "Redes Neuronales Artificiales"  José R. Hilera y Victor J Martinez.

Respecto a la programacion, en C/C++ o Python puedo ayudarte, con java no asi! Creo q por la necesidad de rapidez en calculo, siempre es conveniente un lenguaje compilado. Igual por si quieres un lindo tutorial de python que explica Threads de manera sencilla mira este : http://mundogeek.net/tutorial-python/ .

En el caso del perceptron simple, si te sirve te paso un simulador que hice (c++) y que me ha funcionado bien al que todavia se le podria agregar una interfaz grafica sencilla..

Actualmente estoy escribiendo un capitulo sencillo de redes neuronales (backpropagation), para un libro de un profesor mio, que cuando lo tenga terminado lo subire como apunte y podre dedicarme a la programacion!