supervisado refuerzo reforzado profundo por machine learning ejemplos automatico aprendizaje algorithm machine-learning artificial-intelligence markov-chains reinforcement-learning

algorithm - refuerzo - aprendizaje reforzado python



¿Cuándo usar un determinado algoritmo de aprendizaje de refuerzo? (1)

Estoy estudiando Aprendizaje de Refuerzos y leyendo el libro de Sutton para un curso universitario. Además de los algoritmos clásicos de PD, MC, TD y Q-Learning, estoy leyendo sobre los métodos de gradiente de políticas y algoritmos genéticos para la resolución de problemas de decisión. Nunca antes había tenido experiencia en este tema y tengo problemas para entender cuándo debería preferirse una técnica a otra. Tengo algunas ideas, pero no estoy seguro de ellas. ¿Puede alguien explicarme brevemente o decirme una fuente donde pueda encontrar algo sobre una situación típica en la que se deben usar ciertos métodos? Hasta donde yo entiendo:

  • La programación dinámica y la programación lineal deben usarse solo cuando el MDP tiene pocas acciones y estados y el modelo es conocido, ya que es muy costoso. Pero cuando DP es mejor que LP?
  • Los métodos de Monte Carlo se usan cuando no tengo el modelo del problema pero puedo generar muestras. No tiene sesgo pero tiene alta varianza.
  • Los métodos de diferencia temporal deben usarse cuando los métodos de MC necesitan demasiadas muestras para tener una varianza baja. Pero, ¿cuándo debo usar TD y cuándo Q-Learning?
  • El gradiente de políticas y los algoritmos genéticos son buenos para los MDP continuos. Pero cuando uno es mejor que el otro?

Más precisamente, creo que para elegir un método de aprendizaje, un programador debería hacerse las siguientes preguntas:

  • ¿El agente aprende en línea o fuera de línea?
  • ¿Podemos separar las fases de exploración y explotación?
  • ¿Podemos realizar suficiente exploración?
  • ¿Es el horizonte del MDP finito o infinito?
  • ¿Son los estados y las acciones continuas?

Pero no sé cómo estos detalles del problema afectan la elección de un método de aprendizaje. Espero que algún programador ya haya tenido algo de experiencia con los métodos de RL y pueda ayudarme a comprender mejor sus aplicaciones.


Brevemente:

¿El agente aprende en línea o fuera de línea? le ayuda a decidir ya sea mediante el uso de algoritmos en línea o fuera de línea. (por ejemplo, en línea: SARSA, fuera de línea: Q-learning). Los métodos en línea tienen más limitaciones y necesitan más atención para pagar.

¿Podemos separar las fases de exploración y explotación? Estas dos fases están normalmente en un equilibrio. Por ejemplo, en la selección de acciones codiciosas de épsilon, utiliza una probabilidad (épsilon) para explotar y una probabilidad (1-épsilon) para explorar. Puede separar estos dos y pedir al algoritmo, solo explorar primero (por ejemplo, elegir acciones aleatorias) y luego explotar. Pero esta situación es posible cuando está aprendiendo fuera de línea y probablemente esté usando un modelo para la dinámica del sistema. Y normalmente significa recopilar una gran cantidad de datos de muestra por adelantado.

¿Podemos realizar suficiente exploración? El nivel de exploración se puede decidir según la definición del problema. Por ejemplo, si tiene un modelo de simulación del problema en la memoria, puede explorar como desee. Pero la exploración real se limita a la cantidad de recursos que tiene. (ej. energía, tiempo, ...)

¿Son los estados y las acciones continuas? Tener en cuenta este supuesto ayuda a elegir el enfoque correcto (algoritmo). Hay algoritmos discretos y continuos desarrollados para RL. Algunos de los algoritmos "continuos" discretizan internamente el estado o los espacios de acción.