В идеале вы хотите узнать истинную Q-функцию, то есть ту, которая удовлетворяет уравнению Беллмана
Q(s,a) = R(s,a) + gamma*E[Q(s',a')] forall s,a
, где ожидание превышает a'
по отношению к политике.
Во-первых, мы приближаем проблему и избавляемся от «ошибок», потому что у нас есть доступ только к нескольким выборкам (особенно при непрерывном действии, когда «поиск» приводит к бесконечному числу ограничений).Во-вторых, скажем, вы хотите изучить детерминистическую политику (если есть оптимальная политика, то есть детерминированная оптимальная политика).Тогда ожидание исчезает, но вам нужно как-то собрать образцы.Вот где возникает политика «поведения», которая обычно представляет собой просто шумную версию политики, которую вы хотите оптимизировать (наиболее распространенными являются e-жадность или вы добавляете гауссовский шум, если действие непрерывно).
Итак, теперь у вас есть образцы, собранные из политики поведения и целевой политики (детерминированной), которую вы хотите оптимизировать.Результирующее уравнение равно
Q(s,a) = R(s,a) + gamma*Q(s',pi(s'))
разница между двумя сторонами является ошибкой TD, и вы хотите минимизировать ее, учитывая выборки, собранные из политики поведения
min E[R(s,a) + gamma*Q(s',pi(s')) - Q(s,a)]
, где ожидаемое значение приблизительнос выборками (s,a,s')
, собранными с использованием политики поведения.
Если мы рассмотрим псевдокод Соруша, если действия дискретны, то pi(s') = max_A Q(s',A)
и правило обновления является производной от ошибки TD (0).
Вот несколько хороших простых текстов, чтобы узнать больше о TD: 1 , 2 , 3 , 4 .
РЕДАКТИРОВАТЬ
Просто чтобы подчеркнуть разницу между включенной и выключенной политикой. SARSA находится в режиме on-policy, потому что ошибка TD для обновления политики:
min E[R(s,a) + gamma*Q(s',a') - Q(s,a)]
a'
- это действие, собираемое при выборке данных с использованием политики поведения, а не pi(s')
(действие, которое целевая политика выберет в состоянии s'
).