Насколько отличается Q-Learning от Sarsa в обучении с подкреплением?

обучение с подкреплением

Эта статья была впервые опубликована на:Уокер ИИ

Я считаю, что обучение с подкреплением — это, в некотором смысле, будущее искусственного интеллекта. - Отец обучения с подкреплением, Ричард Саттон

Проще говоря, с помощью обучения с подкреплением агент может узнать, в каком состоянии он находится и какие действия он должен предпринять, чтобы получить максимальное вознаграждение. Обучение с подкреплением делится на онлайн-обучение и офлайн-обучение.Эта статья начинается с Q-обучения (офлайн) и Sarsa (онлайн) и обсуждает сходства и различия между ними.

1. Кратко опишите Q-обучение

Q-Learning — это алгоритм в алгоритме обучения с подкреплением на основе ценности, Q — это Q(s, a), который должен предпринять действие a (a ∈ A) в состоянии s (s ∈ S) в определенный момент. ожидая возможности получить выгоду, среда будет возвращать соответствующее вознаграждение r в соответствии с действием агента, поэтому основная идея алгоритма состоит в том, чтобы построить состояние и действие в Q-таблицу для хранения Q значение, а затем выберите тот, который может получить максимальное значение в соответствии с действием значения Q. доход.

Более простое понимание состоит в том, что мы используем состояния на основеεgreedy\varepsilon-greedy​метод жадного выбора действия а, а затем выполнения действия а для получения следующего состояния s' и вознаграждения r

Q(s,a)=Q(s,a)+α*(r+γ*max(Q(s',a*))Q(s,a))Q(s,a) = Q(s,a) + α*(r+γ*{max}(Q(s',a^*))-Q(s,a))

Среди них: S Представляет текущее состояние, A представляет собой текущее поведение, α - это скорость обучения, R - значение вознаграждения, A * представляет собой текущий набор дополнительных поведений, а γ - это ценность веса текущая награда.

Прикрепите основной код сюда:

# 更新S
def chose_direction(s, q_table):
    if np.random.uniform() > EPSILON or q_table.iloc[s, :].all() == 0:
        direction = np.random.choice(ACTIONS)
    else:
        direction = ACTIONS[q_table.iloc[s, :].argmax()]
    return direction
# 学习过程
s = 0
is_terminal = False
step_count = 0
while not is_terminal:
    a = chose_direction(s, q_table)
    s_, r = update(s, a)
    q_predict = q_table.loc[s, a]
    if s_ != "terminal":
        q_target = r + GAMA*q_table.iloc[s_, :].max()
    else:
        q_target = r
        is_terminal = True
    q_table.loc[s, a] += ALPHA*(q_target-q_predict)
    a = s_

2. Кратко опишите Сарсу

Часть принятия решений в Sarsa точно такая же, как и в Q-Learning.Для принятия решений используется таблица Q. Мы выберем действия с относительно большими значениями в таблице Q и реализуем их в среде в обмен на награды. Но обновление Сарсы отличается. Значение пяти букв слова «сарса»: с (текущее состояние), а (текущее поведение), г (вознаграждение), с (следующее состояние), а (следующее поведение), что означает, что мы выполняем этот шаг. текущий s соответствует а, а следующие s' и а' были придуманы. Формула Сарсы выглядит следующим образом:

Q(s,a)=Q(s,a)+α*(r+γ*Q(s',a')Q(s,a))Q(s,a) = Q(s,a) + α*(r+γ*Q(s',a')-Q(s,a))

Вот основной код обновления Сарсы:

s = 0
is_terminal = False
step_count = 0
a = chose_direction(s, q_table)
while not is_terminal:
    s_, r = update(s, s)
    q_predict = q_table.loc[s, a]
    if s != "terminal" and s_ != "terminal":
        a_ = chose_direction(s_, q_table)
        q_target = r + GAMA*q_table.loc[s_, a_]
    else:
        q_target = r
        is_terminal = True
    q_table.loc[s,a] += ALPHA*(q_target-q_predict)
    s = s_
    a = a_

3. Пример для сравнения сходств и различий

3.1 Карта игры

游戏地图

  • серый для ловушек

  • Желтый — бонусный балл

    Начальная позиция в игре — 1, и достижение ловушки или точки вознаграждения считается концом игры.

3.2 Сравнение и анализ результатов

对比结果

  • Серый — текущее состояние, если такое поведение приведет к ловушке
  • Желтый — это текущее состояние, в котором вы получите награду, если выполните это действие.

Оба пойдут к точке вознаграждения Q-обучение выбирает ближайшую дорогу, в то время как Сарса часто избегает ловушки рано Например, в 13 Q-обучение часто выбирает только идти вверх, но это видно из таблицы что Сарса находится в 13. В этот момент, чтобы избежать опасности, выбор влево.

Q-обучение и Сарса абсолютно одинаковы в части принятия решений.Решения принимаются в виде таблицы Q. Поведение с большим значением выбирается из таблицы Q и применяется к среде в обмен на вознаграждение.Q -обучение заключается в выборе S' Поведение, которое приносит наибольшую пользу, но не обязательно может выбирать это поведение при принятии решения, а Сарса заключается в его устранении maxQ\ {max}QВместо этого выберите значение Q фактического A' на S' и, наконец, найдите разницу между реальностью и оценкой, такой как Q-обучение, и обновите значение в таблице Q.

4. Резюме

И алгоритм Q-обучения, и алгоритм Сарса начинают с состояния s и используют определенную стратегию в соответствии с текущей Q-таблицей (εgreedy\varepsilon-greedy​) выберите действие a’, затем наблюдайте за следующим состоянием s’ и снова выберите действие a’ в соответствии с Q-таблицей. Единственная разница состоит в том, что два метода выбора различны. Согласно описанию алгоритма, Q-обучение использует жадную стратегию (greedygreedy​), то есть выбрать a' с наибольшим значением. В настоящее время нужно только вычислить, какое a' может заставить Q(s, a) принять максимальное значение, и это действие a' реально не используется; в то время как Сарса до сих пор используетεgreedy\varepsilon-greedyстратегии, и на самом деле предпринять это действие a'. который:

Из-за разных методов обновления Q-learning — жадный и смелый алгоритм, который не заботится о ловушках, а Sarsa — консервативный алгоритм, очень чувствительный к ошибкам и гибели. Применение разных алгоритмов в разных сценариях дает разные преимущества.


PS: Для получения дополнительной технической галантереи, пожалуйста, обратите внимание на [Публичный аккаунт | xingzhe_ai] и обсудите с ходоками!