Monday, April 20, 2009

Fase III - Red neuronal

Medio ambiente

Nuestro medio ambiente básicamente sigue siendo el mismo. Un programa ahora basado en redes neuronales, que simula las quinielas que se llevan a cabo a fin de apostar en los partidos de basketball de la temporada regular de la NBA, donde los equipos juegan al menos unas 3 veces cada semana. El medio ambiente ha sido programado en el lenguaje C++ y es una aplicación de escritorio con visualización en consola. En esta ocasión, a través del concepto del perceptrón, hemos aplicado el conocimiento generado a través de redes neuronales para enseñar a la computadora a predecir el resultado final de un partido de basketball.

Actividad de aprendizaje

El propósito del agente inteligente, es aprender de acuerdo a los pesos de las estadísticas con que será alimentado, a tomar en cuenta y actualizar estos pesos de manera que se pueda realizar una mejor apuesta por un equipo, es decir, que al recibir una entrada estadística de los resultados de los partidos que ya han sido jugados, utilice la función estocástica de back propagation para regresar un valor entre 0.0 y 1.0, lo cuál indicará si un equipo tiene mayores probabilidades de ganar o perder un partido. Los pesos que se le dan a cada estadística (puntos, asistencias, rebotes, faltas, etc.), se ajustan a medida que los equipos juegan y de esta forma se predice de mejor manera qué equipo tiene una mayor posibilidad de ganar para los siguientes encuentros.
Un aspecto importante a considerar es que la máquina al aprender se beneficia más de los equipos que son en cierta manera más consistentes, ya que le permite aprender de entrenamientos que son más representativos de la realidad.

Solución

I. PATRONES DE APRENDIZAJE
Los patrones de aprendizaje serán las estadísticas de partidos jugados con anterioridad. De estos partidos, se tomarán principalmente 14 diferencias entre los equipos que lo disputaron. Estas estadísticas son compuestas por el porcentaje de los puntos obtenidos, el porcentaje de tiros encestados, rebotes, asistencias, entre otros.
Un ejemplo de estos patrones de aprendizaje sería el de los puntos obtenidos. Si Chicago promedia 6 puntos más de diferencia que Cleveland, entonces la entrada de la red neuronal serían estos 6 puntos de diferencia entre estos equipos. Lo mismo sucederá con las 14 entradas.

II. CODIFICACIÓN DE LA SALIDA DE RED
Tal como lo mencionamos anteriormente, la salida que esperamos de esta red neuronal es muy simple. Se trata de un valor flotante entre 0.0 y 1.0, el cuál indicará, según a qué se aproxime más, si un equipo ganaría o perdería dependiendo de lo que determine la red para el caso de ambos equipos.

III. TIPO DE RED NEURONAL
Se trata de una red neuronal estocástica que utiliza back propagation como método de actualización.

IV. CAPAS DE LA RED NEURONAL
Se trata de una red de 3 capas: Input, Hidden y Output
La capa Input ha sido explicada anteriormente. Se trata de 14 entradas de las estadísticas de actuación de los equipos que se medirán.
Dentro de la capa Hidden, se encuentran 8 perceptrones y esta capa utiliza la función sigmoide para calcular el resultado.
Por último, la capa Output, se trata de un solo perceptrón que recolecta la información de la capa oculta para dar un resultado final, ntre 0.0 y 1.0, el cuál indicará a qué equipo se debe apostar. Esta última capa, al igual que la intermedia, utiliza la función sigmoide vista en clase.

V. PARÁMETROS DE LA RED
El código de la red neuronal contiene los parámetros que esta obtendrá:

struct perceptron
{
float valor;
float delta;
float * pesosOut;
int tipo;
};

struct capa
{
perceptron * elementos;
int numeroPerceptrones;
int numeroCapa;
int capaSiguiente;
int capaAnterior;
};

Conclusiones
Una red neuronal tiene la peculiaridad de tomar en cuenta muchas entradas y tener una capar intermedia capaz de conectarlas para obtener datos más precisos de cómo estas entradas se interrelacionan para obtener un resultado. Encontramos que las redes neuronales son excelentes para tratar datos complejos y extensos, como lo son las estadísticas. El problema principal que encontramos fue precisamente el alimentar a esta red con tantos datos.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.