# Стэнфордский курс CS224R: математический вывод градиентов политики в RL

Источник: https://www.youtube.com/watch?v=KCAOXd4IO9o
Канал: Stanford Online
Опубликовано: 08.12.2025

---

В рамках университетского курса Стэнфордского университета CS224R по глубокому обучению с подкреплением (Deep Reinforcement Learning) представлена лекция, посвященная градиентам политики (Policy Gradients). Преподаватель подробно разбирает переход от простого подражания эксперту к самостоятельному поиску решений методом проб и ошибок, закладывая математический фундамент для современных алгоритмов управления роботами и обучения языковых моделей. В материале рассматриваются ключевые проблемы ванильного подраздела REINFORCE — высокая дисперсия и неэффективность использования данных — а также классические инженерные приемы их преодоления.

## 🔄 От имитации к самостоятельному обучению: концепция Online RL
[[JUMP:0:05]]

### Постановка задачи и ограничения имитационного обучения
В начале занятия лектор напоминает базовую математическую формулировку задачи обучения с подкреплением (RL). Агент оперирует состояниями (states) и действиями (actions), формируя траектории — последовательности шагов во времени. Функция награды сигнализирует о качестве выбранного поведения, а генеральная цель обучения заключается в максимизации математического ожидания суммы наград. Стратегия поведения агента формализуется в виде политики, параметры которой оптимизируются в процессе.

Ранее изученный метод имитационного обучения (Imitation Learning) позволяет настраивать политику за счет максимизации правдоподобия действий на основе готового набора экспертных демонстраций. Однако этот подход имеет фундаментальные ограничения:

* Агент принципиально неспособен превзойти демонстратора, у которого обучается.
* Алгоритм не предполагает возможности автономного улучшения навыков через механизм проб и ошибок.

### Анатомия онлайн-алгоритмов
Для преодоления этих лимитов вводятся онлайн-алгоритмы обучения с подкреплением (Online RL). Градиенты политики (Policy Gradients) выступают базисом для целого семейства таких подходов, активно применяемых на практике — от стабилизации двуногих роботов до дообучения больших языковых моделей. 

Базовый цикл работы Online RL алгоритма включает четыре последовательных шага:

1.  Инициализация весов нейросети, представляющей политику (случайными значениями, весами после имитационного обучения или эвристиками).
2.  Автономный запуск текущей политики в реальной или симулируемой среде для сбора пакета данных (текущих траекторий).
3.  Использование собранного батча данных для оптимизации и обновления параметров политики.
4.  Циклическое повторение процесса: сбор свежих данных уже обновленной политикой и ее последующая корректировка.

Главная практическая сложность Online RL заключается в том, что оценить качество текущей политики, просто взглянув на веса нейросети, невозможно. Для этого требуется многократно запустить агента в среде, зафиксировать полученные траектории наград и рассчитать их среднее значение.

## 🧮 Математический фундамент: вывод ванильного градиента политики
[[JUMP:5:45]]

### Трюк с логарифмической производной (Log-Derivative Trick)
Математическая цель оптимизации — максимизировать целевую функцию $J(\theta) = \mathbb{E}_{\tau \sim p_\theta(\tau)} [R(\tau)]$, где $\theta$ — параметры политики (веса нейросети), а $R(\tau)$ — суммарная награда вдоль траектории $\tau$. Для применения градиентного спуска необходимо рассчитать градиент этой функции по $\theta$. Прямое дифференцирование функции математического ожидания затруднено, поскольку параметры влияют на закон распределения случайных траекторий, а стохастическая динамика среды нам изначально неизвестна.

Для обхода этого препятствия математическое ожидание расписывается через интеграл $\int p_\theta(\tau) R(\tau) d\tau$. Поскольку операция интегрирования линейна, знак градиента можно внести внутрь интеграла. Далее применяется классический в статистике трюк с логарифмом (Log-Derivative Trick), базирующийся на правиле дифференцирования сложной функции:

$$\nabla_\theta p_\theta(\tau) = p_\theta(\tau) \nabla_\theta \log p_\theta(\tau)$$

Подстановка этого тождества обратно в уравнение интеграла позволяет изящно вернуть выражение к форме математического ожидания, где градиент переместился внутрь функции:

$$\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim p_\theta(\tau)} [\nabla_\theta \log p_\theta(\tau) R(\tau)]$$

Благодаря этому шагу параметры $\theta$ оказываются внутри логарифма, что позволяет вычислять градиент на основе сгенерированных агентом выборок.

### Устранение динамики среды из уравнений
Вероятность конкретной траектории $p_\theta(\tau)$ математически раскладывается на произведение вероятности начального состояния среды, условных вероятностей действий самой политики $\pi_\theta(a_t|s_t)$ и вероятностей переходов среды в новые состояния $P(s_{t+1}|s_t, a_t)$ по всем временным шагам $t$. При взятии логарифма это громоздкое произведение превращается в простую сумму логарифмов отдельных компонентов.

Критически важный вывод лекции заключается в том, что при последующем дифференцировании по весам $\theta$ компоненты, отвечающие за распределение начальных состояний и физику среды, полностью обнуляются, так как они физически не зависят от параметров нейросети. В итоге градиент логарифма распределения траекторий сводится исключительно к сумме градиентов логарифмов политики агента:

$$\nabla_\theta \log p_\theta(\tau) = \sum_{t=1}^T \nabla_\theta \log \pi_\theta(a_t|s_t)$$

### Алгоритм REINFORCE и суррогатная функция потерь
Итоговое уравнение ванильного градиента политики (известное как алгоритм REINFORCE) приобретает финальный вид:

$$\nabla_\theta J(\theta) = \mathbb{E}_{\tau \sim p_\theta(\tau)} \left[ \sum_{t=1}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot R(\tau) \right]$$

На практике это теоретическое математическое ожидание аппроксимируется по конечному числу $N$ траекторий, реально собранных роботом или агентом в среде. Программисту не требуется выводить производные руками: современные библиотеки автоматического дифференцирования (такие как PyTorch) выполняют backward pass автоматически.

Чтобы избежать вычислительно неэффективного выполнения $N \times T$ отдельных обратных проходов для каждого временного шага, на практике конструируют так называемую суррогатную функцию потерь (surrogate objective). Ее градиент математически тождественен целевому градиенту политики, что позволяет обновлять веса за один стандартный проход. Для дискретных пространств действий эта функция сводится к классической кросс-энтропии, а для непрерывных (например, гауссовских политик) — к среднеквадратичной ошибке (MSE).

## 📉 Проблема высокой дисперсии и закон причинности
[[JUMP:26:59]]

### Пример с симуляцией ходьбы гуманоида
Смысловая интерпретация алгоритма REINFORCE проста: он работает как строгое математическое выражение метода проб и ошибок. Алгоритм берет градиент имитации, но взвешивает его на полученную награду. Это заставляет нейросеть увеличивать вероятность действий, приведших к успеху, и снижать вероятность шагов, повлекших за собой отрицательный результат. На практике эта схема страдает от колоссального уровня шума и высокой дисперсии градиентных оценок.

Для демонстрации уязвимости лектор приводит пример с обучением симулированного робота-гуманоида, где наградой выступает скорость его продвижения вперед. Допустим, на раннем этапе неотлаженная политика совершает в среде 5 случайных попыток (траекторий):

* Траектория 1: Робот сразу заваливается назад (суммарная награда отрицательная).
* Траектория 2: Робот падает плашмя вперед (что технически дает кратковременную положительную скорость движения центра масс, награда больше нуля).
* Траектория 3: Агент застывает на месте и не совершает движений (награда близка к нулю).
* Траектория 4: Робот делает один успешный микрошаг вперед, но затем теряет баланс и летит назад (итоговая сумма наград отрицательная).
* Траектория 5: Робот делает огромный шаг назад, а затем слегка дергается вперед (суммарная награда отрицательная).

При расчете ванильного градиента по этому батчу только вторая траектория (падение вперед) покажет положительное подкрепление. В результате политика получит мощный импульс обучаться исключительно падению вперед, полностью проигнорировав качественный первый шаг из четвертой траектории. Градиент оказывается нестабильным и сильно зависит от случайного набора сгенерированных сцен.

### Учет будущих наград (Reward-to-go)
Первое фундаментальное улучшение алгоритма опирается на закон причинности (causality). Действие, выполненное роботом на сотом шаге, физически не способно повлиять на награды, собранные на пятидесятом шаге. Ванильный же REINFORCE масштабирует каждое пошаговое действие итоговой наградой всей траектории $R(\tau)$, привнося огромный объем лишнего шума.

Математическое решение заключается в переносе знака суммирования наград внутрь временного цикла. Теперь вероятность выбора действия на конкретном шаге $t$ взвешивается исключительно суммой будущих наград — от текущего момента $t$ до финала траектории $T$. Этот подход называется концепцией «награды к получению» (reward-to-go):

$$\nabla_\theta J(\theta) = \mathbb{E}_{\tau} \left[ \sum_{t=1}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \sum_{t'=t}^T r(s_{t'}, a_{t'}) \right]$$

Благодаря этому изменению агент получает возможность извлечь позитивный урок из удачного действия в конце сессии, даже если ее начало было катастрофическим. Тем не менее, этот прием бессилен, если раннее ошибочное действие предопределило провал на поздних этапах (например, привело к падению) — подобные долгосрочные причинно-следственные связи алгоритм по-прежнему вынужден выявлять эмпирически.

## ⚖️ Снижение шума с помощью базовой линии (Baseline)
[[JUMP:41:44]]

### Идея вычитания среднего значения
Вторая критическая уязвимость градиентов политики кроется в абсолютном масштабе функции наград. Рассмотрим сценарий, где все награды строго положительны. Робот в любом случае продвигается вперед, но с разной эффективностью: в первой попытке он спотыкается, во второй — ковыляет, в третьей — идет ровно, в четвертой — бежит. В этой ситуации REINFORCE выдаст положительный градиент для действий изо всех четырех траекторий. Бегущий робот получит максимальное подкрепление, но действия спотыкающегося агента также будут закрепляться в памяти нейросети, что фатально замедляет обучение. В противоположной ситуации, когда все награды сугубо отрицательны, агент будет получать лишь сигналы наказания, лишаясь явного вектора развития.

Для исправления этого перекоса применяется вычитание базовой линии (baseline) — константы $b$ из величины накопленной награды. В качестве $b$ чаще всего вычисляют среднюю награду по всему текущему батчу собранных данных. После этого действия, показавшие результат выше среднерыночного по батчу, приобретают положительный градиент (их вероятность растет), а действия с результатом ниже среднего — отрицательный (их вероятность принудительно подавляется).

### Математическое доказательство несмещенности
Лектор приводит строгое математическое доказательство того, что интеграция константной базовой линии $b$ не смещает оценку истинного градиента, оставляя математическое ожидание неизменным. Доказательство опирается на развертывание логарифмического трюка в обратную сторону:

$$\mathbb{E} [\nabla_\theta \log p_\theta(\tau) \cdot b] = \int p_\theta(\tau) \frac{\nabla_\theta p_\theta(\tau)}{p_\theta(\tau)} b d\tau = b \nabla_\theta \int p_\theta(\tau) d\tau$$

Так как интеграл полной плотности распределения вероятностей по всему пространству $\int p_\theta(\tau) d\tau$ тождественно равен $1$, выражение преобразуется в вычисление градиента от единицы $\nabla_\theta (1)$, что дает чистый нуль. Таким образом, операция вычитания средней награды является математически строгой и служит исключительно целям снижения дисперсии (variance reduction). Среднее значение по батчу не является абсолютно оптимальным с точки зрения теории статистических оценок, однако на практике оно наиболее близко к оптимуму и просто в расчете.

### Плотность наград как залог успеха
Даже при совместном использовании reward-to-go и базовой линии, градиент политики остается крайне чувствительным к плотности целевых сигналов среды. Преподаватель демонстрирует это на примере робота, задача которого — сложить куртку. Награда в среде распределена редко (sparse rewards): $1$ ставится за идеально сложенную вещь, $0.5$ — за сложенную с дефектами и $0$ — за провал.

Если в набранном пакете данных из четырех попыток три окажутся неудачными (робот вообще не дотронулся до куртки, сложил только рукава или просто разгладил ткань без складывания), градиент для всех этих трех принципиально разных траекторий окажется абсолютно одинаковым — нулевым. Алгоритм REINFORCE не уловит разницу между перспективным действием (сложенные рукава) и полным фиаско. Отсюда выводится фундаментальное практическое ограничение: градиенты политики дееспособны только в условиях плотных наград (dense rewards) и при оперировании гигантскими объемами батчей.

## 🔄 Переход к Off-Policy: выборка по значимости (Importance Sampling)
[[JUMP:55:08]]

### Ограничения On-Policy подходов
Классический алгоритм REINFORCE по своей природе относится к категории On-Policy методов. Это означает, что математическое ожидание градиента жестко завязано на траектории, сгенерированные строго текущей версией политики $\pi_\theta$.

Как только параметры нейросети корректируются хотя бы на один шаг градиентного спуска, весь накопленный массив данных мгновенно становится невалидным. Проведение тысяч последовательных шагов оптимизации, как в стандартном Deep Learning, становится невозможным: после каждого обновления весов требуется заново запускать симулятор для сбора свежего батча данных, что драматически замедляет процесс.

### Суть метода Importance Sampling
Для преодоления этой неэффективности лектор предлагает задействовать математический инструмент выборки по значимости (Importance Sampling). Данный метод теории вероятностей позволяет рассчитать математическое ожидание некоторой функции по целевому распределению $p(x)$, имея на руках практическую выборку элементов из совершенно иного, «предлагающего» распределения $q(x)$.

Математически это реализуется за счет искусственного внедрения единичного компенсационного множителя $\frac{q(x)}{q(x)}$ под знак интеграла:

$$\mathbb{E}_{x \sim p}[f(x)] = \int p(x) f(x) d\tau = \int q(x) \frac{p(x)}{q(x)} f(x) d\tau = \mathbb{E}_{x \sim q} \left[ \frac{p(x)}{q(x)} f(x) \right]$$

В контексте обучения с подкреплением распределением $q$ становится наша старая политика $\pi_{\theta_{old}}$, на основе которой мы накопили данные, а распределением $p$ — новая, изменяемая политика $\pi_\theta$. Мы получаем возможность использовать старый батч данных для оценки градиента новой политики, взвешивая награды на отношение их вероятностей. Главное ограничение метода — «предлагающая» политика должна обладать ненулевой вероятностью выбора во всех точках, где может сработать новая политика. Наиболее стабильно метод функционирует тогда, когда старая и новая стратегии близки друг к другу.

### Практические компромиссы в длинных траекториях
При попытке перенести важностную выборку на реальные траектории инженеры сталкиваются с серьезным препятствием: отношение вероятностей всей траектории $\frac{p_\theta(\tau)}{p_{\theta_{old}}(\tau)}$ представляет собой произведение пошаговых отношений вероятностей выбора конкретных действий. Если длина траектории составляет, например, 100 временных шагов, последовательное перемножение ста дробей неизбежно приведет к численным проблемам:

* К взрывному росту значения до бесконечности, если локальные отношения были чуть больше единицы.
* К стремительному занулению градиента, если значения пошаговых отношений были слегка меньше единицы.

На практике этот математический тупик разрешают через сознательную замену ожидания по траекториям на ожидание по отдельным парам состояние-действие (state-action pairs). При этом отношение плотностей распределения самих состояний среды вынужденно принимают равным единице. Хотя данное допущение теоретически некорректно, оно выступает наилучшим доступным инженерным компромиссом. Полученный суррогатный Off-Policy градиент с весовым коэффициентом $\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}$ позволяет осуществлять по нескольку эффективных шагов оптимизации весов нейросети на одном и том же батче данных, прокладывая дорогу к современным алгоритмам вроде PPO.