Каков способ понять алгоритм оптимизации проксимальной политики в RL?

Я знаю основы обучения подкреплению, но какие термины нужно понимать, чтобы уметь читать бумага PPO arxiv ?

какова дорожная карта для изучения и использования PPO ?

3 ответов


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

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


Во-первых, заземлить эти точки в оригинале бумага PPO:

мы ввели [PPO], семейство методов оптимизации политики, которые используют несколько эпох стохастического подъема градиента для выполнения каждого обновления политики. Эти методы обладают стабильностью и надежностью trust-region [TRPO] методы, но гораздо проще реализовать, требуя только несколько строк кода изменяются на реализацию градиента политики ванили, применимый в более общих настройках (например, при использовании совместной архитектуры для функции политики и значения), и имеет лучшую общую производительность.


1. Обрезанная Суррогатная Цель

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

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

PG objective

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

метод градиента политики ванили использует вероятность журнала вашего действия(log π (a | s)) для отслеживания влияния действий, но вы могли бы представить себе использование другой функции для этого. Еще такая функция, введенная в этой статье, использует вероятность действия под текущая политика (π (a / s)), деленное на вероятность действия под вашим предыдущие политики (n_old (a / s)). Это выглядит немного похоже на выборку важности, если вы знакомы с этим:

r eq

этот r (θ) будет больше 1, когда действие больше вероятно для вашего настоящее политика, чем это для старый политика; это будет между 0 и 1, когда действие менее вероятно для вашей текущей политики, чем для вашей старой.

теперь, чтобы построить целевую функцию с этим r(θ), мы можем просто поменять ее на член log π (a|s). Вот что делается в методе TRPO:

TRPO objective

но что произойдет здесь, Если ваше действие много более вероятно (как 100x больше) для вашего текущего политика? r (θ) будет иметь тенденцию быть действительно большим и приведет к принятию больших шагов градиента, которые могут разрушить вашу политику. Чтобы справиться с этим, метод TRPO добавляет несколько дополнительных колоколов (например, ограничения дивергенции KL), чтобы ограничить сумму, которую политика может изменить, и помочь гарантировать, что она монотонно улучшается.

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

annotated clipped surrogate

первый член (синий) внутри минимизации является тем же(r (θ)a) термином, который мы видели в цели TRPO. Второй член (красный) - это версия, в которой (r (θ)) обрезается между (1 - e, 1 + e). (в статье они утверждают, что хорошее значение для e составляет около 0,2, поэтому r может варьироваться между ~(0,8, 1.2)). Затем, наконец, берется минимизация обоих этих терминов (зеленый).

Не торопитесь и внимательно посмотрите на уравнение и убедитесь, что вы знаете, что означают все символы, и математически, что происходит. Просмотр кода также может помочь; вот соответствующий раздел в обоих OpenAI базовые показатели и anyrl-py реализаций.

большой.

Далее, давайте посмотрим, какой эффект создает функция L clip. Вот диаграмма из бумаги, которая отображает значение цели клипа, когда преимущество положительное и отрицательное:

Clip intro

в левой половине диаграммы, где (A > 0), это где действие имело оценочное положительное влияние на результат. На правой половине диаграммы, где (a

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

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

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

но почему мы позволяем r (θ) расти бесконечно в дальней правой части диаграммы? Это кажется странным, как первый, но что заставит r(θ) расти действительно большим в этом случае? R(θ) рост в этой области будет вызван градиентным шагом, который сделал наше действие гораздо более вероятно, а он, оказывается, сделать нашу политика хуже. Если бы это было так, мы хотели бы иметь возможность отменить этот шаг градиента. И так уж случилось, что функция L clip позволяет это. Функция здесь отрицательная, поэтому градиент скажет нам идти в другом направлении и сделать действие менее вероятным на сумму, пропорциональную тому, насколько мы его испортили.

и если вам все еще интересно, почему мы берем минимизацию неперехваченных и обрезанных терминов, это регион, который он объясняет он. Это область, которая соответствует отстегнул Р(θ), имеющий меньшее значение, чем обрезанные версии и возвращаться к минимизации.

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

и вот диаграмма, резюмирующая это:

L Clip Diagram

и вот в чем суть. Обрезанная суррогатная цель-это просто замена, которую вы можете использовать в градиенте политики ванили, и ее цель-ограничить эффективные изменения, которые вы можете сделать на каждом шаге, чтобы улучшить стабильность. Одна вещь, которую я не обсуждал, - это то, что означает, что PPO является "нижней границей", как обсуждалось в статье. Для большего об этом, я бы предложил эта часть лекции автор дал.

2. Несколько эпох для политики обновление

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

PPO запускает политику с помощью N параллельные актеры каждый собирая данные, и после этого он образцы мини-пакеты этих данных к поезд K эпохи с использованием обрезанной суррогатной целевой функции. См. полный алгоритм ниже (приблизительные значения param:K = 3-15, M = 64-4096, T (горизонт) = 128-2048):

PPO Algo

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

новой части заключается в том, что они могут для запуска K эпохи градиентного восхождения на образцах траектории. Как говорится в статье, было бы неплохо запустить оптимизацию градиента политики vanilla для нескольких проходов по данным, чтобы вы могли узнать больше из каждого образца. Однако это, как правило, не удается на практике для ванильных методов, потому что они принимают слишком большие шаги на местных образцах, и это разрушает политику. ППО, с другой стороны, имеет встроенный механизм для предотвращения слишком много обновление.

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

....

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


PPO-это простой алгоритм, который попадает в класс алгоритмов оптимизации политики (В отличие от методов, основанных на значениях, таких как DQN). Если вы" знаете " основы RL (я имею в виду, если вы хотя бы внимательно прочитали некоторые первые главы Саттон книги например), то первым логическим шагом является знакомство с алгоритмами градиента политики. Вы можете читать этой статье или Глава 13 Саттон книги новое издание. Кроме того, вы также можете прочитать этой статье о TRPO, который является предыдущей работой от первого автора PPO (эта статья имеет многочисленные нотационные ошибки; просто обратите внимание). Надеюсь, это поможет. -- Мехди!--9-->


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

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

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

с TRPO мы вычисляем ограничение KL во время обновления и находим скорость обучения для этой проблемы (через Матрицу Фишера и сопряженный градиент). Это несколько грязно реализовать.

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