18 DQN (Atari)
Контекст
RL умел учить агентов в маленьких/ручных пространствах состояний. DeepMind учит играть в Atari прямо из ПИКСЕЛЕЙ, без ручных признаков — соединяя Q-learning с глубокой сетью.
Идея и механизм
Функцию ценности Q(s, a) (ожидаемая будущая награда за действие a в состоянии s) аппроксимирует свёрточная сеть: вход — несколько последних кадров экрана, выход — Q по каждому действию, агент берёт argmax Q. Два приёма, без которых обучение разваливалось: experience replay (буфер переходов, случайный сэмпл → разрывает корреляцию соседних кадров) и target network (замороженная копия для вычисления целей → устойчивость).
обучение с подкреплением Уравнение Беллмана и почему нужна target-сеть
Оптимальная Q-функция удовлетворяет уравнению Беллмана: ценность сейчас = награда + дисконтированная лучшая ценность дальше:
DQN приближает Q* сетью Qθ, минимизируя temporal-difference ошибку — расхождение левой и правой частей:
Тонкость: Q стоит и в цели, и в предсказании. Если цель считать той же обучаемой сетью, она «убегает» на каждом шаге — обучение гонится за движущейся мишенью и расходится. Target network Qθ⁻ — замороженная копия, обновляемая редко, — фиксирует мишень и стабилизирует процесс.
PyTorch TD-лосс DQN с target-сетью
import torch
def dqn_loss(batch, Q, Q_target, gamma=0.99):
s, a, r, s2, done = batch
q = Q(s).gather(1, a) # Q(s, a)
with torch.no_grad():
target = r + gamma * Q_target(s2).max(1).values * (1 - done)
return ((q.squeeze() - target) ** 2).mean() # temporal-difference ошибка
Почему это важно
Запустила глубокий RL: одна сеть с одними гиперпараметрами выучила 7 игр из сырых пикселей, в нескольких — на уровне/выше человека. Прямая линия к AlphaGo (#29) и к RL-части RLHF (#44). Показала, что DL + RL дают агентов, учащихся восприятию и контролю end-to-end.
Связи
«Глаза» агента — свёрточная сеть, читающая экран. DQN — это CNN-восприятие, надстроенное Q-learning-целью; без зрелых CNN обучение из пикселей было бы невозможно.
DQN доказал, что deep RL работает на восприятии и контроле. AlphaGo берёт ту же связку «глубокие сети + RL» и добавляет поиск (MCTS), чтобы взять го — следующая ступень программы DeepMind.
DQN — value-based RL (учим Q, действие = argmax). PPO — policy-based (учим политику напрямую), стабильнее для непрерывных действий и больших политик. Именно policy-gradient (PPO) станет движком RLHF, но обе ветви растут из того самого успеха deep RL, начатого DQN.
Вопросы пытливого ума
Почему RL так нестабилен по сравнению с supervised-обучением?
Сходятся три беды («deadly triad»): (1) bootstrapping — цель берётся из собственных оценок сети; (2) аппроксимация функции; (3) off-policy данные. Плюс распределение данных нестационарно — меняется политика, меняются и встречаемые состояния. Replay и target network гасят часть проблем, но RL остаётся капризнее, чем обучение с фиксированной разметкой.
DQN играет из пикселей — это шаг к общему ИИ?
И да, и нет. Впечатляет общность: одна архитектура осилила много разных игр без подгонки. Но это узко: модель учится каждой игре заново, не переносит навык, и крайне неэффективна по данным (миллионы кадров на игру). Это важная веха программы deep RL, но до «общего» агента далеко — и сэмпл-эффективность остаётся болью RL.
Q-learning переоценивает ценности — это известная проблема, при чём тут DQN?
Оператор max в цели систематически завышает Q (берём максимум по зашумлённым оценкам → смещение вверх). DQN этим страдает; лечение — Double DQN: выбирать действие одной сетью, а оценивать — другой (target), разрывая совместное смещение выбора и оценки. Хороший пример, как тонкая статистическая деталь (max смещён) портит обучение.
Что читать в оригинале
Короткий — читать целиком; обратите внимание на experience replay и target network: это общие паттерны стабилизации, которые потом всплывают во всём deep RL.