lunes, 20 de agosto de 2012

Creando una red Neuronal

Iniciando una red neuronal en Python


Hola, para esta tarea la Doctora Elisa nos encargó iniciar la construcción de una red neuronal, decidí usar Python por "simpleza" y limpieza del código, además que lo vi como una área de oportunidad para aprender este lenguaje (solo conozco lo básico, muy básico).

Bueno para agarrar el hilo, lo que nos explicó la Dra. es que tendríamaleatoriaos una cadena de entradas binarias (0110), esta cadena la tomaría como entradas la red neuronal y además la cadena tiene que ser aleatoria.

Lo siguiente es que cada entrada tendría un peso asignado de manera aleatoria, y los pesos serían numeros entre -1 y 1, por ejemplo:  -.5, .7, .3, etc.

Después multiplicariamos cada entrada binaria aleatoria por su respectvo peso y sumariamos todos los resultados, por ejemplo, para una cadena binaria: 0101 con pesos de .1, .5, .7, .3 respectivamente sería: Sumatoria = 0(.1) + 1(.5) + 0(.7) + 1(.3) = 0 + .5 + 0 + .3 = .8.

Al final esa sumatoria se compararía con un valor númerico (obviamente) predefinido umbral, si la sumatoria es menor al umbral la salida sería un binario 1, si sucede lo contrario la salida sería un binario 0.

En realidad la condición para determinar la salida se diseña dependiendo de la aplicación y propósito de la red neuronal, por ejemplo podría ser que si sumatoria es mayor a umbral la salida arroje 1, o que si la sumatoria es 2 veces el umbral arroje 1, esto repito, depende del propósito para el cual estamos construyendo la red neuronal.

Bien, a continuación les dejo el código que desarrollé:



También les dejo una captura de pantalla del programa corriendo:

Para esta ejecución del programa se puede apreciar que la cadena binaria se llenó aleatoriamente con: (0111), y los pesos para cada entrada salieron negativos cada uno, debido a eso, la suma total salió = -2.30934844622.

Si recuerdan en el código que puse arriba, el umbral lo definí en 0.7, y como suma  (-2.30934844622) es menor a 0.7 la salida arrojó un 1, de lo contrario hubiera arrojado un 0.





Aquí les dejo otra ejecución del programa con salida = 0, debido a que la suma (0.869347482808) resulto mayor a 0.7





Cualquier aclaración o duda pueden dejarla en comentarios.

Saludos!


.

2 comentarios: