Deep RL Course, юнит 4: градиент политики
Полный перевод теории четвёртого юнита курса Hugging Face: методы на основе политики, их плюсы и минусы, целевая функция J(θ), градиентный подъём, теорема о градиенте политики с выводом и алгоритм REINFORCE.
Это перевод теоретической части юнита 4 курса Hugging Face Deep RL Course. Практика — REINFORCE с нуля на PyTorch для CartPole и Pixelcopter — переведена на странице «Юнит 4, практика». Карта курса — в путеводителе.
Введение
Заголовок раздела «Введение»В прошлом юните мы изучили Deep Q-Learning. В этом алгоритме глубокого обучения с подкреплением на основе ценности мы приближали глубокой нейросетью Q-значения всех возможных в состоянии действий.
С начала курса мы изучали только методы на основе ценности, где функция ценности — промежуточный шаг на пути к оптимальной политике.
В оригинале здесь схема: функция ценности → (жадная политика выбирает действие с наибольшей ценностью) → политика.
В методах на основе ценности политика существует только благодаря оценкам ценности действий: политика — просто функция (например, жадная политика), которая в данном состоянии выбирает действие с наибольшей ценностью.
В методах на основе политики мы хотим оптимизировать политику напрямую, без промежуточного шага обучения функции ценности.
Поэтому сегодня мы изучим методы на основе политики и их подкласс — методы градиента политики. Затем мы с нуля реализуем на PyTorch первый алгоритм градиента политики — Монте-Карло REINFORCE. И проверим, насколько он надёжен, в средах CartPole-v1 и PixelCopter.
После этого вы сможете дорабатывать и улучшать эту реализацию для более сложных сред. В оригинале здесь анимация двух сред: тележка с шестом и вертолётик, пролетающий между препятствиями.
Начнём!
Что такое методы на основе политики
Заголовок раздела «Что такое методы на основе политики»Главная цель обучения с подкреплением — найти оптимальную политику , которая максимизирует ожидаемую накопленную награду. Потому что обучение с подкреплением основано на гипотезе о награде: любую цель можно описать как максимизацию ожидаемой накопленной награды.
Например, в футболе (в нём вы будете обучать агентов через два юнита) цель — выиграть матч. На языке обучения с подкреплением эту цель можно описать как максимизацию числа голов, забитых в ворота соперника (когда мяч пересекает линию ворот), и минимизацию числа голов в свои ворота.
Методы на основе ценности, на основе политики и actor-critic
Заголовок раздела «Методы на основе ценности, на основе политики и actor-critic»В первом юните мы видели два способа найти (а чаще — приблизить) оптимальную политику .
- В методах на основе ценности мы учим функцию ценности.
- Идея в том, что оптимальная функция ценности даёт оптимальную политику .
- Наша цель — минимизировать потери между предсказанной и целевой ценностью, чтобы приблизить настоящую функцию ценности действия.
- Политика у нас есть, но она неявная: она получается прямо из функции ценности. Например, в Q-learning мы использовали (ε-)жадную политику.
- А в методах на основе политики мы напрямую учимся приближать , не обучая функцию ценности.
- Идея — параметризовать политику. Например, нейросетью : такая политика выдаёт распределение вероятностей по действиям (стохастическая политика).
- Наша цель тогда — максимизировать качество параметризованной политики градиентным подъёмом.
- Для этого мы управляем параметром , который влияет на распределение действий в состоянии.
Читается так: политика с параметрами в состоянии — это распределение вероятностей действия .
flowchart LR S["Состояние s"] --> P["Политика π_θ (нейросеть)"] P --> D["Распределение по действиям: влево 0.7, вправо 0.3"] D -->|"сэмплируем"| A["Действие"]
- В следующий раз мы изучим метод actor-critic — сочетание методов на основе ценности и на основе политики.
Итак, методы на основе политики позволяют напрямую оптимизировать политику , чтобы она выдавала распределение вероятностей по действиям , ведущее к наибольшей накопленной отдаче. Для этого мы задаём целевую функцию — ожидаемую накопленную награду — и ищем значение , которое её максимизирует.
Чем методы на основе политики отличаются от методов градиента политики
Заголовок раздела «Чем методы на основе политики отличаются от методов градиента политики»Методы градиента политики, которые мы изучаем в этом юните, — подкласс методов на основе политики. В методах на основе политики оптимизация чаще всего on-policy: для каждого обновления мы используем только данные (траектории), собранные самой свежей версией .
Разница между этими двумя группами методов — в том, как оптимизируется параметр :
- В методах на основе политики мы ищем оптимальную политику напрямую. Параметр можно оптимизировать косвенно, максимизируя локальное приближение целевой функции методами вроде восхождения на холм (hill climbing), имитации отжига (simulated annealing) или эволюционных стратегий.
- В методах градиента политики — раз это подкласс методов на основе политики — мы тоже ищем оптимальную политику напрямую. Но параметр оптимизируем непосредственно, градиентным подъёмом по целевой функции .
Прежде чем углубиться в то, как работают методы градиента политики (целевая функция, теорема о градиенте политики, градиентный подъём и так далее), разберём плюсы и минусы методов на основе политики.
Плюсы и минусы методов градиента политики
Заголовок раздела «Плюсы и минусы методов градиента политики»Вы можете спросить: «Но Deep Q-Learning же отличный! Зачем нужны методы градиента политики?» Чтобы ответить, разберём плюсы и минусы методов градиента политики.
У них несколько преимуществ перед методами на основе ценности. Вот некоторые.
Простота встраивания
Заголовок раздела «Простота встраивания»Политику можно оценивать напрямую, не храня дополнительных данных (ценностей действий).
Методы градиента политики умеют учить стохастическую политику
Заголовок раздела «Методы градиента политики умеют учить стохастическую политику»Методы градиента политики могут выучить стохастическую политику, а функции ценности — нет.
Отсюда два следствия.
- Не нужно вручную реализовывать компромисс между исследованием и использованием. Раз на выходе распределение вероятностей по действиям, агент исследует пространство состояний, не повторяя всегда одну и ту же траекторию.
- Мы избавляемся от перцептивного наложения (perceptual aliasing) — ситуации, когда два состояния кажутся (или являются) одинаковыми, но требуют разных действий.
Возьмём пример: умный пылесос должен собирать пыль и не задавить хомяков.
Пылесос видит только, где стены.
Проблема в том, что два красных состояния неразличимы (aliased): в каждом агент видит стену сверху и стену снизу. В оригинале здесь рисунок: коридор из клеток; в двух клетках, отмеченных красным, стены сверху и снизу выглядят одинаково, но из одной надо идти вправо, а из другой — влево; пыль в середине, хомяки по краям.
При детерминированной политике агент в красном состоянии будет либо всегда идти вправо, либо всегда влево. В обоих случаях агент застрянет и никогда не соберёт пыль.
Алгоритм RL на основе ценности учит почти детерминированную политику (ε-жадную стратегию). Поэтому агент может долго блуждать, прежде чем найдёт пыль.
А оптимальная стохастическая политика в красных состояниях случайно идёт влево или вправо. Поэтому она не застрянет и с высокой вероятностью дойдёт до цели.
Методы градиента политики эффективнее в многомерных и непрерывных пространствах действий
Заголовок раздела «Методы градиента политики эффективнее в многомерных и непрерывных пространствах действий»Беда Deep Q-learning в том, что он присваивает оценку (максимальную ожидаемую будущую награду) каждому возможному действию на каждом шаге в текущем состоянии.
А что, если вариантов действий бесконечно много?
Например, у беспилотного автомобиля в каждом состоянии (почти) бесконечный выбор действий: повернуть руль на 15°, 17,2°, 19,4°, посигналить и так далее. Пришлось бы выдавать Q-значение для каждого возможного действия! А найти действие с максимумом на непрерывном выходе — само по себе задача оптимизации!
Методы градиента политики вместо этого выдают распределение вероятностей по действиям.
У методов градиента политики лучше сходимость
Заголовок раздела «У методов градиента политики лучше сходимость»В методах на основе ценности для изменения функции ценности используется агрессивный оператор — максимум по оценкам Q. Поэтому вероятности действий могут резко измениться от сколь угодно малого изменения оценок ценности, если из-за него другое действие становится наилучшим.
Например, если во время обучения лучшим действием было «влево» (Q-значение 0,22), а после следующего шага обучения — «вправо» (его Q-значение стало 0,23), политика резко изменилась: теперь она почти всегда идёт вправо, а не влево.
А в методах градиента политики предпочтения действий стохастической политики (вероятности действий) меняются со временем плавно.
Конечно, у методов градиента политики есть и недостатки.
- Часто методы градиента политики сходятся к локальному максимуму, а не к глобальному оптимуму.
- Градиент политики продвигается медленнее, шаг за шагом: обучение может занять больше времени (низкая эффективность).
- У градиента политики может быть высокая дисперсия. В юните об actor-critic мы увидим, почему, и как это исправить.
👉 Если хотите глубже разобраться в плюсах и минусах методов градиента политики, посмотрите это видео.
Подробнее о методах градиента политики
Заголовок раздела «Подробнее о методах градиента политики»Общая картина
Заголовок раздела «Общая картина»Мы только что узнали, что методы градиента политики ищут параметры , которые максимизируют ожидаемую отдачу.
Идея в том, что у нас есть параметризованная стохастическая политика. В нашем случае нейросеть выдаёт распределение вероятностей по действиям. Вероятность выбрать каждое действие называют также предпочтением действия (action preference).
На примере CartPole-v1:
- на входе — состояние;
- на выходе — распределение вероятностей по действиям в этом состоянии.
Цель градиента политики — управлять распределением вероятностей действий, настраивая политику так, чтобы хорошие действия (максимизирующие отдачу) в будущем выбирались чаще. Каждый раз, когда агент взаимодействует со средой, мы подправляем параметры так, чтобы хорошие действия в будущем выбирались с большей вероятностью.
Но как оптимизировать веса, используя ожидаемую отдачу?
Идея в том, чтобы дать агенту сыграть эпизод. Если мы выиграли эпизод, считаем, что каждое совершённое действие было хорошим и в будущем его надо выбирать чаще, раз оно привело к победе.
Значит, для каждой пары «состояние — действие» мы хотим увеличить — вероятность выбрать это действие в этом состоянии. Или уменьшить, если проиграли.
Алгоритм градиента политики (упрощённо) выглядит так:
flowchart TB
A["Сыграть эпизод с текущей политикой π"] --> B["Посчитать отдачу: сумму наград"]
B --> C{"Отдача положительная?"}
C -->|"да"| D["Увеличить вероятность каждой пары (состояние, действие) из эпизода"]
C -->|"нет"| E["Уменьшить вероятность каждой пары (состояние, действие) из эпизода"]
D --> A
E --> AТеперь, когда общая картина ясна, разберёмся глубже.
Глубже о методах градиента политики
Заголовок раздела «Глубже о методах градиента политики»У нас есть стохастическая политика с параметром . Эта по состоянию выдаёт распределение вероятностей действий:
Здесь — вероятность того, что агент по нашей политике выберет действие в состоянии .
Но как понять, что политика хорошая? Нужен способ её измерить. Для этого мы задаём функцию оценки, или целевую функцию, .
Целевая функция
Заголовок раздела «Целевая функция»Целевая функция (objective function) показывает качество агента на траектории (последовательности состояний и действий без учёта наград — в отличие от эпизода) и выдаёт ожидаемую накопленную награду:
Разберём формулу подробнее.
- Ожидаемая отдача (её называют также ожидаемой накопленной наградой) — это взвешенное среднее всех возможных значений отдачи , где веса — вероятности :
- — отдача произвольной траектории. Чтобы с её помощью посчитать ожидаемую отдачу, её надо умножить на вероятность каждой возможной траектории.
- — вероятность каждой возможной траектории . Она зависит от , потому что задаёт политику, которой выбираются действия траектории, а от них зависят посещённые состояния:
Здесь — динамика среды (вероятность перейти в следующее состояние), а — вероятность, что политика выбрала это действие.
- — ожидаемая отдача: сумма по всем траекториям произведений вероятности траектории при данном на отдачу этой траектории.
Наша цель — максимизировать ожидаемую накопленную награду, найдя , при котором политика выдаёт лучшие распределения вероятностей действий:
Градиентный подъём и теорема о градиенте политики
Заголовок раздела «Градиентный подъём и теорема о градиенте политики»Градиент политики — задача оптимизации: мы ищем такие , которые максимизируют целевую функцию , поэтому нужен градиентный подъём (gradient ascent). Это противоположность градиентного спуска: он даёт направление самого быстрого роста .
(Если нужно освежить разницу между градиентным спуском и подъёмом, посмотрите это и это.)
Шаг обновления градиентным подъёмом:
Можно применять это обновление снова и снова в надежде, что сойдётся к значению, максимизирующему .
Но с вычислением производной есть две проблемы.
- Настоящий градиент целевой функции не посчитать: для этого нужна вероятность каждой возможной траектории, а это вычислительно безумно дорого. Поэтому мы хотим посчитать оценку градиента по выборке (собрав несколько траекторий).
- Вторая проблема объяснена в следующем, необязательном разделе. Чтобы продифференцировать эту целевую функцию, нужно продифференцировать распределение состояний — так называемую динамику марковского процесса принятия решений. Она привязана к среде: даёт вероятность того, что среда перейдёт в следующее состояние при текущем состоянии и действии агента. Беда в том, что её не продифференцировать: мы можем её просто не знать.
К счастью, есть решение — теорема о градиенте политики (policy gradient theorem). Она переписывает целевую функцию в дифференцируемую форму, где не нужно дифференцировать распределение состояний:
Если хотите понять, как выводится эта формула для приближения градиента, загляните в следующий (необязательный) раздел.
Алгоритм REINFORCE (Монте-Карло REINFORCE)
Заголовок раздела «Алгоритм REINFORCE (Монте-Карло REINFORCE)»Алгоритм REINFORCEREINFORCEEN REINFORCEАлгоритм Уильямса (1992) — оценка градиента политики по сэмплам эпизодов (метод Монте-Карло)., который называют также Монте-Карло градиентом политики, — алгоритм градиента политикиградиент политикиEN policy gradient∇J = E[r · ∇ log π(y|x)] — основа REINFORCE, PPO и GRPO., который обновляет параметр политики по оценке отдачи за целый эпизод.
В цикле:
- собираем эпизод политикой ;
- по эпизоду оцениваем градиент :
- обновляем веса политики: .
Это обновление можно истолковать так.
- — направление самого быстрого роста (логарифма) вероятности выбрать действие в состоянии . Оно говорит, как изменить веса политики, чтобы увеличить или уменьшить логарифм вероятности выбрать действие в состоянии .
- — функция оценки:
- если отдача высокая, она поднимает вероятности сочетаний (состояние, действие);
- если отдача низкая, она опускает вероятности сочетаний (состояние, действие).
Для оценки градиента можно также собрать несколько эпизодов (траекторий):
(Необязательно) Теорема о градиенте политики
Заголовок раздела «(Необязательно) Теорема о градиенте политики»В этом необязательном разделе мы разберём, как дифференцировать целевую функцию, по которой приближаем градиент политики.
Сначала напомним формулы.
- Целевая функция:
- Вероятность траектории (при условии, что действия выбирает ):
Итак, у нас есть:
Градиент суммы можно переписать как сумму градиентов:
потому что не зависит от .
Затем умножим каждое слагаемое суммы на (так можно: это равно 1):
Это можно упростить, потому что .
Значит, сумму можно переписать так:
Теперь применим приём с производной логарифма (его называют также приёмом отношения правдоподобий, likelihood ratio trick, или приёмом REINFORCE) — простое правило анализа: .
Значит, превращается в .
Вот наш градиент политики через отношение правдоподобий:
Благодаря этой формуле градиент можно оценивать по выборке траекторий (если угодно, приближать градиент через отношение правдоподобий оценкой по выборке):
где каждая — сэмплированная траектория.
Но математическая работа ещё не закончена: нужно упростить .
Мы знаем, что:
где — распределение начального состояния, а — динамика переходов MDP.
Логарифм произведения равен сумме логарифмов:
Градиент суммы равен сумме градиентов:
Ни распределение начального состояния, ни динамика переходов MDP не зависят от , поэтому производные обоих слагаемых равны 0, и их можно убрать.
Поскольку и :
Градиент суммы можно переписать как сумму градиентов:
Итак, окончательная формула для оценки градиента политики:
Глоссарий
Заголовок раздела «Глоссарий»Это глоссарий, созданный сообществом. Предложения приветствуются!
-
Deep Q-Learning: алгоритм глубокого обучения с подкреплением на основе ценности, который приближает глубокой нейросетью Q-значения действий в данном состоянии. Цель Deep Q-learning — найти оптимальную политику, максимизирующую ожидаемую накопленную награду, обучив ценности действий.
-
Методы на основе ценности: методы обучения с подкреплением, которые оценивают функцию ценности как промежуточный шаг к оптимальной политике.
-
Методы на основе политики: методы обучения с подкреплением, которые напрямую учатся приближать оптимальную политику, не обучая функцию ценности. На практике они выдают распределение вероятностей по действиям.
Преимущества методов градиента политики перед методами на основе ценности:
- простота встраивания: не нужно хранить ценности действий;
- способность выучить стохастическую политику: агент исследует пространство состояний, не повторяя всегда одну и ту же траекторию, и избегает перцептивного наложения;
- эффективность в многомерных и непрерывных пространствах действий;
- лучшая сходимость.
-
Градиент политики: подкласс методов на основе политики, где цель — максимизировать качество параметризованной политики градиентным подъёмом. Цель градиента политики — управлять распределением вероятностей действий, настраивая политику так, чтобы хорошие действия (максимизирующие отдачу) в будущем выбирались чаще.
-
Монте-Карло REINFORCE: алгоритм градиента политики, который обновляет параметр политики по оценке отдачи за целый эпизод.
Если хотите улучшить курс, можно открыть пул-реквест. Глоссарий составлен благодаря Диего Карпинтеро.
Лучший способ учиться и не попасть в ловушку иллюзии компетентности — проверить себя. Так вы поймёте, какие знания нужно подкрепить.
Вопрос 2. Что такое теорема о градиенте политики?
Ответ
Теорема о градиенте политики — формула, которая переписывает целевую функцию в дифференцируемую форму, где не нужно дифференцировать распределение состояний:
Поздравляем с окончанием теста 🥳! Если что-то упустили, перечитайте главу и подкрепите (😏) знания.
Заключение
Заголовок раздела «Заключение»Поздравляем с окончанием юнита! Информации было много. И поздравляем с окончанием практического занятия: вы только что написали с нуля на PyTorch своего первого агента глубокого обучения с подкреплением и поделились им на Hub 🥳.
Не стесняйтесь возвращаться к этому юниту и улучшать реализацию для более сложных сред (например, как насчёт того, чтобы заменить сеть на свёрточную и подавать на вход кадры?).
В следующем юните мы подробнее познакомимся с Unity ML-Agents и будем обучать агентов в средах Unity. Так вы подготовитесь к состязаниям «ИИ против ИИ», где ваши агенты будут соревноваться с другими агентами в игре в снежки и в футболе.
Звучит здорово? До встречи! Юниты 5 и 7 описаны в путеводителе; если вам нужен прямой путь к PPO, переходите к юниту 6 (actor-critic).
Авторы курса будут рады узнать ваше мнение о курсе и о том, как его улучшить — для этого есть форма обратной связи.
Продолжайте учиться и оставайтесь крутыми 🤗
Дополнительное чтение
Заголовок раздела «Дополнительное чтение»Это необязательные материалы для тех, кто хочет копнуть глубже.
Введение в оптимизацию политики
Градиент политики
- Policy Gradients — Джон Ламберт.
- RL — Policy Gradient Explained — Джонатан Хуэй.
- Reinforcement Learning: An Introduction, Саттон и Барто, глава 13 «Policy Gradient Methods».
Реализации
Словарик
Заголовок раздела «Словарик»| English | Русский |
|---|---|
| policy-based methods | методы на основе политики |
| policy gradient (PG) | градиент политики |
| parameterized (stochastic) policy | параметризованная (стохастическая) политика |
| action preference | предпочтение действия (его вероятность) |
| objective function | целевая функция |
| trajectory | траектория |
| gradient ascent / descent | градиентный подъём / спуск |
| policy gradient theorem | теорема о градиенте политики |
| log-derivative trick, likelihood ratio trick | приём с производной логарифма, приём отношения правдоподобий |
| state distribution, MDP dynamics | распределение состояний, динамика MDP |
| Monte Carlo REINFORCE | Монте-Карло REINFORCE |
| perceptual aliasing | перцептивное наложение (неразличимые состояния) |
| hill climbing, simulated annealing, evolution strategies | восхождение на холм, имитация отжига, эволюционные стратегии |
| local maximum / global optimum | локальный максимум / глобальный оптимум |
| high variance | высокая дисперсия |