Обучение с подкреплением

Actor-Critic: A2C, A3C

REINFORCE работает, но его градиенты шумят как радио без антенны - каждое действие получает одинаковый сигнал, хотя одни шаги были умными, другие случайными. Actor-Critic вводит двух игроков: Actor принимает решения, Critic оценивает их качество. Вместе они сходятся там, где REINFORCE топчется на месте.

  • **OpenAI Five** (Dota 2) использовала вариант A3C с тысячами параллельных сред
  • **A2C** - базовая линия в современных RL фреймворках (Stable-Baselines3, CleanRL)
  • **GAE** используется в PPO, TRPO и большинстве современных actor-critic алгоритмов
  • **Entropy bonus** - стандартный компонент во всех policy gradient методах

От Барто-Саттона-Андерсона к A3C

Идея actor-critic восходит к 1983 году, когда Эндрю Барто, Ричард Саттон и Чарльз Андерсон опубликовали работу «Neuronlike adaptive elements that can solve difficult learning control problems», обучив задачу балансировки шеста отдельным управляющим элементом (actor) и адаптивным критиком (critic). Архитектура оставалась в основном академической до 2016 года, когда Володимир Мних с коллегами из DeepMind опубликовали «Asynchronous Methods for Deep Reinforcement Learning» и представили A3C - множество actor-learner в параллельных средах, которые декоррелируют опыт без replay buffer. A2C - синхронный вариант: он ждёт все workers перед одним батчевым обновлением и обычно не уступает A3C, оставаясь проще и эффективнее на GPU.

Предварительные знания

  • Policy Gradient: REINFORCE
  • Deep Q-Network (DQN)

Advantage Function: почему одной reward недостаточно

В REINFORCE градиент взвешивается суммарной наградой G_t - это громко, но шумно. Каждое действие в эпизоде получает одинаковый вес G_t, хотя одни шаги были умными, другие - случайными. Сигнал «хорошо» приходит, но не говорит, **какое именно действие** его принесло.

**Advantage function** решает эту проблему: вместо абсолютной награды она измеряет, **насколько действие лучше среднего** в данном состоянии. A(s, a) = Q(s, a) - V(s). Если агент и так ожидал получить +5, а получил +7, advantage = +2. Это намного информативнее, чем просто +7.

**Baseline trick:** V(s) выступает как baseline - вычитая его, мы не меняем ожидание градиента, но сильно снижаем его дисперсию. Это математически доказуемо: любой baseline, не зависящий от действия, не смещает оценку градиента.

Advantage A(s,a) = Q(s,a) - V(s). Если A > 0, это означает:

Параллельное обучение в A3C

Одна из главных проблем RL - **сильная корреляция между последовательными переходами**. Если агент изучает одну и ту же задачу линейно, все его experiences похожи друг на друга - нейросеть переобучается под локальный паттерн и теряет общность.

**A3C (Asynchronous Advantage Actor-Critic)** - ответ DeepMind в 2016 году: запустить N независимых агентов в N параллельных копиях среды. Каждый worker асинхронно собирает опыт и вычисляет градиенты, обновляя **глобальную** сеть. Корреляция разрушается автоматически - разные среды дают разный опыт.

**A2C** - синхронная версия A3C. Все workers собирают один батч одновременно, затем модель обновляется один раз. Проще в реализации, нет race conditions, эффективнее на GPU. На практике часто не уступает A3C по качеству.

ПараметрA2C (синхронный)A3C (асинхронный)
WorkersЖдут друг другаОбновляют независимо
GPU efficiencyВысокая (единый батч)Ниже (мелкие апдейты)
РеализацияПрощеСложнее (race conditions)
Скорость сбораОграничена медленнымБыстрее на CPU-средах

Главная причина использовать несколько параллельных сред в A3C/A2C:

GAE: Generalized Advantage Estimation

При оценке advantage есть дилемма: 1-step TD даёт маленькую дисперсию, но смещённую оценку (Critic может ошибаться). Monte Carlo даёт несмещённую оценку, но с огромной дисперсией. **GAE** (Schulman et al., 2015) - взвешенная сумма TD-ошибок разных горизонтов, управляемая одним параметром lambda.

GAE с lambda=0 эквивалентен:

Entropy Bonus для exploration

Actor-Critic без дополнительных мер склонен к **преждевременной сходимости**: агент находит неплохое решение и перестаёт исследовать. Вероятности действий коллапсируют к детерминированной политике, и агент может застрять в локальном оптимуме. Entropy bonus - простой и мощный способ это предотвратить.

Энтропия H(pi(s)) = -sum pi(a|s) * log pi(a|s) максимальна при равномерном распределении и равна нулю при детерминированной политике. Добавляя её к суммарной функции потерь, агент штрафуется за излишнюю уверенность и вынужден продолжать исследование.

**Подбор entropy_coef:** слишком большое значение - политика остаётся случайной и не сходится; слишком маленькое - коллапсирует в детерминированную политику. Значение 0.01 - разумная отправная точка. В PPO entropy_coef часто уменьшают с течением обучения (annealing).

Что происходит при слишком большом entropy_coef?

Actor-Critic: A2C, A3C

  • Advantage A(s,a) = Q(s,a) - V(s) снижает дисперсию градиентов без смещения
  • A3C: N асинхронных workers обновляют глобальную модель, разрушая корреляцию переходов
  • A2C: синхронная версия A3C, проще и эффективнее на GPU
  • GAE с параметром lambda контролирует bias-variance tradeoff между 1-step TD и Monte Carlo
  • Entropy bonus -H(pi) поддерживает exploration, препятствует коллапсу политики
  • Полная loss A2C = L_actor + c_v * L_critic - c_e * H(pi)

Связанные темы

Actor-Critic - фундамент современных RL алгоритмов. PPO, SAC, TD3 строятся поверх этих идей.

  • Policy Gradient и REINFORCE — Базис, который Actor-Critic улучшает по дисперсии
  • PPO: Proximal Policy Optimization — Следующий шаг: стабилизация Actor-Critic через clipped objective
  • Deep Q-Networks — Альтернативный подход: только Critic, без явного Actor

Вопросы для размышления

  • Почему вычитание baseline V(s) не смещает оценку градиента, но снижает дисперсию?
  • В чём принципиальное алгоритмическое отличие A2C от A3C - не техническое?
  • Как GAE с lambda=0.95 ведёт себя при очень длинных эпизодах (1000+ шагов)?

Связанные уроки

  • rl-08 — Actor-Critic улучшает оценку REINFORCE
  • rl-10 — PPO - это клиппированный стабилизированный actor-critic
  • ml-50-policy-gradient — Та же теория policy gradient в ML-треке
  • prob-08-variance — Baseline критика снижает дисперсию градиента
  • ml-25-neural-networks — Actor и critic - две нейросети
  • prob-01-intro
Actor-Critic: A2C, A3C

0

1

Войти