Estoy usando Q-learning para mi proyecto secundario. Después de unos pocos millones de episodios, descubrí que las recompensas acumulativas parecen alcanzar estabilidad. Me pregunto si hay una manera científica para determinar cuándo dejar de entrenar en lugar de observar las recompensas acumuladas.
Respuesta
¿Demasiados anuncios?Esto depende mucho de cuál es el objetivo. Aquí son algunos de los diferentes casos en que puedo pensar:
Objetivo: Tren hasta la convergencia, pero ya no
Por tu pregunta, me da la impresión de que este parece ser su objetivo. La forma más sencilla es probablemente la "antigua" forma de representación de su episodio devuelve durante el entrenamiento (si es un episodio de la tarea), la inspección de la parcela a sí mismo, e interrumpir el proceso de formación, cuando parece que se han estabilizado / convergente. Esto supone que en realidad se implementa algo (como una muy sencilla interfaz gráfica de usuario con un botón de parada), de modo que usted es capaz de decidir manualmente cuando para interrumpir la formación de bucles.
Para hacer esto automáticamente (que es lo que supongo que usted está buscando cuando usted dice "de forma científica(s) para determinar cuándo detener la formación"), supongo que se podría hacer algo tan simple como medir el rendimiento promedio en los últimos 10 episodios, y también el rendimiento promedio en los últimos 50 episodios, y el rendimiento promedio en los últimos 100 episodios (por ejemplo). Si esos son todos muy parecidos, no puede dejar de formación. O, tal vez mejor, se podría medir la variación en el rendimiento durante un período de tiempo, y se detendrá si la varianza cae por debajo de un cierto umbral.
Objetivo: Comparar el rendimiento de un algoritmo a otro algoritmo / rendimiento descrito en publicaciones
En este caso, usted simplemente quiere asegurarse de utilizar una cantidad similar de tiempo de capacitación / número de pasos de entrenamiento que se utilizó para la línea de base que está comparando. Lo que sucede a menudo en la corriente de Aprendizaje por Refuerzo de la investigación es medir el rendimiento medio en los últimos X (por ejemplo, X = 10, X = 100) episodios en puntos específicos en el tiempo (por ejemplo, después de 10 M, 50M, 100M y 200M frames en juegos de Atari, consulte: https://arxiv.org/abs/1709.06009). Aún mejor, en mi opinión, es hacer exactamente esto en cada punto en el tiempo durante el entrenamiento, y trazar una curva de aprendizaje. En este caso, realmente no importa demasiado cuando dejas de entrenar, mientras usted lo hace siempre de la misma manera para todos los algoritmos se está comparando. Nota: su decisión de cuándo dejar de formación será la influencia que conclusiones puede sacar razonablemente bien. Si dejas de entrenar muy temprano, no se puede concluir nada acerca de la formación a largo plazo el rendimiento.
Objetivo: Implementar un agente que está destinado a ser implementado durante un largo periodo de tiempo
En este caso, incluso se podría considerar simplemente nunca se deja de aprender ("life-long learning"). Usted puede simplemente mantener la actualización como su agente se implementa y actúa en su entorno. O usted podría considerar la posibilidad de detener el entrenamiento, siempre que el rendimiento se parece adecuado, si tienes miedo de que pueda degradar después, durante la implementación.