He estado buscando aprendizaje de refuerzo y específicamente jugando con la creación de mis propios entornos para usar con OpenAI Gym AI. Estoy usando agentes del proyecto stable_baselines para probar con él.
Una cosa que he notado en prácticamente todos los ejemplos de RL es que nunca parece haber capas de abandono en ninguna de las redes. ¿Por qué es esto?
He creado un entorno que simula los precios de las divisas y un agente simple, usando DQN, que intenta saber cuándo comprar y vender. Al entrenarlo en más de un millón de pasos tomados de un conjunto específico de datos que consta de datos de precios de 5 minutos por un mes, parece que se ajusta demasiado. Si luego evalúo a los agentes y el modelo con un valor de datos de un mes diferente, se realiza abismalmente. Suena como un sobreajuste clásico.
Pero, ¿hay alguna razón por la que no ve las capas de abandono en las redes RL? ¿Hay otros mecanismos para tratar de lidiar con el sobreajuste? ¿O en muchos ejemplos de RL no importa? por ejemplo, puede que solo haya una verdadera forma de obtener la máxima puntuación máxima en el juego 'breakout', por lo que es mejor que aprendas exactamente eso y no necesites generalizar.
¿O se considera que la naturaleza caótica del entorno en sí debería proporcionar suficientes combinaciones diferentes de resultados para que no necesite tener capas de abandono?
fuente
Respuestas:
La deserción esencialmente introduce un poco más de variación. En entornos de aprendizaje supervisado, esto a menudo ayuda a reducir el sobreajuste (aunque creo que el abandono también se está volviendo menos ... de moda en los últimos años que en los años anteriores; sin embargo, no estoy 100% seguro, no es mi principal área de experiencia).
En el aprendizaje por refuerzo, la varianza adicional no es realmente lo que estamos buscando. Ya tiende a haber una gran cantidad de variación en las señales de aprendizaje que obtenemos, y esta variación ya tiende a ser un problema importante para la estabilidad y / o la velocidad de aprendizaje. Por ejemplo:
Muchas partes importantes de los algoritmos de Deep RL (sin los cuales nuestros procesos de entrenamiento resultan empíricamente para desestabilizar y descomponer) están muy adaptados para reducir esa variación. Por ejemplo, las redes de destino en DQN se introdujeron específicamente para reducir el problema del objetivo móvil. Desde este punto de vista, no es sorprendente que si tuviéramos que agregar más varianza artificial por otros medios nuevamente (como la deserción), esto dañaría el rendimiento / desestabilizaría el aprendizaje.
En la mayoría de las investigaciones actuales de Aprendizaje de refuerzo (profundo), el sobreajuste no se considera un problema. La gran mayoría de la investigación de RL consiste en la capacitación en un entorno (por ejemplo, Cartpole, o Breakout, o un nivel particular en Pacman, o navegar en un laberinto específico, etc.), y evaluar constantemente el rendimiento durante ese proceso de aprendizaje, o evaluar rendimiento después de dicho proceso de aprendizaje en el mismo entorno .
Si fuéramos a comparar esa metodología de evaluación con lo que sucede en el aprendizaje supervisado ... básicamente estamos evaluando el desempeño en el conjunto de capacitación * . En el aprendizaje supervisado, esto sería absolutamente inaceptable, pero en RL se trata en gran medida como aceptable y más norma que excepción. Algunos dicen que esto es simplemente un problema en la investigación actual de RL, algo que necesita cambiar. También se podría argumentar que no es necesariamente un problema; si realmente somos capaces de capacitar al agente precisamente en el mismo entorno en el que deseamos implementarlo más tarde ... bueno, entonces, ¿cuál es el problema con su sobreajuste en ese entorno?
Por lo tanto, cuando utilizamos la metodología de evaluación descrita anteriormente, de hecho, estamos sobreajustando a un entorno específico, pero el sobreajuste es bueno en lugar de malo según nuestros criterios de evaluación . Sin embargo, está claro que esta metodología no conduce a agentes que puedan generalizarse bien; Si constantemente entrena a un agente para navegar en un laberinto en particular, es probable que no pueda navegar en un laberinto diferente después del entrenamiento.
* Nota: la verdad, en mi opinión, es un poco más matizada que la que realmente estamos "evaluando en el conjunto de entrenamiento" en RL. Vea, por ejemplo, este bonito hilo de tweets: https://twitter.com/nanjiang_cs/status/1049682399980908544
Tenga en cuenta que su metodología de evaluación descrita aquí ya no se ajusta a la metodología de evaluación más "común". Tiene un problema con la deriva del concepto , con la falta de estacionariedad en el entorno. Esto significa que el sobreajuste puede ser un problema para usted.
Aún así, no estoy seguro de si la deserción ayudaría (sigue siendo una variación adicional que puede doler). En primer lugar, querrá asegurarse de que haya alguna forma de realizar un seguimiento del tiempo / mes en sus entradas, de modo que al menos tenga la oportunidad de aprender una política que se adapte con el tiempo. Si tiene un límite claro y sólido entre la "fase de entrenamiento" y la "fase de evaluación", y sabe que la deriva del concepto ocurre a través de ese límite (sabe que su entorno se comporta de manera diferente en la fase de entrenamiento de la fase de evaluación) ... usted Realmente no tengo muchas esperanzas de aprender una política solo a partir de la experiencia en la fase de capacitación que todavía funciona bien en la fase de evaluación. Sospecho que tendrá que deshacerse de ese límite claro y sólido. Usted' También querré seguir aprendiendo durante la fase de evaluación. Esto permite que su algoritmo de aprendizaje realmente acumule experiencia en el entorno modificado y se adapte a él.
fuente