La intro…
Las lecciones a tratar en este tema son:
Si en los algoritmos clásicos de búsqueda tenemos un espacio de estados, con estado inicial, estado objetivo, operadores, posiblemente heurística… y se trata de encontrar el camino mínimo, en el aprendizaje por refuerzo el agente está buscando algo parecido, establecer una política óptima de toma de decisiones que le permita pasar de estado, guiándose a través de la recompensa. Digamos que aquí cobran importancia todos estos conceptos de estados, acciones, recompensas, políticas, exploración, exploración…
Lo más importante aquí es conocer el Q-Learning (la base de lo que luego será llamado el Deep Q-Learning).
El algoritmo por defecto en Unity ML-Agents, que es la herramienta que típicamente usamos aquí, es precisamente PPO (creo Proximal Policy Optimization), uno de los algoritmos más avanzados.
Aplicaciones estrella: control de robótica, conduccion autónoma, trayectorias y estrategias óptimas en juegos, gestión logística…
El programador no le dice al agente cómo ganar; solo le dice qué se premia y qué se castiga. Como resultado, tras millones de iteraciones de entrenamiento (por ejemplo, en Unity ML-Agents), los agentes suelen descubrir estrategias, tácticas de juego o comportamientos complejos que el propio programador jamás habría previsto. Eso es, por definición, comportamiento emergente puro.
Al explicar RL, puedes usar el comportamiento emergente como la gran «motivación» o el gran resultado del tema. Explicas cómo reglas de recompensa muy sencillas acaban generando dinámicas de juego sofisticadas (como agentes coordinándose en un juego de escondite, o encontrando exploits en las físicas de un juego para moverse más rápido).
Como curiosidad, algunas IAs han demostrado ser capaces de modificar el sistema de recompensa para recibir refuerzo aunque no estén resolviendo realmente el problema (a esto se le conoce como reward hacking).
Ejercicios
Para practicar lo aprendido pueden hacerse algunos ejercicios.
Prácticas
Para aplicar los conocimientos y las técnicas de este tema pueden realizarse prácticas como estas:
- EJEMPLO, con una solución hecha por el profesor.
- Si se quiere practicar aprendizaje profundo se puede programar una red neuronal artificial con TensorFlow (o mejor, PyTorch).
- Partir de un microgame o similar, con Unity ML-Agent montado, y hacer que un agente aprenda por refuerzo a hacer algo, como aprender a salir de un laberinto, o a exploar unas mazmorras, evitando o venciendo enemigos, pillando las monedas y «farmeando» las mejores armas… Si es un juego de plataformas, aprende a saltar, esquivar, ir avanzando… si es de coches aprende a seguir el circuito sin salirse, mantener una velocidad rápida pero prudente.
Referencias
Para complementar este tema es recomendable consultar otros documentos: