В чем разница между Q-learning и SARSA?

хотя я знаю, что ЗАРСА-это политика, а Q-обучения является вне политики, при взгляде на их формулы трудно (для меня) увидеть какую-либо разницу между этими двумя алгоритмами.

согласно Книге Обучение Подкреплению: Введение (Саттон и Барто). В алгоритме SARSA, заданном политикой, соответствующая функция действия-значения Q (в состоянии s и действии a, в момент времени t), т. е. Q(st, аt), можно обновить следующим образом

Q (st, at) = Q (st, at) + α*(rt + γ * Q (st+1, at+1) - Q (st, at))

с другой стороны, шаг обновления для алгоритма Q-learning следующий

Q (st, at) = Q (st, аt) + α*(rt + γ * maxa Q (st+1, a) - Q(st, at))

, который также может быть записан как

Q (st, at) = (1-α) * Q(st, at) + α * (rt + γ * maxa Q (st+1, a))

где γ (гамма) - коэффициент дисконтирования и rt это награда, полученная от окружающей среды в timestep t.

разница между этими двумя алгоритмами заключается в том, что SARSA ищет только следующее значение политики, а Q-learning-следующее максимум значение политики?

5 ответов


Да, это единственная разница. On-policy SARSA изучает значения действий относительно политики, которой он следует, в то время как off-policy Q-Learning делает это относительно жадной политики. При некоторых общих условиях они оба сходятся к функции реального значения, но с разной скоростью. Q-обучения, как правило, сходятся немного медленнее, но имеет capabilitiy для продолжения обучения при изменении политики. Кроме того, Q-Learning не гарантированно сходится в сочетании с линейным приближение.

на практике в соответствии с ε-жадной политикой Q-Learning вычисляет разницу между Q(s,a) и максимальным значением действия, в то время как SARSA вычисляет разницу между Q (s,a) и взвешенной суммой среднего значения действия и максимума:

Q-Learning: Q (st+1, at+1) = maxaQ (st+1, a)

SARSA: Q (st+1, at+1) = ε * meanaQ (st+1, a) + (1-ε)·maxaQ (st+1, a)


enter image description here

синие поля выделяют часть, где два алгоритма на самом деле отличаются. Цифры подчеркивают более подробную разницу, которая будет объяснена позже.

TL; NR:

|             | SARSA | Q-learning |
|:-----------:|:-----:|:----------:|
| Choosing A' |   π   |      π     |
| Updating Q  |   π   |      μ     |

где π-ε-жадная политика (например, ε > 0 с разведка), а μ-жадная политика (например, ε == 0, без разведки).

  1. учитывая, что Q-learning использует разные политики для выбора следующего действия A' и обновления Q. другими словами, он пытается оценить π, следуя другой политике μ, поэтому это алгоритм вне политики.

  2. напротив, SARSA использует π все время, следовательно, это алгоритм on-policy.

более подробная объяснение:

  1. самое важное различие между ними заключается в том, как Q обновляется после каждого действия. SARSA использует Q', следуя ε-жадной политике точно, так как из нее извлекается A'. Напротив, Q-learning использует максимальное Q ' над всеми возможными действиями для следующего шага. Это делает его похожим на следование жадной политике с ε=0, т. е. без исследования в этой части.

  2. однако, когда фактически предпринимается действие, Q-learning все еще использует действия с ε-жадной политики. Вот почему "Выберите а"..."внутри повторяются.

  3. следуя логике цикла в Q-learning, A ' все еще от ε-жадной политики.


в вашей формуле для Q-обучения есть ошибка индекса. Страница 148 "Саттона и Барто".--1-->

Q(st,at)

опечатка находится в аргументе max:

индексы st+1 и a, в то время как в вашем вопросе они st+1 и at+1 (они верны для SARSA).

надеюсь, это немного поможет.


в чем разница математически?

Как уже описано в большинстве других ответов, разница между двумя обновлениями математически действительно заключается в том, что при обновлении Q - значение для пары состояние-действие (St, At):

  • Sarsa использует политику поведения (то есть политику, используемую агентом для создания опыта в среде, которая обычно Эпсилон - greedy) выбрать дополнительное действие At+1, а затем использует Q (St+1, At+1) (со скидкой гамма) как и ожидалось в будущем возвращается при вычислении цели обновления.
  • Q-обучение не использует политику поведения для выбора дополнительного действия At+1. Вместо этого он оценивает ожидаемые будущие доходы в обновлении правило как максA Q (St+1, A). The макс оператор, используемый здесь, можно рассматривать как" следующий " полностью жадной политике. агент на самом деле не такие жадные политики; он только говорит, в правиле обновления: "предположим, что я начну следовать жадной политике с этого момента,каковы будут мои ожидаемые будущие доходы?".

Что это значит интуитивно?

Как упомянутая в других ответах разница, описанная выше, означает, используя техническую терминологию, что Sarsa является on-policy алгоритм обучения, и Q-learning является off-policy обучение.

в пределе (учитывая бесконечное количество времени, чтобы получить опыт и учиться), и при некоторых дополнительных предположениях, это означает, что Sarsa и Q-learning сходятся к различным решениям / " оптимальный" политика:

  • Зарса сойдется в решение, которое является оптимальным в предположении, что мы продолжаем следовать той же политике, которая была использована для создания опыта. Это часто будет политика с некоторым элементом (довольно "глупой") случайности, например Эпсилон - жадный, потому что в противном случае мы не можем гарантировать, что мы сойдемся к чему-либо вообще.
  • Q-Learning будет сходятся к решение, которое является оптимальным в предположении, что после генерации опыта и обучения мы переключаемся на жадную политику.

когда использовать, какой алгоритм?

алгоритм как Зарса обычно предпочтительнее в ситуациях, когда мы заботимся о производительности агента в процессе обучения / генерирующая опыт. Рассмотрим, например, что агент является дорогостоящим робот, который сломается, если упадет со скалы. Мы бы предпочли, чтобы он не падал слишком часто во время процесса обучения, потому что это дорого. Поэтому мы заботимся о его эффективности в процессе обучения. Однако мы также знаем, что нам нужно иногда действовать случайным образом (например, epsilon-greedy). Это означает, что роботу очень опасно ходить вдоль скалы, потому что он может решить действовать случайным образом (с вероятностью Эпсилон) и упасть. Так что, мы бы предпочли, чтобы быстро узнайте, что опасно находиться близко к утесу;даже если жадная политика сможет идти рядом с ней, не падая, мы знаем, что следуем политике Эпсилона жадности со случайностью, и мы заботимся об оптимизации нашей работы, учитывая, что мы знаем, что мы будем глупыми иногда. Это ситуация, когда Сарса была бы предпочтительнее.

алгоритм как Q-learning было бы предпочтительнее в ситуациях, когда мы не заботьтесь о производительности агента во время тренировочного процесса, но мы просто хотим, чтобы он научился оптимальной жадной политике, к которой мы в конечном итоге перейдем. Рассмотрим, например, что мы играем в несколько тренировочных игр (где мы иногда не против проиграть из-за случайности), а затем играем в важный турнир (где мы перестанем учиться и переключимся с epsilon-greedy на жадную политику). Вот где Q-обучение было бы лучше.


В Q-Learning

Это твое: Q-обучение: Q(St,At) = Q(St,At) + a [ R(t+1) + скидка * max Q (St+1,At) - Q (St,At) ]

следует изменить на Q-обучение: Q(St,At) = Q(St,At) + a [ R(t+1) + скидка * max Q (St+1,a) - Q (St,At) ]

Как вы сказали, Вы должны найти максимальное значение Q для эквалайзера обновления. путем изменения a, тогда у вас будет новый Q(St,At). Осторожно,a это дает вам максимальное значение Q не является следующим действием. На этом этапе вы знаете только следующее состояние (St+1), и перед переходом в следующий раунд вы хотите обновить St на St+1 (St

для каждого цикла;

  • выберите At из St, используя Q-value

  • возьмите и соблюдайте Rt+1 и St+1

  • обновить Q-значение с помощью эквалайзера.

  • St

пока St не станет терминалом