# Эволюция алгоритмов Actor-Critic: как Стэнфорд обучает нейросети на ошибках

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

---

В Стэнфордском университете в рамках курса CS224R состоялась лекция, посвященная методам Actor-Critic (Актер-Критик) в глубоком обучении с подкреплением (Deep Reinforcement Learning). Преподаватель подробно разобрал, как синергия градиентов стратегии и функций ценности позволяет преодолеть фундаментальные ограничения классических подходов. Эти методы сегодня составляют основу алгоритмов вроде PPO, которые используются для обучения современных больших языковых моделей и управления сложными робототехническими системами.

## 🔄 Повторение пройденного: ограничения градиентов стратегии
[[JUMP:0:05]]

Лекция началась с краткого обзора онлайн-обучения с подкреплением, где агент собирает пакет данных с помощью текущей стратегии (policy), взаимодействуя со средой, а затем использует эти данные для обновления и улучшения своего поведения. В рамках классического алгоритма градиента стратегии (Policy Gradient) обновление параметров основывается на оценке логарифмического правдоподобия действий, взвешенного по полученной награде. Чтобы снизить дисперсию, вводится базовая линия (baseline) — среднее значение награды, благодаря чему алгоритм увеличивает вероятность успешных действий (выше среднего) и уменьшает вероятность неудачных (ниже среднего).

Однако у этого классического подхода есть критический недостаток — он полностью привязан к текущей стратегии (on-policy). По словам лектора, это означает, что исследователи могут сделать лишь один шаг градиентного спуска на один пакет собранных данных, что крайне неэффективно, ведь для любого значимого улучшения приходится собирать колоссальные объемы новой информации. 

Альтернативой выступают off-policy алгоритмы, способные повторно использовать данные прошлых стратегий с помощью весов важности (importance weights). Тем не менее, как предупреждает преподаватель, этот математически элегантный подход не является панацеей: веса важности работают адекватно только тогда, когда старая и новая стратегии очень похожи, иначе дисперсия оценок резко возрастает.

## 📊 Математический фундамент: функции ценности и преимущества
[[JUMP:4:27]]

Для перехода к более эффективным методам необходимо детально рассмотреть функции ценности (value functions). Лектор выделил три ключевых математических объекта, на которых строится вся архитектура Actor-Critic:

* **Функция ценности состояния $V^\pi(s)$** — отражает математическое ожидание суммы будущих наград, которые агент получит, начиная с конкретного состояния $s$ и далее следуя стратегии $\pi$. 
* **Функция ценности действия (Q-функция) $Q^\pi(s, a)$** — описывает ожидаемую выгоду, если в состоянии $s$ агент сначала выполнит конкретное (возможно, нетипичное для его текущей стратегии) действие $a$, и лишь затем вернется к выполнению стратегии $\pi$.
* **Функция преимущества $A^\pi(s, a)$** — определяет, насколько конкретное действие $a$ лучше или хуже, чем среднее действие, предписываемое текущей стратегией для данного состояния $s$.

Формально функция ценности состояния записывается через математическое ожидание:

$$V^\pi(s) = \mathbb{E}_{\pi} \left[ \sum_{t'=t}^T r(s_{t'}, a_{t'}) \;\middle|\; s_t = s \right]$$

Отвечая на вопрос студента о связи между $V$ и $Q$, лектор пояснил, что функцию ценности состояния $V^\pi(s)$ можно представить как математическое ожидание (или взвешенное среднее) значений $Q^\pi(s, a)$ по всем возможным действиям, которые может выбрать стратегия в данном состоянии. При оценке этого ожидания на практике с помощью выборок количество сэмплов выступает естественным нормировочным коэффициентом. Функция преимущества в свою очередь вычисляется как их разность:

$$A^\pi(s, a) = Q^\pi(s, a) - V^\pi(s)$$

## 🥁 Барабаны и шахматы: интуиция за функциями ценности
[[JUMP:12:08]]

Чтобы закрепить понимание этих абстрактных величин, преподаватель предложил аудитории мысленный эксперимент с обучением игре на барабанах. Представьте человека, который страстно желает освоить инструмент за один месяц. Его награда бинарна: 1, если через месяц он научится играть, и 0 во всех остальных случаях. В его распоряжении есть три возможных действия:

1.  Сидеть на пляже.
2.  Смотреть телевизор.
3.  Практиковаться в игре на барабанах.

Если текущая стратегия человека — всегда лежать на пляже, то ценность его текущего состояния $V^\pi(s)$ равна 0, поскольку он гарантированно не научится играть. Значения Q-функции для отдыха на пляже или просмотра ТВ также составят 0. Однако, если он выберет действие «практиковаться», значение $Q^\pi(s, a_3)$ станет равным 1 (или близким к 1, если одной сессии достаточно). 

Соответственно, функция преимущества $A^\pi(s, a_3)$ для практики будет строго положительной, а для остальных действий — нулевой. Лектор уточнил, что в реальности это значение отражает вероятность успеха и напрямую зависит от таланта человека или длительности временного шага.

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

## 🤖 Проблема падающего робота и куртки: зачем нужен Критик?
[[JUMP:15:43]]

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

Первый пример касается обучения робота ходьбе: если робот делает отличный шаг вперед, но затем спотыкается и падает навзничь, алгоритм Policy Gradient занизит вероятность того самого первого хорошего шага, поскольку итоговая награда за всю траекторию окажется отрицательной. Алгоритм попросту «не понимает», какое именно действие привело к катастрофе.

Второй пример — задача по складыванию куртки в условиях разреженной награды (sparse reward), когда агент получает бонус только за полностью выполненное задание. Если робот успешно расправил рукава, но не закончил складывание, траектория получит нулевую награду, и полезный опыт промежуточного прогресса будет полностью проигнорирован.

По мнению лектора, если бы у системы было понимание промежуточного прогресса и того, какие действия локально выгодны (выражаясь терминами функции преимущества), алгоритм смог бы использовать эти «неудачные» траектории в позитивном ключе. Замена зашумленной цепочки реальных наград из одной траектории на точную функцию $Q(s, a)$ позволит точечно поощрять удачные промежуточные маневры и наказывать за конкретные ошибки.

## 🧮 Как оценить преимущество: переход к функции ценности состояния
[[JUMP:22:52]]

Знание истинной функции преимущества позволило бы получать идеальные несмещенные градиенты, однако на практике она неизвестна. Напрямую аппроксимировать $A^\pi$ или обучать сразу две раздельные модели для $Q^\pi$ и $V^\pi$ слишком сложно и затратно. Решением, как продемонстрировал лектор, становится математическое преобразование, сводящее задачу к оценке только одной функции — $V^\pi(s)$.

Любую функцию ценности действия $Q^\pi(s_t, a_t)$ можно разложить на мгновенную награду $r(s_t, a_t)$ и ожидаемую ценность следующего состояния $s_{t+1}$. Поскольку при реальном запуске стратегии агент наблюдает конкретный переход в следующее состояние, это математическое ожидание можно аппроксимировать по единственному сэмплу:

$$Q^\pi(s_t, a_t) \approx r(s_t, a_t) + V^\pi(s_{t+1})$$

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

$$A^\pi(s_t, a_t) \approx r(s_t, a_t) + V^\pi(s_{t+1}) - V^\pi(s_t)$$

Теперь задача упрощается: нужно представить $V^\pi(s)$ в виде нейросети с параметрами $\phi$, которая принимает на вход вектор состояния и выдает одно скалярное число.

## 📉 Методы обучения Критика: Монте-Карло против бутстрапинга
[[JUMP:34:14]]

Преподаватель подробно разобрал два полярных подхода к обучению нейросети-Критика. Первый метод — это оценивание Монте-Карло (Monte Carlo estimation). В рамках этого подхода мы собираем траектории и обучаем нейросеть предсказывать реальную сумму будущих наград, зафиксированную в датасете, используя стандартное обучение с учителем (supervised learning). Целевая функция минимизирует квадратичную ошибку (L2-error) между предсказанием сети и фактическим исходом:

$$\min_\phi \sum_{i, t} \left( V_\phi(s_i, t) - \sum_{t'=t}^T r_{t'} \right)^2$$

Как подчеркнул лектор, метод Монте-Карло хорош тем, что он полностью несмещенный, однако обладает огромной дисперсией (variance), из-за чего обучение может быть крайне нестабильным.

Второй метод — это бутстрапинг (bootstrapping), или обучение на основе временных различий (Temporal Difference learning). Здесь в качестве таргета для обучения берется не реальный конец траектории, а сумма мгновенной награды и собственного текущего предсказания нейросети для следующего шага: $r_t + V_\phi(s_{t+1})$. Этот метод обладает гораздо меньшей дисперсией, но привносит смещение (bias), так как на первых этапах предсказания нейросети неизбежно содержат ошибки.

Для демонстрации различий лектор привел пример с двумя разветвляющимися траекториями (одна ведет к награде -1, другая к +1) и общим «синим» состоянием до развилки. Метод Монте-Карло для «синего» состояния усреднит исход до 0, но для последующих уникальных состояний выдаст строго -1 или +1, поскольку он изолирован внутри каждой траектории. Бутстрапинг же позволяет нейросети эффективнее агрегировать информацию и связывать ценность последовательных шагов между траекториями.

## ⚖️ Компромисс: N-шаговые возвраты и фактор дисконтирования
[[JUMP:52:03]]

Чтобы найти баланс между высокой дисперсией Монте-Карло и смещением бутстрапинга, на практике используют промежуточный вариант — N-шаговые возвраты (n-step returns). Вместо того чтобы брать прогноз Критика прямо на следующем шаге или ждать окончания всей игры, алгоритм суммирует реальные награды за $n$ шагов вперед, а ценность всех последующих шагов оценивает через нейросеть в точке $t+n$. 

По словам лектора, выбор оптимального $n$ (где-то посередине между 1 шагом и полной длиной эпизода) обычно дает наилучшие результаты на практике. Особенно это критично в средах с микроскопическими временными шагами (например, 10 миллисекунд), где за один шаг физически ничего не меняется.

Еще один важный инструмент — фактор дисконтирования $\gamma$ (гамма). Если эпизоды бесконечны или очень длинны, прямая сумма наград может устремиться в бесконечность. Введение коэффициента $\gamma$ (например, 0.9 или 0.99) заставляет алгоритм ценить немедленные награды выше будущих. 

Математически, как объяснил преподаватель, введение дисконта эквивалентно изменению марковского процесса принятия решений (MDP): это абсолютно идентично ситуации, когда у агента на каждом шаге есть фиксированная вероятность $1-\gamma$ мгновенно «умереть» — перейти в терминальное состояние с нулевой наградой навсегда.

## 🎬 Полный алгоритм Actor-Critic в действии
[[JUMP:1:00:27]]

В финале лекции преподаватель свел все элементы в единую циклическую схему полноценного алгоритма Actor-Critic:

1.  Стратегия собирает пакет данных (взаимодействуя со средой).
2.  На основе собранных траекторий Критик делает несколько шагов градиентного спуска, подгоняя функцию ценности под N-шаговые возвраты.
3.  С помощью обновленного Критика вычисляется функция преимущества для каждого действия в датасете: $A(s, a) \approx r + \gamma V(s') - V(s)$.
4.  Полученная оценка преимущества используется для вычисления градиента стратегии, увеличивая вероятность удачных действий и подавляя деструктивные.
5.  Параметры стратегии обновляются, и цикл запускается заново.

Как резюмировал лектор, название класса алгоритмов отражает наличие двух независимых нейросетей: Актёра (Actor), который отвечает за выбор действий (стратегию), и Критика (Critic), который оценивает, насколько хороши выбранные действия и состояния. Именно этот дуэт позволяет алгоритмам обучаться в разы эффективнее, извлекая максимум пользы из каждой секунды взаимодействия со средой.