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!


.

martes, 7 de agosto de 2012

Redes Neuronales Artificiales

Proyecto de Redes Neuronales 


Hola, la idea de mi proyecto es aplicar las redes neuronales para poder "descifrar" o resolver los captchas que nos piden algunos servidores de datos, o páginas de películas como Cuevana (los contra spybots). Lo que quiero hacer es primeramente que el programa te de la oportunidad de seleccionar el área donde se encuentran los caracteres que va a descifrar, luego ya por medio de una red neuronal obtener la salida correcta de los caracteres de una manera que nosotros podamos copiar y pegar, o en su defecto solo transcribir. La siguiente imagen es la solicitud de captcha que les comento: 





La entrada de la red neuronal sería la imagen con los caracteres a "descifrar" y la salida serían los mismos caracteres descifrados. Mi idea es que aparezca para solo copiar y pegar, pero algunos captchas no aceptan el copy-paste, en ese caso tendriamos que transcribirlo.


Cualquier aclaración o comentario pueden dejarlo en comentarios.

Saludos!