Обучение с подкреплением и выравнивание

PPO

Обрезка как односторонний тормоз — и почему асимметрия здесь главное

Шаг 112 из 117 · ~28 мин

Цель

L=E[min(rtAt, clip(rt,1ε,1+ε)At)],rt=πθ(atst)πold(atst)L = \mathbb{E}\Big[\htmlData{k=min}{\min}\Big(r_t A_t,\ \htmlData{k=clip}{\mathrm{clip}(r_t, 1-\varepsilon, 1+\varepsilon)}A_t\Big)\Big], \qquad r_t = \frac{\pi_\theta(a_t\mid s_t)}{\pi_{\text{old}}(a_t\mid s_t)}

Формула выглядит как «ограничить отношение диапазоном», но это не так — снаружи делает ограничение односторонним, и в этом всё содержание.

Асимметрия

Посчитаем целевую функцию при ε=0.2\varepsilon = 0.2:

rrA=+1A = +1A=1A = -1
0.50.50.50.50.8-0.8
0.80.80.80.80.8-0.8
1.01.01.01.01.0-1.0
1.21.21.21.21.2-1.2
1.51.51.2\mathbf{1.2}1.5-1.5

При положительном преимуществе цель перестаёт расти выше 1+ε1+\varepsilon: сделать хорошее действие ещё вероятнее не поощряется. Но ниже 1ε1-\varepsilon она продолжает падать — уменьшать вероятность хорошего действия по-прежнему наказывается.

При отрицательном преимуществе всё зеркально: цель перестаёт улучшаться ниже 1ε1-\varepsilon, но выше остаётся линейной.

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

Покрутите преимущество между +1+1 и 1-1 и посмотрите, с какой стороны исчезает производная.

отношение π/π_old целевая функция

без ограничения обрезка штраф KL
отношение r 1.35
ширина ε 0.2
преимущество A 1
штраф β 0
значение
1.2
производная
0
диапазон обрезки
0.8–1.2
Переключите знак преимущества и следите, с какой стороны кривая становится плоской. При A > 0 плоская область справа, при A < 0 — слева. Ограничение одностороннее: оно не даёт уходить дальше в ту сторону, куда толкает преимущество, и не мешает двигаться обратно.

Производная нулевая: шаг в эту сторону больше не поощряется. Обратите внимание, что вернуться при этом ничто не мешает.

Чего обрезка не делает

Стоит быть точным, потому что PPO часто описывают как «TRPO попроще».

TRPOPPO
ограничение на KLгарантированонет
гарантия монотонного улучшенияесть (при точном решении)нет
стоимость шагасопряжённые градиентыобычный SGD
число эпох по одним даннымоднанесколько

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

Именно поэтому в реализациях к обрезке добавляют:

  • ранний выход по измеренной KL: если расхождение превысило порог, оставшиеся эпохи пропускаются;
  • штраф за энтропию, чтобы политика не схлопывалась (урок 120);
  • нормализация преимуществ внутри батча — практически то же самое, что базовая линия из урока 070, но по батчу.

Разбор Engstrom и др. показывает, что часть успеха PPO приходится именно на эти детали, а не на саму обрезку. Полезная отрезвляющая деталь для чтения статей.

Как измерить KL по выборке

Раз KL нужна для раннего выхода, её надо оценивать. Наивная оценка logr-\log r несмещена для KL(πoldπθ)\mathrm{KL}(\pi_{\text{old}}\|\pi_\theta), но принимает отрицательные значения и шумна. Лучше работает

k3=(r1)logrk_3 = (r - 1) - \log r

Она неотрицательна всегда (выпуклость логарифма), имеет то же математическое ожидание и заметно меньшую дисперсию. Проверено: при π=(0.9,0.1)\pi = (0.9, 0.1) и πold=(0.5,0.5)\pi_{\text{old}} = (0.5, 0.5) обе оценки дают в среднем 0.51080.5108, что и есть точная KL(πoldπθ)\mathrm{KL}(\pi_{\text{old}}\|\pi_\theta).

Стоит заметить, чему именно они равны. Eold[logr]\mathbb{E}_{\text{old}}[-\log r] — это KL(πoldπθ)\mathrm{KL}(\pi_{\text{old}}\|\pi_\theta), а не обратная. Для того же примера прямая KL равна 0.3680.368, обратная — 0.5110.511; путать их при отладке легко, и разница здесь почти в полтора раза.

Итог

  • Обрезка делает ограничение односторонним: не даёт уходить дальше в выгодную сторону, не мешает возвращаться.
  • Ограничения на KL она не гарантирует — только убирает стимул.
  • Практика добавляет ранний выход по KL, энтропийный бонус и нормализацию преимуществ; часть успеха приходится на них.
  • Оценка k3=(r1)logrk_3 = (r-1) - \log r неотрицательна и менее шумна, чем logr-\log r, при том же среднем.
  • Величина, которую они оценивают, — обратная KL; путать направления дорого.

Источники

Проверки

0 из 2
  1. Односторонний тормоз

    Отметьте все верные утверждения о PPO.

  2. Обрезанная цель и её производная

    Реализуйте ppo_objective(ratio, advantage, epsilon) — верните [clipped, unclipped, gradient, penalty]:

    • unclipped = rAr \cdot A;
    • clipped = min(rA, clip(r,1ε,1+ε)A)\min\big(rA,\ \mathrm{clip}(r, 1-\varepsilon, 1+\varepsilon)\,A\big);
    • gradient — производная обрезанной цели по rr. Она равна AA там, где цель линейна, и нулю в плоской области;
    • penalty = unclippedclipped — сколько цели «съела» обрезка.

    Проверить себя можно так: penalty неотрицательна всегда, и она равна нулю ровно там, где обрезка не сработала.

    функция ppo_objective

    Загрузка редактора…

    Ctrl/⌘ + Enter