- Регистрация
- 23 Авг 2023
- Сообщения
- 3,969
- Реакции
- 0
- Баллы
- 36
Ofline
Продолжение постов про RL:
1) Intro Reinforcement Learning
2) Reinforcement Learning: Model-free & Deep RL
3) Reinforcement Learning: Policy gradient methods
Если вы заметите ошибки в формулах или опечатки — буду очень благодарна, если укажете на них 🙈.
Если вдруг формулы покажутся сложными, то отмечу, что главная ценность этой статьи – в объяснении того, откуда эти формулы берутся и что они означают. Однако если какие-то моменты останутся непонятными, то я рада доработать текст, чтобы сделать его более доступным.
Мой тг канал: not magic neural networks
Полезные ссылки:
1) Practical_RL/week09_policy_II
2) Policy gradient method
3) A Natural Policy Gradient
4) Метод сопряженных градиентов
5) Trust Region Policy Optimization (TRPO)
6) Proximal Policy Optimization (PPO)
7) DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models
1. Прежде всего вспомним Policy Gradient методы
1.1. Policy Gradient Theorem
Пусть мы имеем траектории
Траектории
Заметим, что
Мы научились максимизировать функционал
Распишем Монте-Карло оценку:
Перемножим скобки
Разделим награду на «прошлое» и «будущее» относительно
Награда
Рассмотрим часть формулы [1.3]:
Распишем математическое ожидание по определению:
Применим "обратный" logderivative trick
По определению политики
Таким образом:
Возвращаясь к формуле
Вынесем
Применим закон полного математического ожидания
где
Заметим, что это определение
Сформулировали Policy Gradient Theorem:
На практике оказалось, что данная формула имеет большую дисперсию. Для того чтобы снизить дисперсию решили вычитать некий
1.2. Baseline и Advantage
Можно доказать, что если брать в качестве
Таким образом:
где
Однако, на практике оказывается удобнее эквивалентная
Математическое ожидание берётся по данным, сгенерированным самой
— вероятность быть в состояниина шаге.
– нормировка, чтобы это было распределение
Описанные выше алгоритмы REINFORCE и A2C (Advantage Actor–Critic) являются on-policy, что делает их неэффективными с точки зрения использования данных (градиент оптимизируемой политики
При этом, сам градиентный спуск не такой дорогой как сбор данных (траекторий). Естественным образом возникает желание оптимизировать полезность политики
2. Как оптимизировать новую политики по данным из старой политики
Для этого в формуле
2.1. Заменяем advantage
Рассмотрим новый функционал:
Теперь мы хотим чтобы новая политика была как можно лучше старой.
И прежде чем расписывать новый функционал, проделаем "подготовительную" работу:
1) Представим
2) Распишем разность
3) Распишем новый функционал
2.1.1. Телескопическая сумма
Телескопическая сумма — это сумма вида:
где каждое слагаемое ряда представляется в виде разности и поэтому частичная сумма ряда упрощается.
Название "телескопическая сумма" дано по аналогии с трубой телескопа, который может уменьшить свою длину, сложившись несколько раз.
Мы будем пользоваться телескопической суммой для любой последовательности
По аналогии с формулой выше: для произвольной траектории
при условии, что
2.1.2. Распишем разность V-функций
Занесем
Запишем
Вынесем
В силу равенства
Заметим, что
Итоговая формула:
2.1.3. Вернемся к разности функционалов J(new) - J(old)
Вспомним формулу для
Распишем новый функционал:
Подставим формулу
По аналогии с
2.2. Заменяем математическое ожидание
В получившийся формуле
2.2.1. Importance Sampling Trick / Трюк важностного семплирования
Пусть у нас есть математическое ожидание функции
Теперь мы хотим выразить
С помощью данного трюка можно заменить математическое ожидание по действиям в
2.2.2. Суррогатная функция
Для
Просто заменим
Однако, максимизируя данный функционал, мы будем увеличивать вероятность действий, которые максимизируют значение advantage-функции
Если пытаться повышать вероятности маловероятных действий, отношение
Аналогично, если пытаться уменьшать вероятность популярных действий, то
2.3. Теоретическая граница ошибки для нового функционала (theoretic error bound)
В статье Trust Region Policy Optimization (2015) важным результатом является следующая теорема (Theorem 1):
Модуль разницы между желаемым оптимизируемым функционалом
Другими словами, если политики
Введем вариационную низкую оценку
Будем улучшать политику в два шага:
Minorization step: фиксируем текущую политику и строим нижнюю оценку, совпадающую с истинной цельюв текущей точке.
Maximization step: максимизируем нижнюю вариационную оценкув надежде, что максимизируется желаемый функционал
А константу
Таким образом, будем оптимизировать
3. Проблема оптимизации
На недолгое время абстрагируемся, оставим все результаты выше и рассмотрим задачу градиентного спуска как задачу условной оптимизации.
Пусть
Приблизим
Поскольку
Таким образом, будем оптимизировать
Обозначим расстояние между старыми и новыми параметрами:
Аналитическое решение методом множителей Лагранжа:
Оптимальная дистанция
Немного усложним задачу. Будем минимизировать ту же функцию
Аналитическое решение для такого ограничения:
Таким образом,
3.1. Natural Policy Gradient, NPG (2001)
Статья: A Natural Policy Gradient
Вернемся к задаче обучения с подкреплением.
Пусть имеется политика с параметрами
Квадратичное расстояние между весами
Будем использовать расхождение Кульбака-Лейблера (
Обозначим
Разложим
– из определения-дивергенции.
поскольку-дивергенция при совпадении распределений достигает своего минимума.
– пренебрежимо мало.
Остается только член второго порядка:
Сформулируем метод Natural Policy Gradient.
Пока что, пользуемся функционалом
Максимизируем
В таком случае, оптимальный вектор изменения
Обновление политики происходит по формуле:
Однако, обращение матрицы
Заметим, что можно не искать отдельно матрицу
Тогда вместо обращения матрицы можно решить линейную систему:
Поскольку матрица
В результате получаем вектор изменения весов:
Параметр
Остается обновить политику:
3.2. Trust Region Policy Optimization, TRPO (2015)
Статья: Trust Region Policy Optimization
Вернемся к ранее выведенному функционалу:
Сформулируем задачу оптимизации с ограничениями:
Метод Trust Region Policy Optimization:
Инициализируем политику
Loop:
Генерируем траектории, используя текущую политику.
Считаем
Цикл по эпохам:
Цикл по батчам:
Считаем градиент суррогатной функции:
Аналитически считаем матрицу вторых производных KL-дивергенции:
Методом сопряженных градиентов ищем направление обновления весов, решая системуметодом сопряжённых градиентов:
Линейным поиском подбираем параметр, в направлениис ограничением:и одновременной проверкой значения:
Обновляем параметры политики
TRPO – стабильный алгоритм, не требующий большого числа итераций для достижения качественных результатов. Однако его реализация нетривиальна, а для аппроксимации матрицы вторых производных требуется огромный объём сэмплов, что делает процесс вычислительно дорогим.
В современных условиях классический TRPO практически не применяется — он слишком требователен к памяти и плохо масштабируется на большие модели. На смену ему пришла его усовершенствованная модификация — PPO (Proximal Policy Optimization).
3.3. Proximal Policy Optimization (PPO), 2017
Proximal Policy Optimization Algorithms
Вместо того чтобы решать задачу оптимизации с ограничениями, со сложной реализацией и вторыми производными, можно просто дополнительно штрафовать модель за сильное изменение политики.
Добавим регуляризацию прям в максимизируемый функционал:
Однако, данный функционал не гарантирует сходимости алгоритма.
Ограничиваем изменение политики, "подрезая" (clipping) слишком большие значения importance ratio
Если
Однако процедура "клиппинга" (ограничения) вносит смещение в оценку, нарушая важное теоретическое свойство градиента – монотонность гарантированного улучшения. Для решения этой проблемы на практике используют комбинированный подход: окончательное выражение для целевой функции принимают как минимум из двух вариантов – с применением клиппинга и без него.
В статье PPO были представлены следующие графики. По вертикальной оси находятся значения функции ошибки, а по горизонтальной значение функции
В красной точке
Допустим
На графике ниже представлена линейная интерполяция изменения весов. Слева расположена
Синяя функция показывает изменение-дивергенции между старой и новой политикой.
Желтая функция – это обычная суррогатная функция без клиппинга. Однако она является лишь приближением целевого функционалаи не гарантирует его улучшения.
Зеленая функция – это клипнутый importance ratio (). На графике видно, что при опредленном количестве обновлений, она достигает своего плато, что логично из формулы клиппинга.
Красная функция – это минимум из клипнутой функции и обычной суррогатная функции. Видно, что ДО того как функция достигнет значения, она просто улучшает политику. По достижениихорошие политики больше не улучшаются и плохие начинают портить красную функцию. Значит отходить дальше отне имеет смысла.
Сформулируем метод Proximal Policy Optimization:
Инициализируем параметры политики
Loop:
Сохраняем старую политику
Генерируем траектории c
Считаем advantage estimate
Цикл по эпохам:
Цикл по батчам:
Считаем importance ratio:
Считаем clipped importance ratio:
Считаем Сlipped objective:
Обновляем параметры
Можно заметить, что в методах TRPO и PPO был упущен момент c подсчетом advantage estimate
На практике функции
4.1. Обучение Value-функции
Функцию ценности обычно аппроксимируют нейронной сетью
где
Monte-Carlo возврат
Поэтому на практике используют усечённую
Из определения
Тогда:
Обновление параметров градиентным спуском:
4.2. n-шаговый Advantage
В зависимости от метода оценки
Монте-Карло оценка будет иметь высокий разброс (и низкое смещение).
Можно
Такая оценка будет иметь высокое смещение (и низкий разброс).
Возникает задача умного подбора шага
Переобозначим функционал (актора):
и функционал критика:
4.3. Generalized Advantage Estimation (GAE)
Вместо того чтобы подбирать количество шагов
Estimation | ||||
|---|---|---|---|---|
Weight |
Однако, пересчитывать все
Выпишем двушаговый
Из определения:
Выпишем одношаговый, но для следующего состоянияи следующего действия:
Умножим на:
Добавим и вычтемиз:
Если обобщить
Подставив получившуюся формулу
Однако
На практике удобнее использовать следующую эквивалентную формулу к
А функцию ценности обновляем:
Основная проблема классического
Вместо выбора одного
4.4. Вернемся к PPO
Напишем полностью алгоритм Proximal Policy Optimization:
Инициализируем параметры политикии параметры критика.
Loop:
Сохраняем политику
Генерируем траектории (rollouts) из политики, сохраняя логитыдля подсчета importance ratio.
Сохраняем выходы критика
Считаем одношаговые оценки для всех состояний:
if not:
else:
Считаем рекурсивно по формулеGAE оценки:
for t in (N-2, 0, -1):
if not:
else:
Считаем целевые значения критика:
for epoch in n_epochs:
for batch in batches:
Считаем importance ratio:
Считаем clipping importance ratio
Считаем clipped objective:
Обновляем параметры актора:
Обновляем лосс критика:
И обновляем параметры критика:
Реализацию PPO можно посмотреть здесь: Practical_RL/week09_policy_II/ppo.ipynb at main · anyakangur/Practical_RL https://github.com/anyakangur/Practical_RL/blob/main/week09_policy_II/ppo.ipynb
На GRPO сил не хватило, но будет в следующий раз!