Обучение с подкреплением и выравнивание
PPO
Обрезка как односторонний тормоз — и почему асимметрия здесь главное
Цель
Формула выглядит как «ограничить отношение диапазоном», но это не так —
Асимметрия
Посчитаем целевую функцию при :
При положительном преимуществе цель перестаёт расти выше : сделать хорошее действие ещё вероятнее не поощряется. Но ниже она продолжает падать — уменьшать вероятность хорошего действия по-прежнему наказывается.
При отрицательном преимуществе всё зеркально: цель перестаёт улучшаться ниже , но выше остаётся линейной.
Прочтение получается такое: обрезка запрещает уходить далеко в выгодную сторону и не мешает возвращаться. Если предыдущий шаг занёс политику слишком далеко, градиент не обнуляется — он тянет обратно. Это существенно: симметричное ограничение заперло бы политику в плохом месте.
Покрутите преимущество между и и посмотрите, с какой стороны исчезает производная.
отношение π/π_old целевая функция
- значение
- 1.2
- производная
- 0
- диапазон обрезки
- 0.8–1.2
Производная нулевая: шаг в эту сторону больше не поощряется. Обратите внимание, что вернуться при этом ничто не мешает.
Чего обрезка не делает
Стоит быть точным, потому что PPO часто описывают как «TRPO попроще».
| TRPO | PPO | |
|---|---|---|
| ограничение на KL | гарантировано | нет |
| гарантия монотонного улучшения | есть (при точном решении) | нет |
| стоимость шага | сопряжённые градиенты | обычный SGD |
| число эпох по одним данным | одна | несколько |
Первая строка — существенная уступка. Обрезка обнуляет градиент за границей, но если несколько эпох подряд идут по одним данным, шаг может всё равно унести политику далеко: отношение пересчитывается относительно старой политики, и обрезка ограничивает не суммарное смещение, а поощрение за него.
Именно поэтому в реализациях к обрезке добавляют:
- ранний выход по измеренной KL: если расхождение превысило порог, оставшиеся эпохи пропускаются;
- штраф за энтропию, чтобы политика не схлопывалась (урок 120);
- нормализация преимуществ внутри батча — практически то же самое, что базовая линия из урока 070, но по батчу.
Разбор Engstrom и др. показывает, что часть успеха PPO приходится именно на эти детали, а не на саму обрезку. Полезная отрезвляющая деталь для чтения статей.
Как измерить KL по выборке
Раз KL нужна для раннего выхода, её надо оценивать. Наивная оценка несмещена для , но принимает отрицательные значения и шумна. Лучше работает
Она неотрицательна всегда (выпуклость логарифма), имеет то же математическое ожидание и заметно меньшую дисперсию. Проверено: при и обе оценки дают в среднем , что и есть точная .
Стоит заметить, чему именно они равны. — это , а не обратная. Для того же примера прямая KL равна , обратная — ; путать их при отладке легко, и разница здесь почти в полтора раза.
Итог
- Обрезка делает ограничение односторонним: не даёт уходить дальше в выгодную сторону, не мешает возвращаться.
- Ограничения на KL она не гарантирует — только убирает стимул.
- Практика добавляет ранний выход по KL, энтропийный бонус и нормализацию преимуществ; часть успеха приходится на них.
- Оценка неотрицательна и менее шумна, чем , при том же среднем.
- Величина, которую они оценивают, — обратная KL; путать направления дорого.
Источники
- Schulman и др. — Proximal Policy Optimization Algorithms — Исходная работа, обрезка и адаптивный штраф
- Engstrom и др. — Implementation Matters in Deep Policy Gradients — Что в PPO работает на самом деле — разбор деталей реализации
- Schulman — Approximating KL Divergence — Оценки KL по выборке, включая k3
Проверки
0 из 2Односторонний тормоз
Отметьте все верные утверждения о PPO.
Обрезанная цель и её производная
Реализуйте
ppo_objective(ratio, advantage, epsilon)— верните[clipped, unclipped, gradient, penalty]:unclipped= ;clipped= ;gradient— производная обрезанной цели по . Она равна там, где цель линейна, и нулю в плоской области;penalty=unclipped−clipped— сколько цели «съела» обрезка.
Проверить себя можно так:
penaltyнеотрицательна всегда, и она равна нулю ровно там, где обрезка не сработала.Загрузка редактора…
Ctrl/⌘ + Enter