lunes, 19 de noviembre de 2012

Reporte #2




Buenas compañeros y demás gente que visitan este blogg, en esta ocasión mostraremos  un pequeño demo sobre un proyecto de redes neuronales.

Algo de recapitulación:


El proyecto trata de realizar un videojuego de peleas donde la cpu aprenderá mientras se ejecute el programa, ademas de tener una aprendizaje no supervisado en donde no interviene algún maestro.

Primero que nada aquí nuestra nueva red neuronal, modificamos la primera por algunas pruebas que se realizaron y decidimos recrearla dejándolo de la siguiente manera:

En esta red neuronal le agregamos dos neuronas más, ahora tenemos dos diferentes salidas, cuando anteriormente solo teníamos una salida, Una neurona nos maneja el control de movimiento ya sea izquierda o derecha, y la otra nos maneja el golpe o la defensa de nuestro personaje (CPU).

Aquí menciono nuevamente los parámetros de entrada de la red neuronal:
  • Defensa: Cuando el usuario pone defensa, para que cuando esto suceda el cpu se desplace
  • Hpu: Valor de la vida del usuario
  • Hpo: Valor de la vida del oponente, pensando en que si el cpu tiene ventaja, tome iniciativa
  • Repeticiones: Cantidad de ataques del oponente en un lapso de tiempo, esto si es necesario cuidarse del usuario.
  • Ataque: tipo de ataque del usuario, para esquivar.
  • Distancia: Distancia entre el usuario y el cpu, para mantener cierta relación a la hora de moverse el cpu.
Cada una de las neuronas de las capas tiene su propia función de activación.

Para el entrenamiento se utilizo algo llamado Regla de Hebb, esta regla es muy parecido al aprendizaje competitivo, esta regla le da prioridad a todas aquellas neuronas que se activan haciéndolas mas fuertes, y aquellas que no se activan las hace mas débiles.
También se trato de usar una función kernel Gaussiana pero sin los resultados óptimos esperados.


Para este Demo del proyecto realice lo siguiente:

Para lo que fue esta entrega se realizo varias reuniones con el equipo para verificar que todo estuviera bien, y varios fragmentos de código se fueron modificando a través de los tres miembros que conforman el equipo.

En lo personal:

Modifique un poco la estructura de la red neuronal, reconfigure los diferentes funciones de la red junto con mis compañeros Obed y Jose Guadalpue, ademas de limpiar un poco el código y crear parte de las funciones para almacenar los datos, en este caso de los pesos en txt y parte del entrenamiento.

Aquí el código de la parte de la neurona




Aquí el código del loop principal del programa:  Aquí la función kernel: Aquí el repositorio por si lo quieren descargar

CLICK AQUÍ PARA IR AL REPOSITORIO

Integrantes del equipo:

Obed Guevara
José Guadalupe

Thats all my friends






domingo, 7 de octubre de 2012

Reporte # 1 redes neuronales

Redes Neuronales Proyecto



Nuestro proyecto es crear un juego de peleas donde el cpu tratara de aprender del usuario y mejorar con forme pase el tiempo, usando una red neuronal.

(Diagrama hecho por ave y obed)
Entradas que consideramos:
Defensa: Cuando el usuario pone defensa 
Pensando en que cuando esto suseda el cpu se desplaze
Hpu: Valor de la vida del usuario
Hpo: Valor de la vida del oponente
Pensando en que si el cpu tiene ventaja, tome iniciativa
Repeticiones: Cantidad de ataques del oponente en un lapso de tiempo
Pensando si es necesario cuidarse del usuario
Ataque: tipo de ataque del usuario
Para esquivar
Distancia: Distancia entre el usuario y el cpu
Para mantener cierta relacional al hora de moverse le cpu


Esta entrada de datos entran  como 0 y 1 los parametros Defensa,  ataque, ya que solo se toma cuando el usuari apreciona sus respectiva teclas.

Los valores de distanca, repeticiones,Hpu y Hpo tiene valores diversos ya que esto depende de como valla pasando la pelea.

Consideramos utilizar dos capas para sacar una salida aceptable y con esta salida realizar los diferentes tipos de movimientos del cpu(enemigo) respecto a las entradas.

Respecto a lo que realice para este demo fue lo siguiente :

Codificación de parte de la red neuronal(valores de entrada, capa de entrada y parte de las capas intermedias y salidas).  Las creación del personaje enemigo(mario) con respecto a sus movimientos y librerias  las hice junto con mi compañero obed .

Aqui el codigo1:

Aqui el codigo1:

colisiones para reducir hp

Aqui código2



Aqui código2

En el código del demo comentarisamos las partes, quien hizo cada quien.

Pienso que se ocuparia una red no superficada, seria mas intuitivo para el cpu aprender por si mismo del usuario, que darle valores predefinidos y comparar las salidas con unas ya establecidas



lunes, 20 de agosto de 2012

Una neurona:


Las redes de neuronas artificiales (denominadas habitualmente como RNA o en inglés como: "ANN"1 ) son un paradigma de aprendizaje y procesamiento automático inspirado en la forma en que funciona el sistema nervioso de los animales. Se trata de un sistema de interconexión de neuronas en una red que colabora para producir un estímulo de salida. En inteligencia artificial es frecuente referirse a ellas como redes de neuronas o redes neuronales.

referencia: WIKI



Aqui una imagen:

Aqui el programa en python

martes, 7 de agosto de 2012

Idea para redes neuronales

Reconocimiento facial para sistemas de seguridad



Hoy en día en la actualidad los sistemas de seguridad ya sean bancario o dentro del mismo hogar se han  modificado en el paso del tiempo, estos sistemas de seguridad se puede utilizar para identificar a la persona ya sea para abrir alguna caja fuerte ya sea en el hogar o para abrir alguna caja fuerte en alguna sucursal bancaria.


El reconocimiento facial es una aplicación que reconoce a una persona mediante un análisis de las características faciales del sujeto extraídas del sujeto ya sea por medio de una imagen o en vivo ya sea por medio de una cámara (fuente de vídeo) y utilizando una red neuronal para identificar si es el sujeto o no.


Porque la idea?

En la mayoría de los bancos utilizan seguridad a través de claves o llaves ya sean normales o electrónicas o reconocimiento de la retina, pero esto hace que no sea 100 % seguro, este tipo de modelo de reconocimiento fácil seria una mejor seguridad para las personas ya sea para sus cuentas u objetos de sumo valor en las cajas


Entrada de datos:
Los rasgos faciales




Salida:
Es o no es el sujeto?

Librerías?, Se puede utilizar la librería de Opencv que es de desarrollo libre para el lenguaje de programación python






Juego a través de redes neuronales

Este juego tratara de dos simples nave una ser controlador manualmente por un usuario y la otra nave sera controlado por una maquina tomando sus desiciones por medio de redes neuronales.




El juego en si tratara de una "pelea espacial" entre estas dos naves una en el lado izquierdo y otra en el lado derecho y cada una de las naves  tendrán movimientos iguales como el desplazamiento y la velocidad de disparo. Y cada una de las naves contara con un disparo igual e ilimitado con una fuerza débil. Pero también contara diferentes tipos de disparos mas fuertes y de diferentes formas pero con munición limitada.


Que hará la maquina solo esquivar y sera todo?

La respuesta obvia de esto es no, Puesto que la maquina tomara una serie de decisiones tales como:

1-. Usar diferentes tipos de armas en un momento especifico donde sea conveniente
2-. Esquivar los ataques enemigos y predecir ataques futuros para sobrevivir
3-. Activar su escudo en el momento oportuno
4-. Tomar en cuenta las limitaciones que vallan surgiendo a lo largo del "conflicto" y tomar una decisión adecuada.

IDEA GENERAL QUE SIEMPRE GANE LA CPU SIN IMPORTAR QUE PASE

Librerías posibles a usarse: pygame para el desarrollo del jueguito
AL igual que Soya 3D en caso que sea mas avanzado el juego además que con esta librería se ahorrarían algunas cosas matemáticas



Algo de información sobre Soya 3D:
http://programandoideas.com/soya3d-libreria-para-programar-juegos-en-3d/