Skip to content

Desarrollo de un entorno de simulación en Unity donde dos agentes autónomos se enfrentan en un partido de volleyball, utilizando ML-Agents. El objetivo fue entrenar a los agentes para que aprendieran a competir entre sí de forma progresiva, ajustando sus comportamientos en base a un sistema de recompensas

Notifications You must be signed in to change notification settings

imontecalvo/volleyAI-unity3d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

volleyAI Unity3d

Introducción

El objetivo de este proyecto fue desarrollar un escenario de entrenamiento en el que dos agentes autónomos se enfrentan en un partido de volleyball, utilizando ML-Agents de Unity. A través de este entorno, se buscó entrenar a los agentes para que aprendieran a competir entre sí de manera progresiva.

Durante el proceso de desarrollo, surgieron diversos desafíos, como la tendencia de los agentes a maximizar recompensas explotando situaciones no previstas. Sin embargo, mediante la implementación de un set de recompensas más completo y ajustado, se logró finalmente el comportamiento esperado, logrando que los agentes aprendieran de forma efectiva.

Aprendizaje por refuerzo: Algunos conceptos

El aprendizaje por refuerzo es una técnica de enseñanza que implica recompensar los comportamientos positivos y castigar los negativos. Consta de un aprendizaje empírico, por lo que el agente informático está en constante búsqueda de aquellas decisiones que le premien y a la par evita aquellos caminos que, por experiencia propia, son penalizados.

Antes de continuar, debemos poner en común ciertos conceptos:

  • Agente: La entidad que aprende y toma decisiones.
  • Entorno: El contexto en el que el agente interactúa y recibe retroalimentación.
  • Observaciones: Los distintos elementos que componen el entorno, de los cuales el agente aprende. Se corresponden a la capa de entrada de la red neuronal.
  • Acciones: Las opciones que el agente puede tomar en respuesta a las observaciones del entorno. Corresponde a la capa de salida de la red neuronal.
  • Recompensas: La retroalimentación positiva o negativa que el agente recibe por sus acciones.

Diseño

Entorno

Observaciones

  • Posiciones propias y del oponente
  • Posición de la pelota
  • Vector velocidad de la pelota
  • Distancia a la red y su altura

Acciones

Feedback: Recompensas y penalizaciones

Recompensas:

  • Tocar la pelota
  • Pasar la pelota por encima de la red
  • Ganar un punto (máxima recompensa)

Penalizaciones:

  • Tocar las paredes
  • Perder un punto (máxima penalización)

Además, en función de qué tan cerca o lejos de la pelota esté el agente, éste recibirá una recompensa o penalización respectivamente. Esto es útil para que el agente aprenda a manterse cerca de la pelota.

Problemas surgidos y soluciones ideadas

Problema #1: Retención de la pelota

Como el agente obtiene recompensas por tocar la pelota, trata de retenerla encima suyo para acumular recompensas. Solución: Cuando el agente retiene la pelota, automáticamente pierde el punto que estaba en juego.

Problema #2: Toques infinitos

Con el problema anterior solucionado, si bien los agentes ya no buscan retener la pelota dejándola apoyada encima suyo, sí intentan mantenerla en su dominio realizando toques infinitos, con el fin de acumular recompensas. Solución: El agente pierde el punto tras 5 toques consecutivos.

Problema #3: Agente no sabe acercarse a la pelota

Al inicio de cada punto, los agentes y la pelota estaban en una posición fija, pero esto provocaba que los agentes no aprendan a acercarse a la pelota, sino a esa posición en particular, ocasionándole dificultades de seguir a la pelota en otras posiciones. Solución: Posición inicial random (dentro de los límites posibles) de agentes y pelota

Problema #4: Aprendizaje lento

El entrenamiento de la red se volvió un proceso bastante extenso debido a que los agentes estaban aprendiendo muy lento Solución: Para solucionarlo se empleó un entrenamiento de mútiples agentes en paralelo. También se utilizó la técnica de aprendizaje por imitación que permite a los agentes indicarles manualmente qué comportamiento deben realizar de modo que no tienen que hacer este descubrimiento desde cero por su cuenta, lo cual ahorra tiempo.

Entrenamiento con distintas arquitecturas de red

De acuerdo a algunas arquitecturas probadas, se decidió utilizar una red de 10 capas ocultas con 128 neuronas cada una dado a que es la que mejor resultados arrojó.

Resultado final

Inicio Resultado Final

Extra

Este proyecto forma parte de otro proyecto más grande donde se útilizó ML-Agents de Unity en cuatro distintos escenarios. Para más información, el proyecto completo se encuentra acá

About

Desarrollo de un entorno de simulación en Unity donde dos agentes autónomos se enfrentan en un partido de volleyball, utilizando ML-Agents. El objetivo fue entrenar a los agentes para que aprendieran a competir entre sí de forma progresiva, ajustando sus comportamientos en base a un sistema de recompensas

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages