Aunque sé que SARSA está dentro de la política mientras que Q-learning está fuera de la política, al mirar sus fórmulas es difícil (para mí) ver alguna diferencia entre estos dos algoritmos.
Según el libro Reinforcement Learning: An Introduction (de Sutton y Barto). En el algoritmo SARSA, dada una política, la función de valor de acción correspondiente Q (en el estado sy la acción a, en el paso de tiempo t), es decir, Q (s t , a t ), se puede actualizar de la siguiente manera
Q (s t , una t ) = Q (s t , una t ) + α * (r t + γ * Q (s t + 1 , una t + 1 ) - Q (s t , una t ))
Por otro lado, el paso de actualización para el algoritmo Q-learning es el siguiente
Q (s t , a t ) = Q (s t , a t ) + α * (r t + γ * max a Q (s t + 1 , a) - Q (s t , a t ))
que también se puede escribir como
Q (s t , a t ) = (1 - α) * Q (s t , a t ) + α * (r t + γ * max a Q (s t + 1 , a))
donde γ (gamma) es el factor de descuento y r t es la recompensa recibida del entorno en el paso de tiempo t.
¿La diferencia entre estos dos algoritmos es el hecho de que SARSA solo busca el siguiente valor de política mientras Q-learning busca el siguiente valor máximo de política?
TLDR (y mi propia respuesta)
Gracias a todos los que respondieron esta pregunta desde la primera vez que la hice. Hice un repositorio de github jugando con Q-Learning y entendí empíricamente cuál es la diferencia. Todo se reduce a cómo selecciona su próxima mejor acción , que desde un punto de vista algorítmico puede ser una acción media , máxima o mejor , según cómo elija implementarla.
La otra diferencia principal es que esta selección está ocurriendo (por ejemplo, en línea vs fuera de línea ) y cómo / por qué eso afecta el aprendizaje. Si está leyendo esto en 2019 y es más una persona práctica, jugar con un problema de juguetes RL es probablemente la mejor manera de comprender las diferencias.
Una última nota importante es que tanto Suton & Barto como Wikipedia a menudo tienen representaciones de fórmulas mixtas, confusas o incorrectas con respecto a la acción y recompensa mejor / máxima del siguiente estado :
r (t + 1)
es de hecho
r (t)
Espero que esto ayude a cualquiera a quedarse atascado en esto.