IIC2613-Inteligencia-Artificial-2023-1 / Syllabus

Repositorio base del curso, donde se publicarán enunciados, ayudantías y se resolverán dudas.
39 stars 1 forks source link

Tarea 4: Enternamiento de Reinforced Agent #86

Open EnzoMorata opened 1 year ago

EnzoMorata commented 1 year ago

Hola, estaba tratando de probar el código que hice para los agentes en la implementación de aprendizaje reforzado. Para ello ejecuté, primero el archivo test.py seleccionando a uno de los agentes con aprendizaje reforzado, pero al ejecutar el código me indicó que no encuentra el archivo con la Q-Table que estaba en el código comentado ("QTableCat1000.npy"). Luego, probé ejecutando el archivo train_reinforced_agent.py, pero al terminar de entrenar y tras revisar el código no pareciera que se generara algún nuevo archivo que pueda utilizar de forma posterior, además de utilizar a los agentes Base por defecto en el archivo. Entonces, quisiera preguntar si tal vez estoy haciendo algo incorrecto o hay algún paso adicional que deba realizar para poder entrenar correctamente a los agentes en esta parte.

dfloreaa commented 1 year ago

Hola, disculpa la demora en responder.

Lo que se programa en el archivo agents/reinforced.py es el funcionamiento detrás del algoritmo de Q-Learning. Recuerda que debes implementar todos los métodos de las clases ReinforcedAgent y la respectiva clase de cada agente para que este entrene correctamente.

Si te fijas, en la función update_exploration(self, n_game) se guarda la Q-Table del agente en la carpeta agents/data y se realiza un print cada confirmarlo (la tabla se guarda cada 1000 juegos por defecto).

Luego de haber completado las clases anteriores, para entrenar a tu agente deberás ejecutar el archivo train_reinforced_agent.py y descomentar la línea que instancia al agente reforzado elegido, comentando todo el resto.

Por ejemplo, si deseo entrenar un agente Cat:

# Instanciamos los agentes
# cat = BaseCat(game.cat_pos)
mouse = BaseMouse(game.mouse_pos)

# cat = NNCat(game.cat_pos, "NNCat.h5")         # Reemplazar con el nombre del archivo de la red neuronal (los agentes neuronales no aprenden en este archivo)
# mouse = NNMouse(game.mouse_pos, "NNMouse.h5") # Reemplazar con el nombre del archivo de la red neuronal (los agentes neuronales no aprenden en este archivo)

cat = RLCat(game.cat_pos)
# mouse = RLMouse(game.mouse_pos)

Y correr el programa un número suficiente de partidas para obtener una buena Q-Table.

Finalmente, puedes cargar esta tabla en el archivo test.py y probar el desempeño de tu agente enternado.

Un saludo, avísame si quedas con más dudas 😊