Эта статья была впервые опубликована на:Уокер ИИ
Я считаю, что обучение с подкреплением — это, в некотором смысле, будущее искусственного интеллекта. - Отец обучения с подкреплением, Ричард Саттон
Проще говоря, с помощью обучения с подкреплением агент может узнать, в каком состоянии он находится и какие действия он должен предпринять, чтобы получить максимальное вознаграждение. Обучение с подкреплением делится на онлайн-обучение и офлайн-обучение.Эта статья начинается с Q-обучения (офлайн) и Sarsa (онлайн) и обсуждает сходства и различия между ними.
1. Кратко опишите Q-обучение
Q-Learning — это алгоритм в алгоритме обучения с подкреплением на основе ценности, Q — это Q(s, a), который должен предпринять действие a (a ∈ A) в состоянии s (s ∈ S) в определенный момент. ожидая возможности получить выгоду, среда будет возвращать соответствующее вознаграждение r в соответствии с действием агента, поэтому основная идея алгоритма состоит в том, чтобы построить состояние и действие в Q-таблицу для хранения Q значение, а затем выберите тот, который может получить максимальное значение в соответствии с действием значения Q. доход.
Более простое понимание состоит в том, что мы используем состояния на основеметод жадного выбора действия а, а затем выполнения действия а для получения следующего состояния s' и вознаграждения r
Среди них: 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' и а' были придуманы. Формула Сарсы выглядит следующим образом:
Вот основной код обновления Сарсы:
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' Поведение, которое приносит наибольшую пользу, но не обязательно может выбирать это поведение при принятии решения, а Сарса заключается в его устраненииВместо этого выберите значение Q фактического A' на S' и, наконец, найдите разницу между реальностью и оценкой, такой как Q-обучение, и обновите значение в таблице Q.
4. Резюме
И алгоритм Q-обучения, и алгоритм Сарса начинают с состояния s и используют определенную стратегию в соответствии с текущей Q-таблицей () выберите действие a’, затем наблюдайте за следующим состоянием s’ и снова выберите действие a’ в соответствии с Q-таблицей. Единственная разница состоит в том, что два метода выбора различны. Согласно описанию алгоритма, Q-обучение использует жадную стратегию (), то есть выбрать a' с наибольшим значением. В настоящее время нужно только вычислить, какое a' может заставить Q(s, a) принять максимальное значение, и это действие a' реально не используется; в то время как Сарса до сих пор используетстратегии, и на самом деле предпринять это действие a'. который:
Из-за разных методов обновления Q-learning — жадный и смелый алгоритм, который не заботится о ловушках, а Sarsa — консервативный алгоритм, очень чувствительный к ошибкам и гибели. Применение разных алгоритмов в разных сценариях дает разные преимущества.
PS: Для получения дополнительной технической галантереи, пожалуйста, обратите внимание на [Публичный аккаунт | xingzhe_ai] и обсудите с ходоками!