Оптимизация проксимальной политики (PPO) - это метод обучения без моделей, онлайн, on-policy, градиентное усиление политики. Этот алгоритм является типом обучения градиенту политики, который чередуется между выборкой данных через взаимодействие с окружающей средой и оптимизацией отсеченной суррогатной целевой функции с использованием стохастического градиентного спуска. Отсеченная функция суррогатной цели улучшает стабильность обучения, ограничивая размер изменения политики на каждом шаге [1].
Дополнительные сведения о различных типах агентов обучения усилению см. в разделе Агенты обучения усилению.
Агенты PPO могут обучаться в средах со следующими пространствами наблюдения и действий.
| Пространство наблюдения | Пространство действий |
|---|---|
| Дискретный или непрерывный | Дискретный или непрерывный |
Агенты PPO используют следующие представления актера и критика.
| Критик | Актер |
|---|---|
Критик функции значения V (S), который создается с помощью | Stochastic policy actor δ (S), который создается с помощью |
Во время обучения агент PPO:
Оценивает вероятности принятия каждого действия в пространстве действия и случайным образом выбирает действия на основе распределения вероятностей.
Взаимодействует со средой для нескольких шагов, используя текущую политику, прежде чем использовать мини-пакеты для обновления свойств актера и критика в течение нескольких периодов.
Если UseDeterministicExploitation опция в rlPPOAgentOptions имеет значение true действие с максимальной вероятностью всегда используется в sim и generatePolicyFunction. Это приводит к детерминированному поведению моделируемого агента и сгенерированной политики.
Для оценки политики и функции значения агент PPO поддерживает два аппроксиматора функции:
Actor λ (S) - актер принимает наблюдение S и возвращает вероятности принятия каждого действия в пространстве действия, когда находится в состоянии S.
Критик V (S) - критик берёт наблюдение S и возвращает соответствующее ожидание дисконтированного долгосрочного вознаграждения.
После завершения обучения обученная оптимальная политика сохраняется в акторе (S).
Дополнительные сведения о создании актеров и критиков для аппроксимации функций см. в разделе Создание представлений политик и функций значений.
Можно создать агент PPO с представлениями актера и критика по умолчанию на основе спецификаций наблюдения и действий из среды. Для этого выполните следующие действия.
Создайте спецификации наблюдения для среды. Если у вас уже есть объект интерфейса среды, вы можете получить эти спецификации с помощью getObservationInfo.
Создание спецификаций действий для среды. Если у вас уже есть объект интерфейса среды, вы можете получить эти спецификации с помощью getActionInfo.
При необходимости укажите количество нейронов в каждом обучаемом уровне или следует ли использовать уровень LSTM. Для этого создайте объект параметра инициализации агента с помощью rlAgentInitializationOptions.
Укажите параметры агента с помощью rlPPOAgentOptions объект.
Создание агента с помощью rlPPOAgent объект.
Кроме того, можно создавать представления актера и критика и использовать эти представления для создания агента. В этом случае убедитесь, что входные и выходные размеры представлений актера и критика соответствуют соответствующим спецификациям действия и наблюдения среды.
Создание актера с помощью rlStochasticActorRepresentation объект.
Создание критика с помощью rlValueRepresentation объект.
При необходимости укажите параметры агента с помощью rlPPOAgentOptions объект.
Создайте агента с помощью rlPPOAgent функция.
Агенты PPO поддерживают актеров и критиков, которые используют повторяющиеся глубокие нейронные сети в качестве аппроксиматоров функций.
Дополнительные сведения о создании актеров и критиков для аппроксимации функций см. в разделе Создание представлений политик и функций значений.
Агенты PPO используют следующий алгоритм обучения. Чтобы настроить алгоритм обучения, укажите параметры с помощью rlPPOAgentOptions объект.
Инициализируйте актера λ (S) со случайными значениями параметров
Инициализируйте критик V (S) случайными величинами параметра, ((V)).
Генерировать N опыт, следуя текущей политике. Последовательность опыта:
+ N − 1, Rts + N, Sts + N
Здесь St - это наблюдение состояния, At - действие, взятое из этого состояния, St + 1 - это следующее состояние, а Rt + 1 - это вознаграждение, полученное за переход из St в St + 1.
Когда агент находится в состоянии St, он вычисляет вероятность осуществления каждого действия в пространстве действия, используя λ (St), и случайным образом выбирает действие At на основе распределения вероятности.
ts - начальный временной шаг текущего набора N опытов. В начале учебного эпизода ts = 1. Для каждого последующего набора N переживаний в одном и том же тренировочном эпизоде ts ← ts + N.
Для каждой последовательности опыта, не содержащей терминального состояния, N равно ExperienceHorizon значение опции. В противном случае N меньше ExperienceHorizon и SN является состоянием терминала.
Для каждого шага эпизода t = ts + 1, ts + 2,..., ts + N вычислите функцию возврата и преимущества, используя метод, заданный AdvantageEstimateMethod вариант.
Конечный горизонт (AdvantageEstimateMethod = "finite-horizon") - Вычислите возврат Gt, который является суммой вознаграждения за этот шаг и дисконтированного будущего вознаграждения [2].
(Sts + N 'startV)
Вот, b 0 если Sts + N является состоянием терминала и1 в противном случае. То есть, если Sts + N не является терминальным состоянием, дисконтированное будущее вознаграждение включает в себя функцию значения дисконтированного состояния, вычисленную с использованием критической сети V.
Вычислите функцию преимущества Dt.
St 'startV)
Обобщенный оценщик преимуществ (AdvantageEstimateMethod = "gae") - Вычислите функцию Dt преимущества, которая представляет собой дисконтированную сумму временных разностных ошибок [3].
bγ V (St 'λ V)
Здесь, b является 0 если Sts + N является состоянием терминала и1 в противном случае. λ - коэффициент сглаживания, заданный с помощью GAEFactor вариант.
Вычислите возвращаемый Gt.
St 'startV)
Чтобы указать коэффициент дисконтирования γ для любого метода, используйте DiscountFactor вариант.
Учитесь на мини-пакетах опыта за K эпохи. Чтобы задать K, используйте NumEpoch вариант. Для каждой эпохи обучения:
Выборка случайного набора данных мини-партии размером М из текущего набора данных. Чтобы задать M, используйте MiniBatchSize вариант. Каждый элемент набора данных мини-партии содержит текущий опыт и соответствующие значения функций возврата и преимущества.
Обновите критические параметры, минимизировав Lcritic потерь во всех отобранных данных мини-партии.
Si 'startV)) 2
Обновите параметры актера, минимизировав потери Lactor во всех отобранных данных мини-партии. Если EntropyLossWeight опция больше нуля, затем к Lactor добавляется дополнительная потеря энтропии, что стимулирует исследование политики.
(ri (θμ), 1 +ε), 1−ε)
Здесь:
Di и Gi являются функцией преимущества и возвращаемым значением для i-го элемента мини-партии соответственно.
pcii (Si 'λ λ) - вероятность принятия действия Ai при нахождении в состоянии Si, учитывая обновлённые параметры политики,
pcii (Si 'λ, старый) - вероятность принятия действия Ai при нахождении в состоянии Si, при условии, что предыдущие параметры политики (λ λ, старый) находятся перед текущей эпохой обучения.
start- коэффициент зажима, заданный с помощью ClipFactor вариант.
Повторяйте шаги 3-5, пока обучающий эпизод не достигнет конечного состояния.
[1] Шульман, Джон, Филип Вольски, Прафулла Дхаривал, Алек Рэдфорд и Олег Климов. «Алгоритмы оптимизации проксимальной политики». ArXiv:1707.06347 [Cs], 19 июля 2017 года. https://arxiv.org/abs/1707.06347.
[2] Мних, Владимир, Адриа Пучдомех Бадиа, Мехди Мирза, Алекс Грейвз, Тимоти П. Лилликрап, Тим Харли, Дэвид Сильвер и Корей Кавуккуоглу. «Асинхронные методы обучения глубокому усилению». ArXiv:1602.01783 [Cs], 4 февраля 2016 г. https://arxiv.org/abs/1602.01783.
[3] Шульман, Джон, Филипп Мориц, Сергей Ливайн, Майкл Джордан и Питер Эббил. «Высокоразмерный непрерывный контроль с использованием обобщенной оценки преимуществ». ArXiv:1506.02438 [Cs], 20 октября 2018 года. https://arxiv.org/abs/1506.02438.
rlPPOAgent | rlPPOAgentOptions