Después de jugar demasiado a Angry Birds, empecé a observar mis propias estrategias. Resulta que desarrollé un enfoque muy específico para conseguir 3 estrellas en cada nivel.
Eso me hizo preguntarme por los retos de desarrollar un sistema de aprendizaje automático que fuera capaz de jugar a Angry Birds. Interactuar con el juego y lanzar los pájaros es trivial. Pero una pregunta que me surgió es sobre los "bloques de construcción" del sistema.
Los sistemas de aprendizaje automático parecen funcionar con conceptos o conocimientos sencillos sobre el problema. Esto suele codificarse como características de entrada. Así que parece que el sistema necesita tener la capacidad de entender algunos conceptos de alto nivel para generar una estrategia.
¿Es esto cierto? Además, ¿cuáles son los retos o las partes difíciles de desarrollar un sistema de este tipo?
EDITAR #1:
He aquí una aclaración. Conseguir 3 estrellas es un problema difícil porque hay que maximizar los puntos. Esto se puede hacer de dos maneras no excluyentes: 1) Minimizando el número de pájaros utilizados (obtienes 10.000 puntos por cada pájaro no utilizado). 2) Maximizando la destrucción de cristal, madera y otros objetos. Cada objeto destruido te da puntos. Es posible destruir más de 10.000 puntos en objetos con un solo pájaro.
He aquí una explicación más detallada de los "conceptos de alto nivel". Para maximizar los puntos descritos anteriormente, necesitas utilizar los poderes especiales de cada pájaro. Eso significa lanzar diferentes pájaros con diferentes trayectorias, dependiendo de la disposición del mapa. Y, mientras juego, desarrollo una estrategia que destruye ciertas zonas con determinados pájaros en un orden determinado.
Parece que sin una comprensión de cómo utilizar cada pájaro para destruir un área específica el sistema no podía aprender a conseguir 3 estrellas. Entonces, ¿cómo se gestiona y codifica algo así? ¿Cómo se garantiza que el sistema pueda aprender estos conceptos de alto nivel?