Está en la página 1de 8

1

IMPLEMENTACION BACKPROPAGATION
PARA EL JUEGO THE PONG
Natalie Segura Velandia, u1802061@unimilitar.edu.co,
Oswaldo Rivera Rincon, u1802050@unimilitar.edu.co,

AbstractIn this practical we desinged the tennis game and


implementing artificial intelligence to manage a player using the
multilayer perceptron which seeks to predict behavior that will
have the ball.
Index TermsMultiplayer perceptron.
Resumen En este laboratorio se disea el juego conocido
the pong implementando inteligencia artificial para el manejo de un
jugador utilizando perceptron multicapas con el cual se busca predecir
el comportamiento que tendra la pelota.
0Palabras claves Perceptron Multicapas.

I. INTRODUCCION
En la actualidad la inteligencia artificial se encuentra en
un auge muy importante en esta poca tecnolgica donde
las redes neuronales constituyen uno de los captulos ms
importantes ya que esto es un modelo cerebral donde las
neuronas establecen conexiones entre ellas, de manera que
cuando un animal recibe un estmulo, este comportamiento
es fcilmente caracterizable mediante un modelo matemtico,
el tratamiento de la informacin no va a ser de tipo tradicional
ya que se basa en la evolucin temporal del sistema y en la
interpretacin de ciertos parmetros. El sistema se compone
de un nmero elevado de unidades a las cuales se les llama
Neuronas altamente interconectadas. El entrenamiento de
estas redes, se basa en la presentacin sucesiva y de forma
reiterada, de pares de vectores en las capas de entrada y
salida.[1] La red crea un modelo a base de ajustar sus pesos
en funcin de los vectores de entrenamiento, de forma que
a medida que se pasan estos patrones, para cada vector de
entrada la red producir un valor de salida ms similar al
vector de salida esperado. Estas redes son llamadas tambin
como retro-propagacin nombre que viene dado por el tipo de
aprendizaje.[2][3]

Figure 1. Arquitectura de la Neurona y Funcion de Activacion

Una neurona artificial se implementa de las entradas (x)


se introducen en las dendritas. Cada una posee un peso
(W_ij,neurona j-entrada i). Dentro del cuerpo se aplican diferentes funciones de procesamiento (propagacin, activacin,
salida) hasta llegar al axn (salida y).

Figure 2. Neurona Fisica

Figure 3. Representacion Matematica de una Neurona

II. MARCO TEORICO


A. NEURONA ARTIFICIAL
Es un elemento basico el cual hereda de los principios
neuro-biologicos que describen el comportameinto de las
neuronas en la corteza cerebral.

Figure 4. Representacion Final de una Neurona

Funciones de Activacion
Suelen tener en cuenta el estado anterior de la neurona,

sino solo el potencial hi (t). susle ser una funcion


determinista, continua y monotona creciente. La mas
comunes son la funcion Signo (+1 si hi (t)> 0, -1 en
caso contrario), a funcion semilineal y las funciones
sigmoides.[2]

Naturaleza adaptativa que sustenata la capacidad de


aprendizaje.
Capacidad de generalizacion: a partir de unas entradas se
define un patron.
3) Procesos de Aprendizaje en Sistemas Neuronales: Un
sistema neuronal puede utilizar distintos paradigmas para el
aprendizaje de la red, al igual que distintos algoritmos de
entrenamiento.[4]

Figure 5. Funciones de Activacion

Funcion de Salida
Suele se la identidad. en algunos casos es un valro
umbral (Nerona no se activa hasta que su estado supera
un determinado valor).

Figure 7. Proceso de Aprendizaje


Sistema Supervisado
En las redes se utilizan los sistemas supervisados y el
algoritmo de correccion de error, algunas veces se conoce
como la regla del delta.Cuando hablamos de aprendizaje
supervisado nos referimos al tipo de entrenamiento en el cual
se provee al sistema con informacion de las entradas al igua
que se proveen las salidas esperadas a dichas entrdas a modo
de que el sistema tenga los destinos como punto de referencia
para evaluar su desempeo en baso a la diferencia de estos
valores y modificar los parametros libres. [3]

Figure 6. Modelo de Neurona Simplificado

B. RED NEURONAL ARTIFICIAL


Los nodos se llaman elementos de proceso.
Los enlaces se llaman conexiones y funcionan como
caminos unidireccionales instantaneos.
Cada EP puede tener cualquier numero de conexiones.
Todas las conexiones que salgan de un EP deben tener la
misma seal.
Los EP pueden tener memoria local.
Cada EP posee una funcion de transferencia que, en
funcion de las entradas y la memoria local produce una
seal de salida y altera la memoria local.
Las entradas a la RNA llegan del mundo exterior, mientras que sus salidas son conexiones que abandonan la
RNA.
1) Caracterizacion de una Red Neuronal:
Caracterizacion de la neurona (Unidad basica de computacion).
Definicion de una topologica de interconexion.
Definicion de unas reglas de aprendizaje.
2) Propiedades:
Alto grado de paralelismo: Varias neuronas pueden estar
trabajando a la vez
Facil implementacion Hardware.
Robustez frente a posibles fallos: la infromacion esta
distribuida.

Figure 8. Diagrama de Bloques del Aprendizaje Supervisado


Sistema No Supervisado
En un aprendizaje no supervisado los parametros libres del
sistema son modificados unicamente en base a las entradas
del sistema de manera que aprender a catergorizar las entradas
y clasificarlas sin necesidad de una referencia, pero tiene un
problema para la deteccion de intrusoss ya que no posee
informacion para decidir si un tipo de comportameinto es
normal.[2]

C. PERCEPTRON MULTICAPA
Se basa en un perceptron simple y resuelve de forma
eficiente problemas de clasificacion y reconocimeinto de
partrones.

En el caso del Perceptron multicapa se trata de un algoritmo


de aprendizaje supervisado, es decir, la modificacion de los
parametros se realiza para que la salida de la red sea lo mas
proxima posible a la salida proporcionada por el supervisor
o salida deseada. Por tanto, para cada patron de entrada a
la red es necesario disponer de un patron de salida deseada.
Puesto que el objetivo es que la salida de la red sea lo mas
proxima posible a la salida deseada, el aprendizaje de la red
se formula como un problema de minimizacion del siguiente
modo: 9
M inw E
Siendo W el conjutno de parametro de la red-pesos y
umbrales y E una funcion error que evalua la diferencia entre
las salidas de la red y las salidas deseadas.
Figure 9. Arquitectura del Perceptron Multicapa

Se aaden una o mas capas ocultas. Generalmente una


capa oculta es suficiente.
Se permiten entradas continuas.
Las funciones de activacion son de tipo sigmoide ( puede
ser lineal en la capa de salida).
Obtetivo
Ajustarlos pesos de la red para minimizar el error global.

Figure 13. Funcion Error y para una red

El metodo mas utilizado para minimizar el error total,


el procediiento mas utilizado esta basado en metodos del
gradiente estocastico, los cuales consisten en una sucesiva
minimizacion de los errores para cada patron.
2) Tasa de Aprendizaje y Momento:
Se puede modificar la ley de aprendizaje aadiendo un
termino llamado momento.

Figure 10. Error medio para todos los patrones

Figure 14. Factor Aprendizaje

Figure 11. Error para el patron n

Problema de minimizacion no lineal


Funciones
de activacion no lineales hacen que la respuesta de
la red sea no lineal respecto a los pesos.
Ajuste de los pesos
Sucesiva
minimizacion de los errores para patron e(n); en ligar
de minimizar el error global
Cada peso W se modifica para cada patron de entrada
n de acuerdo con la Ley de Aprendizaje

Figure 12. Modificacion de pesos

1) Algoritmo de Retropopagacion: La regla o algoritmo


de aprendizaje es el mecanismo mediante el cual se van
adaptando y modificando todos los parametros de la red.

El cambio en el peso es proporcional al gradiente


del error, siendo(tasa de aprendizaje) la constante de
proporcionalidad.
Si es muy grande, el error puede oscilar alrededor del
minimo.
Si es muy pequeo, la convergencia de mas lenta.

3) Regla delta generalizada : Es un algoritmo del gradiente, que trata de minimizar el error cuadratico medio.
Se aplica una pareja de ejemplos (x,y).
Se propaga hacia adelante y calculamos la salida real Y.
Se calcula el error segun la diferencia entre y e y.
Se van modificando los pesos hacia atras.
Volvemos al paso 1 hasta que se alcance un cierto valor
minimo de error.
El proceso de entreamiento y minimizacion del error puede
sufrir distintos contratiempos. Uno es el sobreentrenamiento
que hace que cuando la red entrena demasiado, pierda la
capacidad de generalizacion.
El otro fenomeno es el Sobreajuste que ocurre cuando hay
demasiadas neuronas en la capa oculta y que implica tambien
perdida en la capacidad de generalizacion.[1]

E. APRENDIZAJE EN EL PERCEPTRON MULTICAPA

Figure 15. Efecto de Sobreentrenamiento

4) Obtencion de la Regla Delta Generalizada:


Para la Ultima Capa

Se inicializan los pesos y bias (Aleatorios).


Se presenta un patron n de entrenamiento y se propaga
hacia adelante, obteniendo la salida de la red.
Se evalua el error cuadratino e(n) cometido por la red en
cada patron.
Se aplica la regla Delta Generalizada para modificar los
pesos y bias.
Se repiten los paso 2 3 y 4 para todo el patron de
entrenamiento.
Se evalua el error total de la red.
Se repite hasta alcanzar el error minimo de entrenamiento, realizando m ciclos. se pueden establecer criterios de parada.

Figure 16. Ultima Capa

III. PROCEDIMIETO

Figure 17. Factor sgima

Para el Resto de Capas

Figure 22. Arquitectura Neurona

Figure 18. Resto de capas

A. Primero se procede a dibujar en c++ la pelota, el marco,


y los pads.
B. Se procede a realizar al parte de la pelota que rebote en
todo el marco.
C. Se incluyen todas las librerias necesarias para dibujar y
realizar calculos matematicos

Figure 19. Factor sigma

D. PROPIEDADES DEL PERCEPTRON MULTICAPA


La arquitectura dle Perceptron Multicapa preseneta un modelo de capas de neuronas cuya funcion de activacion es una
funcion que trabaja en zonas no lineales. Es importante que
la funcion de activacion sea diferenciable para poder aplicar
el algoritmo de propagacion hacia atras.[5]

Figure 23. Librerias

D. Se realiza la definicion de las clases

Figure 20. Funcion de Activacion Sigmoide

Figure 21. Funcion de Activacion Tangente Hiperbolica

1) JUGADOR:
Se definen las varaibles de datos privados x, y;
Se definen el constructor el cual tiene unos parametros
de entrada _x y _y
Se defienen las funciones que utilizaran la clase jugador
que son: La Funcion Pintar la cual sera constante porque
no se le van a realizar modificaciones sino hara uso de
los datos de la clase.
La Funcion Borra la cual sera constate porque solo
hara uso de los datos de la clase y no se le realizara
modificaciones.
La funcion Mover_pc la cual tiene como parametros de
entrada las coordenadas de la pelota.

La funcion Y la cual tendra de parametro dd entrada la


coordenada _y la cual sirve para manipular la variable
para realizar los incrementos o los decrementos.
La funcion RY la cual retorna el valor y para saber la
posicion del jugador regresa el valor de la coordenada y
del objeto.
La funcion RX la cual retorna el valor x para saber la
posicion del jugador regresa el valor de la coordenada y
del objeto.
Figure 25. Clase Pelota

3) MENU:
La cual no tendra variables de datos privados.
Se define la funcion Pintar Portada la cual pasa un
parametro por referencia la cual permitira escoger la
opcion del menu que el usuario desee.
Figure 24. Clase Jugador

2) PELOTA:

Se definen las varaibles de datos privados x, y, dx, dy;


Se definen el constructor el cual tiene unos parametros
de entrada _x , _y, _dx, _dy
Se defienen las funciones que utilizaran la clase jugador
que son: La Funcion Pintar la cual sera constante porque
no se le van a realizar modificaciones sino hara uso de
los datos de la clase.
La funcion Get_random la cual pasa parametros por
referencia para realizar la modificaciones de estos.
La funcion Get_bias la cual pasa parametros por referencia para realizar la modificaciones de estos.
La funcion Aprender la cual pasa parametros por referencia para realizar la modificaciones de estos.
La funcion Aprender1 la cual pasa parametros por referencia para realizar la modificaciones de estos.
La funcion Aprender2 la cual pasa parametros por referencia para realizar la modificaciones de estos.
La Funcion Borra la cual sera constate porque solo
hara uso de los datos de la clase y no se le realizara
modificaciones.
La funcion Mover la cual tendra como parametros de
entrada los objetos creados de la clase jugador.
La funcion asignar la cual tendra de parametro dd entrada
la coordenada _y la cual sirve para manipular la variable.
La funcion PY la cual retorna el valor y para saber la
posicion del jugador regresa el valor de la coordenada y
del objeto.
La funcion PX la cual retorna el valor x para saber la
posicion del jugador regresa el valor de la coordenada y
del objeto.
La funcion DX la cual retorna el valor dx para saber la
velocidad del jugador regresa el valor de la coordenada
y del objeto.

Figure 26. Clase Pelota

E. Se define el constructor de la clase


1) JUGADOR: El constructor tiene por parametos _x y _y
se les van a asignar los valores de las coordenadas de los datos
de la clase
2) PELOTA: El constructor tiene por parametos _x , _y,
_dx, _dy se les van a asignar los valores de las coordenadas
y los cambios de coordenadas de los datos de la clase
F. Se pasa a Define las Funciones de la clase
1) JUGADOR :
Se llama la funcion Pintar la pintar el pad del jugador
tiene tres pixeles es por esto que se define de manera (y1), y, (y+1) para imprimir se maneja el lenguaje ASCII.
Se llama la funcion Borrar la cual realiza el mismo
metodo de la anterior lo que se hace es cambiar el caracter
del codigo ASCII.
Se llama la funcion Mover_pc la cual pasa parametros de
referencia de la posicion de la pelota y la velocidad donde
se llaman las salidas de la clase jugador esta funcion es
para pintar el pad cuando actua la neurona.

Figure 27. Funciones

2) PELOTA:
Se llama la funcion Pintar la cual tendra como parametros
de entrada x, y para imprimir se maneja el lenguaje
ASCII.
Se llama la funcion Borrar la cual realiza el mismo
metodo de la anterior lo que se hace es cambiar el caracter
del codigo ASCII.
Se llama la funcion mover la cual llama a la funcion
borrar y asigna a x el incremeno de x + dx de igual
forma en y + dy y luego se prosigue a pintar luego
se prosigue a comparar respecto a las coordenadas de
los pixeles del marco para realizar las colisiones con las
lineas horizontales y verticales, de esta misma forma se
realiza las condiciones cuando realiza la colision con los
pads donde como resultado el cambio de la poscion en
x.

Figure 30. random pesos y bias

La funcion Aprender2 tiene se declara un parametro pro


referencia el cual se la asigna la funcion Aprender.
La funcion Aprender se declaran las variables del factor
de aprendizaje la salida deseada para realizar el entrenamiento se declaran los arreglos que para determinar el
error de los pesos de las neuronas delas salidas de los
bias a la variable sal se le asiganara la funcion aprender
la cual realiza el calculo de la primeros valores con los
randoms, despues de esto se realizara el aprendizaje por
el algoritmo del back propagation el cual va hacia atras
y estara condicionado por el error que mientras el error
se encuentre 0.01 debera realizar el aprendizaje.
Se realiza el error de la ultima capa

Figure 28. Funciones

La funcion Get_random con la cual tenemos 10 pesos a


modificar pertenecientes a (2 neuronas 1 capa, 2 neuronas
2 capa, 1 neurona 3 capa, 2 neuronas) La funcion
Get_bias generara los 5 bias para modificar los pesos de
las neuronas de cada capa.

Figure 31. Error en la ultima capa

Error en la capa 2

Figure 32. Error en la capa 2

Error en la capa 1

Figure 29. random pesos y bias

La funcion Aprender1 se declaran variables de tipo double por referencia ya que sus datos varian se general un
arreglo de salida de 5 posiciones las cuales pertenecen a
las salidas de cada neurona, se realizan los calculos para
cada epoca con el numero de neuronas pertenecientes a
cada una y esta funcion retorna la salida.

Figure 33. Error en la capa 1

Se asignana los calculos de las salidas con los nuevos


pesos y la funcion de activacion para cada una de las
neuronas y se retorna el valor s del arreglo de salida

IV. RESULTADOS

Figure 36. Menu

Figure 34. Salidas

G. Clase en la funcion main

Se crea un objeto de la clase en este caso se va a crear el


objeto de la clase jugador A y B los cuales tendran los
parametros de las coordenadas que tendran los jugadores,
despues se coloca el objeto y se llama a la funcion que
pertenece a la clase.
Se declara un variable tipo chart para realizar la rutina del
juego para etso se declara un ciclo while, se llaman los
objetos y las funciones correspondientes, se utilizar las
funciones kbhit() la cual reacciona cuando se preciona
una tecla, getch es la funcion que detiene la ejecucion
del programa hasta que se presione una tecla, despues se
declaran las teclas las cuales permitiran mover los pads,
luego se llaman las funciones pintar.Se pasa el paramtero
por referencia con elobjeto de la clase pelota con que
llama a la funcion aprender

Figure 37. Paleta Derecha neurona Retropropagacion Paleta Izquierda manejada por el Usuario

Figure 38. Prueba 1

Figure 39. Prueba 2

V. APLICACIONES
Figure 35. Main

En los ultimos aos se han conseguido grandes avances


gracias a la mejora de los ordenadores y al uso de GPUs

para este tipo de computaciones. Hace poco de habla de pies


de foto generados porordenador gracias a una red neuronal de
convolucion(reconocimiento de imagenes) junto con una red
neuronal recurrente para formar las frases. [5]
La investigaciones de Stanford usaron tarjetas GPU para poder
entrenar y ejecutar este tipo de redes neuronales en un tiempo
razonable.
Google con Street View monto una red neuronal convolucional
que lograba una precision del 96% a la hora de reconocer
numeros de calle en las imagenes que toman sus coches.
Los de Mountain View estan bastante enamorados de las
redes neuronales ya que tambien se usaron para mejorar el
reconocimeinto de voz de Android y ahorrar electricidad en
sus centro de datos.[6]
Compresion de datos MLP
VI. CONCLUSIONES
Se debe tener en cuenta los patrones normalizados par
arealizar el entrenamiento ya que es una manera mas facil de
realizar este laboratorio, a la hora de trabajar con un compilador como c++ se deben agregar las librerias correspondientes
a la parte de dibujo ya que se pueden presentar problemas, en
cuanto al algoritmo de retropopagacion se aconseja que el factor de aprendizaje se pequeo para que la tasa de convergencia
de esta misma forma sea lenta y con esto, para el calculo
del error es importante aplicar la formula correspondiente a
la capa que se va a evaluar ya que son formulas diferentes
para cada una la implementacion de este algoritmo por medio
de capas ocultas es muy importante el total de 3 capas es
considerado un numero adecuado de capas para la resolucion
de problemas reales lo que hay que tener en cuenta es el
numero de neuronas que se van a usar en cada capa ya que el
exceso de estas puede producir un sobreentrenamiento lo cual
no estamos buscando, se deben seguir los pasos de aprendizaje
del perceptron ya que con cualquier error que se cometa afecta
de manera notoria la salida de sistema, se tuvo problemas
al inicio con la inicializacion de lso parametros de tasa de
aprendizaje ya que saturaba la red antes de llegar a ser optivo
esto provocado por el valor excesivo de la suma de las entradas
se deben tener en cuenta los valores en que se van a realizar
los random ya que ocupa gran parte del sistema y lo lleva a
la saturacion.
R EFERENCIAS

[1]Tomada http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/mejia_s_ja/capitulo3.pdf
[2]Tomada http://catarina.udlap.mx/u_dl_a/tales/documentos/lep/mejia_s_ja/capitulo3.pdf
[3]Tomada http://avellano.usal.es/~lalonso/RNA/
[4]Tomada
http://www.xataka.com/robotica-e-ia/lasredes-neuronales-que-son-y-por-que-estan-volviendo
[5]Tomada http://bibing.us.es/proyectos/abreproy/12166/fichero/Volumen+1++Memoria+descriptiva+del+proyecto%252F3++Perceptron+multicapa.pdf
[6]Tomada http://www4.ujaen.es/~hontoria/PagPerLHG1/PPLHontoriaInvestigacion/Tesis/Tesis04.PDF

También podría gustarte