Arquitectura de Software 11 Feb 2009 09:16 pm

Aprendizaje por Refuerzo

El aprendizaje por refuerzo permite que un agente, un ente, que se relaciona con un entorno mediante sensores y actuando en él a través de ciertas acciones, aprenda qué acción es la más adecuada en cada momento para conseguir unos objetivos basándose en unas recompensas o castigos que va recibiendo con cada acción ejecutada.

Por ejemplo, puedo escribir un programa que aprenda a jugar a las damas sin escribir en reglas los algoritmos ganadores.
Otro ejemplo: Escribo un bot para que luche con otros en Quake pero no programo ninguna línea que diga “Si ves un robot a menos de 3 metros, dispara”.

La idea es interesante y de aplicaciones infinitas.

Por eso escribí un algoritmo que implementa el aprendizaje por refuerzo basado en tablas-Q y el algoritmo de Sutton y Barto, lo utilicé para que un bot - al que llamé ReBoTe - aprendiera a zurrales la badana a otros en el juego libre y sencillo RealTimeBattle, y por fin, este lunes presenté trabajo y resultados de la última asignatura del máster de investigación (no confundir con Máster del de MBA) que estoy haciendo en la Universidad Complutense.

El agente aprende que en cada estado S la mejor acción es A a través de las recompensas o castigos que va recibiendo.

Una de las ideas que tengo en mente es la de hacer un operador de monitorización automático.

Saber cuál es el estado del entorno (osea los servidores o las bases de datos o lo que sea) es fácil, las recompensas son positivas si mejora el estado hacia menos cŕitico y las acciones pueden estar programadas para no ser muy dañinas en principio (rearrancar servicio, enviar correo al administrador, borrar ficheros del directorio temporal del servidor con problemas). Además, con esto en mente, el código que hice para el robot lo he preparado para ser usado como un componente.

Si alguien está interesado: jlmarina [arrobón] gmail [.puntaco] CoM.

El artículo completo del trabajo: Aprendizaje por Refuerzo: Aplicado a luchas de robots en RealTimeBattle.

Por cierto que depués de 1000 partidas de entrenamiento ReBoTe está con el ego subidísmo: gana en un 70% de las veces.

Comments are closed.