Алгоритм policy gradient: как обучают стратегию напрямую

Алгоритм policy gradient - это семейство методов обучения с подкреплением, где агент учится сразу параметризованной стратегии , а не функции ценности. Вместо того чтобы оценивать «насколько хорошо состояние», мы напрямую сдвигаем параметры в сторону действий, которые принесли больше награды. Ниже разберём теорему о градиенте, формулу REINFORCE и роль baseline, а интерактивный расчёт ниже покажет, как скорость обучения и базовая линия влияют на сходимость.
Что оптимизирует policy gradient
Цель агента - максимизировать ожидаемую суммарную награду по траекториям , которые порождает текущая стратегия:
Здесь - параметризованная стратегия (обычно нейросеть с softmax-выходом для дискретных действий или гауссовой головой для непрерывных), - коэффициент дисконтирования, а - награда на шаге . Параметр - это веса политики. Идея метода в том, чтобы посчитать градиент и сделать шаг градиентного подъёма: .
Сложность в том, что распределение траекторий само зависит от - менять параметры значит менять и то, по чему берётся матожидание. Именно эту проблему решает теорема о градиенте стратегии.

Теорема о градиенте и трюк с log-производной
Прямое дифференцирование упирается в зависимость распределения от . Спасает тождество log-производной (log-derivative trick): для любой плотности . Применив его к вероятности траектории, получаем теорему о градиенте стратегии:
где - отдача (return) с момента . Ключевое наблюдение: динамика среды от не зависит и из градиента выпадает. Поэтому модель среды знать не нужно - это и делает метод безмодельным (model-free).
Смысл формулы интуитивно прост. Множитель показывает, в какую сторону подкрутить , чтобы повысить вероятность выбранного действия. Множитель - это вес: если за действием последовала большая отдача, шаг в его сторону делается крупным; если отдача мала или отрицательна - вероятность действия снижается. Близкая по духу идея напрямую двигаться по антиградиенту цели разобрана в материале про метод сопряжённых градиентов.
Формула REINFORCE: оценка градиента по выборке
Матожидание в теореме посчитать точно нельзя - его оценивают по выборке траекторий методом Монте-Карло. Прогнали эпизодов текущей стратегией, усреднили - получили несмещённую оценку градиента. Это и есть алгоритм REINFORCE (Уильямс, 1992):
Один цикл алгоритма выглядит так:
- Сыграть эпизод (или batch эпизодов) текущей стратегией , сохранив все пары «состояние-действие» и награды.
- Посчитать отдачи для каждого шага.
- Накопить градиент .
- Сделать шаг подъёма .
REINFORCE концептуально прост и работает «из коробки», но у него высокая дисперсия оценки: отдача - это сумма случайных наград, и от эпизода к эпизоду она сильно прыгает. Высокая дисперсия означает шумные градиенты и медленную, неустойчивую сходимость. Главный инструмент борьбы с этим - baseline.
Baseline: как снизить дисперсию без смещения
Идея baseline в том, чтобы вычитать из отдачи опорное значение , не зависящее от выбранного действия:
Почему вычитание baseline не вносит смещения? Потому что . Любая функция, не зависящая от действия, в матожидании даёт ноль - оценка остаётся несмещённой, а вот её дисперсию правильно подобранный baseline заметно уменьшает.
Самый частый выбор - оценка функции ценности , среднее ожидаемое возвращение из состояния. Тогда вместо «голой» отдачи в формуле появляется преимущество (advantage) : насколько выбранное действие оказалось лучше среднего. Этот переход - мостик к методам actor-critic, где политика (actor) учится по advantage, а отдельная сеть (critic) оценивает .

Дискретные и непрерывные действия
Вид зависит от того, как параметризована стратегия.
Для дискретных действий берут softmax по логитам :
Тогда - разность градиента логита выбранного действия и среднего по политике. Именно эта модель используется в интерактивном расчёте выше.
Для непрерывных действий берут гауссову политику , и log-плотность даёт явный градиент по и . Это позволяет применять policy gradient к управлению роботами и физическим системам, где действие - вещественный вектор сил или моментов.
Связь со стохастическим градиентным подъёмом
По сути policy gradient - это стохастический градиентный подъём по , где честный градиент заменён несмещённой выборочной оценкой. Отсюда наследуются все привычные нюансы: выбор скорости обучения , чувствительность к масштабу награды, риск застрять в локальном оптимуме стратегии. Слишком большой - и политика «перепрыгивает» хорошее решение, обновления раскачиваются; слишком малый - обучение ползёт. Нормализация наград и advantage в пределах batch помогает удержать масштаб шага стабильным независимо от того, какие абсолютные значения наград выдаёт среда.
Частые ошибки
- Путают знак шага. Policy gradient - это градиентный подъём (максимизируем награду): . Если использовать автоград фреймворка, минимизирующего loss, нужно подавать loss со знаком минус: .
- Считают baseline зависящим от действия. Если зависит от , вычитание вносит смещение и теорема ломается. Baseline должен зависеть только от состояния (или быть константой).
- Забывают про дисперсию. Запускают чистый REINFORCE без baseline и нормализации и удивляются, что сходимость рваная. Высокая дисперсия - врождённое свойство метода, без её снижения обучение крайне шумное.
- Дисконтируют отдачу неправильно. В суммируются награды начиная с шага , а не вся отдача эпизода для каждого шага - иначе ранние действия получают незаслуженный кредит за поздние награды.
- Переиспользуют старые траектории. REINFORCE - on-policy: градиент верен только для данных, собранных текущей стратегией. После шага по старые эпизоды уже не дают несмещённую оценку.
FAQ
Чем policy gradient отличается от Q-learning? Q-learning учит функцию ценности действий и выводит стратегию косвенно (жадно по ). Policy gradient оптимизирует параметры стратегии напрямую. Это даёт естественную работу с непрерывными действиями и стохастическими политиками, но ценой большей дисперсии и обучения on-policy.
Почему вообще работает трюк с log-производной? Он переписывает , что превращает градиент распределения в матожидание под тем же распределением. Благодаря этому градиент цели становится выборочно оцениваемым: достаточно играть эпизоды текущей стратегией и усреднять.
REINFORCE и policy gradient - это одно и то же? Не совсем. Policy gradient - общий принцип (теорема о градиенте стратегии). REINFORCE - конкретный Монте-Карло алгоритм, оценивающий этот градиент по полным эпизодам. Actor-critic, PPO, TRPO - тоже policy gradient методы, но с другими оценками градиента и ограничениями на шаг.
Коротко
Алгоритм policy gradient оптимизирует параметризованную стратегию напрямую через градиентный подъём по ожидаемой награде. Теорема о градиенте и трюк с log-производной превращают в матожидание , которое REINFORCE оценивает по выборке эпизодов. Главная проблема - высокая дисперсия оценки; её снижают вычитанием baseline, не зависящего от действия, что и ведёт к advantage-формулировке и методам actor-critic.
Читайте также

Алгоритм AdaBoost: как слабые классификаторы дают сильный
Алгоритм AdaBoost простыми словами: адаптивный бустинг, перевзвешивание объектов, формула веса классификатора, итоговый ансамбль и разбор шага на примере с формулами.

Алгоритм CatBoost: бустинг с обработкой категорий
Алгоритм CatBoost простыми словами: упорядоченный бустинг против сдвига прогноза, кодирование категориальных признаков через ordered target statistics, симметричные деревья и разбор типовых задач.

Алгоритм LightGBM: быстрый градиентный бустинг
Алгоритм LightGBM простыми словами: рост дерева по листьям против роста по уровням, гистограммы признаков, GOSS и EFB, настройка num_leaves и learning rate, борьба с переобучением и разбор задач.