Una vez escribí un Tetris AI que jugaba Tetris bastante bien. El algoritmo que utilicé (described in this paper) es un proceso de dos pasos.Determinando qué entradas pesar en un algoritmo evolutivo
En el primer paso, el programador decide hacer un seguimiento de las entradas que son "interesantes" para el problema. En Tetris, podríamos estar interesados en registrar cuántas lagunas hay en una fila, ya que minimizar las brechas podría ayudar a ubicar las piezas futuras más fácilmente. Otra podría ser la altura promedio de la columna porque puede ser una mala idea correr riesgos si está a punto de perder.
El segundo paso es determinar los pesos asociados con cada entrada. Esta es la parte donde utilicé un algoritmo genético. Cualquier algoritmo de aprendizaje funcionará aquí, siempre que los pesos se ajusten a lo largo del tiempo en función de los resultados. La idea es dejar que la computadora decida cómo se relaciona la entrada con la solución.
Usando estas entradas y sus pesos podemos determinar el valor de tomar cualquier acción. Por ejemplo, si coloca la forma de línea recta en la columna de la derecha eliminará las brechas de 4 filas diferentes, entonces esta acción podría obtener una puntuación muy alta si su peso es alto. Del mismo modo, colocarlo en la parte superior en realidad podría causar lagunas y que la acción obtenga un puntaje bajo.
Siempre me he preguntado si hay una forma de aplicar un algoritmo de aprendizaje al primer paso, donde encontramos entradas potenciales "interesantes". Parece posible escribir un algoritmo donde la computadora primero aprende qué entradas pueden ser útiles, luego aplica el aprendizaje para ponderar esas entradas. ¿Se ha hecho algo así antes? ¿Ya se está utilizando en alguna aplicación de IA?
+1 Estoy tratando de comenzar en este campo. Tengo un par de programas de demostración de mascotas pero nada grande todavía. Interesado en ver qué tipo de respuestas obtienes al respecto. –