Введение в градиенты политики с Cartpole и Doom

1656621991 vvedenie v gradienty politiki s cartpole i doom

Томас Симонини

1*q00eKh5Tl9325LyfZrMwZA
Наша среда для этой статьи

Эта статья является частью курса глубокого подкрепления из Tensorflow?️. Проверьте приложение здесь.

В последних двух статьях о Q-обучении и глубоком Q обучении мы работали с алгоритмами обучения с подкреплением на основе ценностей. Чтобы выбрать, какое действие выполнить с учетом состояния, мы выполняем действие с высоким Q-значением (максимальное ожидаемое вознаграждение, которое я получу в каждом состоянии). Как следствие, в обучении на основе ценностей политика существует только благодаря этим оценкам ценности действия.

Сегодня мы изучим технику обучения с подкреплением на основе политики, называемой градиентами политики.

Мы внедрим двух агентов. Первый научится держать штангу в равновесии.

1*Wj5RZ_EqKIeCQ4E7DgdvCw

Вторым будет агент, который научится выживать во враждебной среде Doom, собирая здоровье.

1*dNEZ6GX3Fp4DCLj59XrnFQ
Наш агент градиентов политики

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

Это означает, что мы пытаемся напрямую оптимизировать нашу функцию политики π, не беспокоясь о функции значения. Мы непосредственно параметризируем π (выберем действие без функции значения).

Конечно мы можем использовать функцию значения для оптимизации параметров политики. Но функция значения не будет использоваться для выбора действия.

В этой статье вы узнаете:

  • Что такое градиент политики, его преимущества и недостатки
  • Как это воплотить в Tensorflow.

Зачем использовать методы на основе политики?

Два типа политики

Политика может быть детерминированной или стохастической.

Детерминированная политика – это политика, отражающая состояние и действия. Вы предоставляете ему состояние, и функция возвращает действие, которое необходимо выполнить.

1*NDEGtK42rEpYLkTPg2LBPA

Детерминированные политики используются в детерминированных средах. Это среда, где предпринимаемые действия определяют результат. Нет неопределенности. Например, когда вы играете в шахматы и перемещаете свою пешку с A2 на A3, вы уверены, что ваша пешка переместится на A3.

Не считая того, стохастическая политика выводит распределение вероятности по действиям.

1*YCABimP7x1wZZZKqz2CoyQ

Это означает, что вместо того, чтобы быть уверенным в осуществлении мер а (например, слева) есть вероятность, что мы возьмем другой (в этом случае 30%, что мы возьмем на юг).

Стохастическая политика используется, когда среда неопределенна. Мы называем этот процесс частично наблюдаемым процессом принятия решений Маркова (POMDP).

В большинстве случаев мы будем использовать этот второй тип политики.

Преимущества

Но Deep Q Learning – это действительно здорово! Зачем использовать методы обучения с подкреплением на основе политики?

Использование градиентов политики имеет три основных преимущества.

Конвергенция

Во-первых, методы на основе политики обладают лучшими свойствами конвергенции.

Проблема с методами, основанными на ценностях, состоит в том, что они могут испытывать большие колебания во время обучения. Это объясняется тем, что выбор действия может резко измениться при сколь угодно небольшом изменении оцененных значений действия.

С другой стороны, с градиентом политики мы просто следим за градиентом, чтобы найти лучшие параметры. Мы видим плавное обновление нашей политики на каждом шагу.

Поскольку мы придерживаемся градиента, чтобы найти наилучшие параметры, мы гарантированно сходимся к локальному максимуму (наихудший случай) или глобальному максимуму (наилучший).

1*0lYcY5TBSqfNwdu8TduB6g

Градиенты политики более эффективны в пространстве действий с большим измерением

Второе преимущество состоит в том, что градиенты политики более эффективны в пространствах действий с большим размером или при использовании непрерывных действий.

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

Но что, если у нас есть бесконечная возможность действий?

Например, с самостоятельно управляющим автомобилем в каждом состоянии вы можете иметь (почти) бесконечный выбор действий (поворот колеса на 15°, 17,2°, 19,4°, сигнал…). Нам нужно будет вывести Q-значение для каждого возможного действия!

С другой стороны, в методах на основе политики вы просто корректируете параметры напрямую: благодаря этому вы начнете понимать, каким будет максимум, а не вычислять (оценивать) максимум на каждом шагу.

1*_hAkM4RIxjKjKqAYFR_9CQ

Градиенты политики могут учить стохастические политики

Третье преимущество состоит в том, что градиент политики может усвоить стохастическую политику, а функции значений нет. Это имеет два результата.

Одно из них состоит в том, что нам не нужно внедрять компромисс между исследованиями/эксплуатацией. Стохастическая политика позволяет нашему агенту исследовать пространство сословий, не выполняя всегда одинаковых действий. Это объясняется тем, что выводит распределение вероятности по действиям. Как следствие, он обрабатывает компромисс исследования/использования без жесткой кодировки.

Мы также избавляемся от проблемы восприятия псевдонимов. Восприятие – это когда мы имеем два состояния, которые кажутся (или на самом деле) одинаковыми, но требуют различных действий.

Давайте возьмем пример. У нас есть умный пылесос, и его цель – высасывать пыль и не убивать хомяков.

1*Zy9JMzCF3zwWDbjPaiKd2w
Этот пример был вдохновлен великолепным курсом Дэвида Сильвера: http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching_files/pg.pdf

Наш пылесос может принимать только то, где находятся стены.

Проблема: два красных случая псевдонимы, потому что агент воспринимает верхнюю и нижнюю стенку для каждого двоих.

В соответствии с детерминированной политикой политика будет двигаться вправо или влево. В любом случае наш агент застрянет и никогда не будет высасывать пыль.

1*V-jY8KezWKfsca_DExtXPQ

Согласно алгоритму RL, основанному на ценностях, мы изучаем квазидетерминированную политику («стратегия жадных эпсилонов»). Как следствие, наш агент может потратить много времени, прежде чем найти пыль.

Кроме того, оптимальная стохастическая политика будет случайным образом двигаться влево или вправо в серых состояниях. Как следствие, он не застрянет и с высокой вероятностью достигнет целевого состояния.

1*zwe5kBczuErX8c0TH3rAmg

Недостатки

Конечно, градиенты политики имеют один большой недостаток. В большинстве случаев они сходятся к локальному максимуму, а не к глобальному оптимуму.

Вместо глубокого Q-Learning, не всегда пытающегося достичь максимума, градиенты политики сближаются медленнее, шаг за шагом. Их тренировка может занять больше времени.

Однако мы увидим, что есть решение этой проблемы.

У нас есть политика π, имеющая параметр θ. Это π выводит распределение вероятностей действий.

0*354cfoILK19WFTWa
Вероятность выполнения действия данного состояния s с параметрами theta.

Прекрасно! Но как мы узнаем, хороша ли наша политика?

Помните, что политика может рассматриваться как проблема оптимизации. Мы должны найти лучшие параметры (θ), чтобы максимизировать функцию оценки J(θ).

0*PfUAJaIGoEsvfbCG

Есть два шага:

  • Измерьте качество π (политики) с помощью функции оценки политики J(θ)
  • Используйте подъем градиента политики, чтобы найти лучший параметр θ, который улучшает наше π.

Основная идея здесь состоит в том, что J(θ) расскажет нам, насколько хорошо наше π. Повышение градиента политики поможет нам найти лучшие параметры политики, чтобы максимизировать выбор хороших действий.

Первый шаг: функция оценки политики J(θ)

Чтобы определить, насколько хорошо наша политика, мы используем функцию, называемую целевой функцией (или функцией оценки политики), которая вычисляет ожидаемое вознаграждение от политики.

Три метода все равно хорошо работают для оптимизации политик. Выбор зависит только от среды и целей, которые вы ставите.

Во-первых, в эпизодической среде мы можем употреблять начальное значение. Вычислите среднее значение отдачи от первого шага (G1). Это совокупная скидка за весь эпизод.

1*tP4l4IrIG3aMLTrMt-1-HA

Идея проста. Если я всегда начинаю в каком-то состоянии s1, какое общее вознаграждение я получу от этого исходного состояния до конца?

Мы хотим найти политику, которая максимизирует G1, потому что это будет оптимальная политика. Это связано с гипотезой вознаграждения, объясненной первой статьей.

К примеру, в Breakout я играю в новую игру, но я потерял мяч после уничтожения 20 кирпичей (конец игры). Новые эпизоды всегда начинаются в том же состоянии.

0*bNljRIeIigzMKh_F

Я вычисляю оценку с помощью J1(θ). Ударить 20 кирпичей – это хорошо, но я хочу улучшить счет. Для этого нужно улучшить распределение вероятностей моих действий, настроив параметры. Это происходит на шаге 2.

В непрерывной среде мы можем использовать среднее значение, поскольку не можем полагаться на конкретное исходное состояние.

Каждое значение состояния теперь взвешивается (поскольку некоторые встречаются больше, чем другие) по вероятности наступления соответствующего состояния.

1*S-XLkrvPuVUqLrFW1hmIMg

В-третьих, мы можем использовать среднее вознаграждение за время. Идея состоит в том, что мы хотим получить наибольшее вознаграждение за время.

1*3SejRRby6vAnThZ8c2UaQg

Второй шаг: повышение градиента политики

У нас есть функция оценки политики, которая говорит нам, насколько хороша наша политика. Теперь мы хотим найти параметр θ, максимизирующий эту функцию оценки. Максимизация функции оценки означает поиск оптимальной политики.

Чтобы максимизировать функцию оценки J(θ), нам нужно произвести градиентный подъем параметров политики.

Градиентный подъем представляет собой обратный градиентный спуск. Помните, что градиент всегда указывает на самое крутое изменение.

При градиентном спуске мы берём направление наиболее крутого уменьшения функции. При градиентном подъеме берём направление наиболее крутого роста функции.

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

Но функция оценки не является ошибкой! Это функция оценки, и поскольку мы хотим максимизировать оценку, нам нужен градиентный подъем.

Идея состоит в том, чтобы найти градиент к текущей политике π, которая обновляет параметры в направлении наибольшего увеличения, и выполнить итерацию.

0*oh-lF13hYWt2Bd6V

Ладно, теперь давайте реализуем это математически. Эта часть немного сложна, но важно понять, как мы достигаем формулы градиента.

Мы хотим найти лучшие параметры θ*, которые максимизируют оценку:

1*xoGZI5v6lBS8s5OtBteJMA

Нашу функцию оценки можно определить как:

1*dl4Fp0Izhv6bC0-qgThByA

Что является общим итогом ожидаемого вознаграждения по данной политике.

Теперь, поскольку мы хотим произвести градиентный подъем, нам следует различить нашу функцию оценки J(θ).

Нашу функцию оценки J(θ) можно также определить как:

1*qySDorYr55KgVJ6H3bu_6Q

Мы написали функцию таким образом, чтобы показать проблему, с которой мы сталкиваемся.

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

Таким образом, может быть сложно найти изменения в политике, чтобы обеспечить улучшение. Это связано с тем, что производительность зависит от выбора действий и распределения состояний, в которых эти выборки сделаны.

На оба этих параметра влияют параметры политики. Воздействие параметров политики на действия легко найти, но как найти влияние политики на государственное распределение? Функция среды неизвестна.

Как следствие, мы сталкиваемся с проблемой: как оценить ∇ (градиент) относительно политики θ, когда градиент зависит от неизвестного влияния изменений политики на распределение состояния?

Решением будет использование теоремы о градиенте политики. Это обеспечивает аналитическое выражение для градиента ∇ J(θ) (производительности) в отношении политики θ, которое не предусматривает дифференцировку распределения состояний.

Итак, посчитаем:

1*dl4Fp0Izhv6bC0-qgThByA
1*i72jd_Hrimu9Aag70WGDmQ

Помните, что мы в ситуации стохастической политики. Это означает, что наша политика выводит распределение вероятностей π(τ;θ). Он выводит возможность выполнения этой серии шагов (s0, a0, r0…), учитывая наши текущие параметры θ.

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

Здесь мы воспользуемся хитростью отношения правдоподобия, заменяющего полученную дробь на журнал вероятности.

1*iKhO5anOAfc3oqJOM2i_8A

Теперь давайте превратим суммирование обратно в ожидание:

1*4Y7BwUu2JBRIJ8bxXkzDjg

Как видите, нам нужно лишь вычислить производную функции политики журнала.

Теперь, когда мы сделали это, а это было много, мы можем сделать вывод о градиентах политики:

1*zjEh737KfmDUzNECjW4e4w

Этот градиент политики говорит нам, как мы должны смещать распределение политики через изменение параметров θ, если мы хотим получить более высокий балл.

R(tau) похож на скалярную оценку значения:

  • Если R(tau) высок, это означает, что в среднем мы совершали действия, приводящие к высокому вознаграждению. Мы хотим увеличить вероятность увиденных действий (увеличить вероятность выполнения этих действий).
  • Кроме того, если R(tau) низкий, мы хотим снизить вероятность увиденных действий.

Этот градиент политики заставляет параметры двигаться больше всего в направлении, способствующем действиям, имеющим наивысшую отдачу.

Градиенты политики Монте-Карло

В нашем блокноте мы используем этот подход для разработки алгоритма градиента политики. Мы используем Монте-Карло, потому что наши задачи можно разделить на эпизоды.

Initialize θfor each episode τ = S0, A0, R1, S1, …, ST:    for t <-- 1 to T-1:        Δθ = α ∇theta(log π(St, At, θ)) Gt        θ = θ + Δθ
For each episode:    At each time step within that episode:         Compute the log probabilities produced by our policy function. Multiply it by the score function.         Update the weights

Но мы сталкиваемся с проблемой с этим алгоритмом. Поскольку мы вычисляем R только в конце эпизода, мы усредняем все действия. Даже если некоторые из действий были очень плохими, если наша оценка достаточно высока, мы будем оценивать все действия как хорошие.

Итак, чтобы иметь правильную политику, нам нужно много образцов… что приводит к медленному обучению.

Как улучшить нашу модель?

В следующих статьях мы увидим некоторые улучшения:

  • Actor Critic: гибрид между алгоритмами, основанными на ценностях и алгоритмами на основе политики.
  • Проксимальные градиенты политики: гарантирует, что отклонение от предыдущей политики остается относительно небольшим.

Давайте реализуем это с помощью Cartpole и Doom

Мы сняли видео, где реализуем a Агент градиента политики с Tensorflow, который учится играть в Doom ?? в среде Deathmatch.

Вы можете получить прямой доступ к тетрадям в репозитории Deep Reinforcement Learning Course.

Котловик:

Дум:

Это все! Вы только что создали агента, который учится выживать в среде Doom. Прекрасно!

Не забудьте реализовать каждую часть кода самостоятельно. Очень важно попытаться изменить код, который я вам дал. Попытайтесь добавить эпохи, изменить архитектуру, изменить скорость обучения, использовать более жесткую среду… и так далее. Веселитесь!

В следующей статье я расскажу о последних усовершенствованиях глубокого Q-обучения:

  • Фиксированные Q-значения
  • Приоритетное воспроизведение опыта
  • Двойной DQN
  • Дуэльные сети

Если вам понравилась моя статья, пожалуйста, нажмите кнопку ? ниже столько раз, сколько вам понравилась статья поэтому другие люди увидят это здесь на Medium. И не забудь следовать за мной!

Если у вас есть какие-либо мнения, комментарии, вопросы, не стесняйтесь оставлять комментарии ниже или отправлять мне электронное письмо: hello@simoninithomas.com или твиты @ThomasSimonini.

1*_yN1FzvEFDmlObiYsstIzg
1*mD-f5VN1SWYvhrZAbvSu_w
1*PqiptT-Cdi8uwosxuFn2DQ

Продолжайте учиться, оставайтесь замечательными!

Курс глубокого подкрепления с Tensorflow?️

? Программа обучения

? Видео версия

Часть 1: Введение в учебу с подкреплением

Часть 2: более глубокое погружение в обучение с подкреплением с помощью Q-Learning

Часть 3: Введение в Deep Q-Learning: давайте поиграем в Doom

Часть 3+: Улучшение в глубоком обучении Q: двойной DQN на дуэли, повторение приоритетного опыта и фиксированные Q-цели

Часть 4: Введение в градиенты политики с Doom и Cartpole

Часть 5: Введение в методы Advantage Actor Critic: давайте поиграем в Ежа Соника!

Часть 6: Проксимальная оптимизация политики (PPO) из Sonic the Hedgehog 2 и 3

Часть 7: Обучение на основе любопытства стало легким Часть I

Добавить комментарий

Ваш адрес email не будет опубликован.