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

Deep Q-Network (DQN)

В 2013 году один алгоритм с одними гиперпараметрами научился играть в 49 разных Atari-игр, в 29 из них - лучше человека. До этого под каждую игру писали отдельный ИИ. DQN стал доказательством, что один агент может освоить разные задачи из пикселей.

  • **AlphaGo и AlphaZero** используют архитектурные идеи DQN (deep Q-estimation) в комбинации с Monte Carlo Tree Search - именно так достигается уровень чемпиона мира в го.
  • **Рекомендательные системы YouTube** применяют идеи Q-learning для долгосрочной оптимизации удержания: не максимизировать клик прямо сейчас, а максимизировать время сессии.
  • **Торговые боты** на криптобиржах используют DQN-подобные агенты для принятия решений buy/sell/hold на основе рыночных данных - replay buffer помогает обучаться на исторических данных.

DQN: deep learning встречает Q-learning

В 2013 году Володимир Мних и коллеги из DeepMind представили работу 'Playing Atari with Deep Reinforcement Learning' на воркшопе NIPS: свёрточная сеть учится играть в Atari из сырых пикселей и одного лишь счёта. В 2015 году полная версия вышла в Nature как 'Human-level control through deep reinforcement learning', достигнув уровня человека или выше в 29 из 49 игр Atari с одной архитектурой и одним набором гиперпараметров. Experience replay и отдельная target network - два стабилизирующих трюка, сделавших обучение нейросетевой Q-функции практичным. Статья открыла эру deep reinforcement learning и напрямую привела к AlphaGo.

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

  • Q-learning и обновление Беллмана для Q(s,a)
  • Нейросети и backpropagation
  • Exploration vs exploitation и epsilon-greedy
  • Stochastic gradient descent и функции потерь
  • TD Learning и Q-Learning
  • Нейросети

Experience Replay

В 2013 году DeepMind обучила агента играть в Atari Breakout лучше человека. Проблема классического Q-learning с нейросетью - обучающие примеры идут один за другим во времени и сильно коррелированы: если агент видит кадр с мячом слева, следующий кадр тоже будет «мяч чуть левее». Градиенты осциллируют, обучение нестабильно.

**Experience Replay** решает это буфером памяти: каждый шаг `(s, a, r, s')` записывается в кольцевой буфер размером 1 000 000 transitions. При каждом обновлении из буфера случайно сэмплируется мини-батч из 32-64 transitions - они независимы и i.i.d., как обычный supervised learning.

Replay buffer также позволяет переиспользовать редкие переходы много раз - данные не выбрасываются сразу после одного использования. DeepMind использовала буфер 1M и начинала обучение только после накопления 50 000 переходов.

Зачем в DQN нужен Experience Replay буфер?

Target Network

Вторая нестабильность классического Q-learning с нейросетью: цель для обучения `r + γ * max Q(s', a')` использует те же веса, что и обновляемая сеть. Цель движется вместе с прогнозом - как стрелять по движущейся мишени. Это создаёт осциллирующие обновления и дивергенцию.

**Target Network** - вторая копия Q-сети с замороженными весами `θ⁻`. Цель считается через неё: `y = r + γ * max Q(s', a'; θ⁻)`. Основная сеть обновляется каждый шаг, целевая - жёсткой заменой весов каждые C шагов (например, C=10 000). Цель стабильна в пределах C шагов.

Альтернатива жёсткой замене - Polyak averaging: `θ⁻ ← τ*θ + (1-τ)*θ⁻` с τ=0.005. Это плавное обновление используется в DDPG и SAC для непрерывных действий.

Как часто в оригинальном DQN (Mnih 2015) обновляется Target Network?

Double DQN

Классический DQN систематически **переоценивает** Q-значения. Причина: `max Q(s', a')` использует одну и ту же сеть и для выбора лучшего действия, и для его оценки. Когда сеть шумная (а она всегда шумная), максимум шумных оценок > ожидаемого истинного максимума - это называется maximization bias.

**Double DQN** (van Hasselt et al., 2015) разделяет выбор и оценку: основная сеть выбирает действие `a* = argmax Q(s', a; θ)`, а целевая сеть оценивает его `Q(s', a*; θ⁻)`. Смещение устраняется, оценки более точные, что улучшает финальную политику.

На Atari играх Double DQN показал улучшение на 41 из 49 игр по сравнению с DQN. Изменение минимальное - одна строчка кода - но эффект существенный. Это один из главных аргументов за Double DQN как базовую линию.

В чём принципиальное отличие Double DQN от DQN при вычислении таргета?

Dueling DQN

Во многих состояниях в Atari выбор конкретного действия почти не влияет на результат - важно просто выжить. Например, в Enduro выбор газа влияет только при наличии машин рядом. Стандартная Q-сеть всё равно должна оценить Q для каждого действия, тратя ёмкость сети на «неважные» решения.

**Dueling DQN** (Wang et al., 2016) декомпозирует Q-функцию: `Q(s,a) = V(s) + A(s,a)`, где V(s) - ценность состояния независимо от действия, A(s,a) - преимущество конкретного действия. Два отдельных потока в нейросети считают V и A, затем объединяются.

Объединение `V + A - mean(A)` (а не просто V+A) важно для идентифицируемости: без вычитания среднего V и A не разделяются однозначно. Это требование вытекает из того, что `sum_a π(a|s) * A(s,a) = 0` по определению advantage.

DQN, Double DQN и Dueling DQN - три принципиально разных алгоритма, каждый требует полной переписки кода

Double DQN - это одна строка изменения в DQN, Dueling - замена последних слоёв сети. Все три часто комбинируют в Rainbow DQN

Rainbow (Hessel et al., 2017) показал, что DQN + Double + Dueling + Prioritized Replay + N-step + Distributional + Noisy Nets дают state-of-the-art на Atari. Все улучшения ортогональны и аддитивны.

Зачем в Dueling DQN из advantage-потока вычитают среднее: `A - mean(A)`?

Ключевые идеи

  • **Experience Replay** хранит переходы в буфере и сэмплирует случайные мини-батчи - разрывает временную корреляцию, делает обучение стабильным как supervised learning.
  • **Target Network** - замороженная копия Q-сети для вычисления обучающих целей, обновляется каждые C=10 000 шагов - устраняет проблему «движущейся мишени».
  • **Double DQN** разделяет выбор лучшего действия (online-сеть) и его оценку (target-сеть) - устраняет maximization bias без дополнительных вычислений.
  • **Dueling DQN** разделяет Q-функцию на V(s) + A(s,a) через два потока в нейросети - эффективнее обучается в состояниях, где выбор действия не критичен.

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

DQN стоит на фундаменте Q-learning и открывает путь к современным алгоритмам:

  • Q-learning и Bellman equation — DQN - это Q-learning с нейросетью вместо таблицы; Experience Replay и Target Network исправляют нестабильность этой замены
  • Policy Gradient: REINFORCE — Альтернативный подход - оптимизировать политику напрямую, а не через Q-функцию; Actor-Critic объединяет оба подхода

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

  • Почему Experience Replay не работает с on-policy алгоритмами (REINFORCE, PPO), но хорошо работает с off-policy (DQN)?
  • Что произойдёт с обучением DQN, если частоту обновления Target Network увеличить до каждого шага или уменьшить до раза в миллион шагов?
  • Rainbow объединяет 6 улучшений DQN. Если бы нужно было выбрать только одно из них - Prioritized Replay или Dueling - какое принесло бы больше пользы и почему?

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

  • rl-06 — Q-Learning - алгоритм, который DQN аппроксимирует сетью
  • rl-08 — Policy gradient - альтернативное семейство deep RL
  • ml-25-neural-networks — Нейросети аппроксимируют Q-функцию
  • ml-49-q-learning — DQN масштабирует табличный Q-learning на большие состояния
  • ml-28-optimizers — Оптимизаторы градиента обучают Q-сеть стабильно
  • dl-01
Deep Q-Network (DQN)

0

1

Войти