Как ИИ от DeepMind научился играть в Atari: разбор классической статьи от Янника Килчера

Yannic Kilcher 51,6 тыс. 39 мин 7 мин 26.07.2020
Главное

В 2013 году компания DeepMind опубликовала фундаментальную работу «Playing Atari with Deep Reinforcement Learning», которая перевернула представление об обучении с подкреплением и дала мощный толчок развитию современного искусственного интеллекта. Популярный исследователь и блогер Янник Килчер (Yannic Kilcher) подробно разобрал этот классический труд, объяснив, как простой свёрточной нейросети удалось освоить аркадные видеоигры без ручной настройки признаков. Этот детальный разбор позволяет проследить истоки революции в области Deep RL и оценить элегантность инженерных решений, которые сегодня стали индустриальным стандартом.

🕹️ Новая эра обучения с подкреплением: от марковских процессов к сырым пикселям 0:00

До выхода этой статьи обучение с подкреплением (Reinforcement Learning) оставалось довольно специфической и изолированной областью математики, завязанной на концепции марковских процессов принятия решений (MDP). Существовавшие тогда алгоритмы либо не справлялись с комплексными задачами, либо критически зависели от ручного проектирования признаков (hand-engineered features), когда инженеры сами объясняли алгоритму, где находятся объекты на экране. Команда исследователей под руководством Владимира Мниха (Volodymyr Mnih) совершила прорыв, объединив силу глубоких свёрточных нейросетей с обучением с подкреплением.

Авторы представили первую в истории модель глубокого обучения, способную успешно осваивать стратегии управления напрямую из высокоразмерных сенсорных данных. В качестве испытательного полигона использовалась среда Arcade Learning Environment (ALE), включающая в себя классические игры для консоли Atari 2600. Архитектура системы управляла виртуальным джойстиком, который в каждой игре имел фиксированный набор действий — от 16 до 20 вариантов движений и нажатий кнопок. При этом на вход алгоритму подавались исключительно сырые пиксели игрового экрана размером примерно 180 на 150 точек.

Главная сложность такой конфигурации заключается в фундаментальной проблеме обучения с подкреплением — проблеме распределения наград (credit assignment problem). В классическом цикле взаимодействия агент совершает действие в среде, получает новое наблюдение (кадр игры) и награду. Однако игровой процесс может длиться тысячи шагов, а значимая награда (например, очко за выбитый блок в Breakout или забитый гол в Pong) приходит крайне редко. По мнению Янника Килчера, научить сеть сопоставлять редкую отложенную награду с конкретными пикселями на экране, полученными сотни шагов назад, на тот момент казалось чем-то невероятным.

🧠 Математика функции Q и архитектурная концепция DQN 7:05

Разработанный алгоритм Deep Q-Network (DQN) применили к семи разным играм Atari с абсолютно одинаковыми гиперпараметрами и архитектурой. Сеть обучалась для каждой игры отдельно, но отсутствие необходимости тонкой настройки под каждую конкретную среду доказало, что Deep RL может выступать в роли универсального механизма обучения.

В основе вычислений лежит концепция максимизации суммы будущих наград с учётом фактора дисконтирования ($\gamma$), который определяет ценность немедленного выигрыша по сравнению с отложенным. Янник Килчер противопоставляет подход Q-learning методам градиента стратегий (Policy Gradient). Если методы градиента стратегий обучают нейросеть напрямую выбирать действие для конкретного состояния (сводя задачу к подобию классификации), то Q-learning фокусируется на поиске так называемой функции ценности $Q(s, a)$.

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

Оригинальное инженерное изящество DQN заключается в оптимизации вычислений:

🔄 Алгоритм обучения и стабилизация через Replay Buffer 19:55

Процесс обучения базируется на рекуррентном уравнении Белльмана. Нынешняя оценка функции Q для текущего состояния должна быть равна фактически полученной награде на текущем шаге плюс максимальная оценка Q для следующего состояния, в которое перейдёт игра. Обучение сети превращается в задачу минимизации среднеквадратичной ошибки ($L_2$ loss) между текущим предсказанием сети и таргетом, который «бутстрапится» (вычисляется) с помощью этой же самой нейросети.

Янник Килчер обращает внимание на исторический нюанс: в тексте статьи 2013 года авторы подробно расписали математический градиент функции потерь. По ироничному замечанию ведущего, сегодня никто так не делает — исследователи просто закидывают код в условный TensorFlow или PyTorch и вызывают автоматическое дифференцирование.

Алгоритм является беспрецедентно «свободным от модели» (model-free) — сеть ничего не знает о физике или правилах игры, вся логика зашита внутри весов. Обучение происходит в режиме off-policy (вне стратегии) с использованием $\epsilon$-жадной ($\epsilon$-greedy) стратегии исследования. С вероятностью $1-\epsilon$ модель выбирает наилучшее с её точки зрения действие, а с вероятностью $\epsilon$ совершает случайный шаг, чтобы изучать новые паттерны и избегать преждевременной стагнации.

Однако ключевым фактором успеха всей системы стал так называемый буфер воспроизведения опыта (Experience Replay Buffer). В процессе игры последовательные кадры видеопотока невероятно сильно коррелируют между собой. Если обучать нейросеть прямо по ходу получения кадров, то мини-батчи данных будут лишены разнообразия, что полностью ломает базовое математическое допущение о независимости и одинаковой распределённости (i.i.d.) обучающих выборок.

Решение проблемы выглядит следующим образом:

  1. Все переходы агента (состояние, действие, награда, новое состояние) записываются в огромный буфер памяти фиксированного объёма.
  2. При достижении лимита новые воспоминания начинают вытеснять самые старые.
  3. Для проведения градиентного спуска алгоритм случайным образом извлекает мини-батчи из этого буфера.
  4. Благодаря случайной выборке данные декоррелируются, и сеть может эффективно обучаться на стабильном подмножестве опыта, прогоняя некоторые важные моменты по несколько раз.

🛠️ Пошаговый технический туториал: пайплайн данных и архитектура сети 28:32

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

Шаг 1: Предобработка сенсорного ввода

Сырые RGB-кадры из эмулятора Atari подвергаются понижению разрешения и трансформации. Итоговое изображение сжимается до фиксированного размера 84 на 84 пикселя и переводится в градации серого.

Шаг 2: Формирование временного стека

Одиночный кадр не даёт понимания динамики (например, невозможно определить, в какую сторону летит мяч в Pong). Поэтому авторы объединяют (конкатенируют) 4 последовательных кадра в один стек. Таким образом, единичным «состоянием» на входе в сеть является тензор размерностью 84x84x4. Этот приём также нивелирует проблему мерцания текстур, которая была характерна для старых консолей Atari.

Шаг 3: Проход через свёрточную архитектуру

Обработанный стек кадров подаётся на вход нейросети, которая по современным меркам выглядит миниатюрной, но содержит классические слои того времени:

Янник Килчер подчёркивает, что в архитектуре полностью отсутствует операция Max Pooling, что было смелым решением для 2013 года. Фильтры слоёв — по моде тех лет (вдохновлённой AlexNet) — достаточно крупные, тогда как современные тренды компьютерного зрения диктуют использование мелких фильтров (например, 3x3), но в гораздо более глубоких сетях.

📊 Триумф над человеком и ограничения долгосрочного планирования 33:45

Эффективность обучения авторы подтвердили экспериментально. Хотя показатель средней награды за сессию демонстрировал сильную зашумленность, график средней оценки Q-значений для выбранных действий стабильно и плавно рос вверх, что свидетельствовало о корректной сходимости алгоритма.

Особый интерес вызывает исследовательский эксперимент DeepMind по визуализации динамики предсказаний Q-функции в процессе игры. Внимательный анализ показал явную корреляцию между происходящим на экране и математической уверенностью сети:

В итоговом сравнении DQN превзошла все существовавшие академические подходы в 6 из 7 протестированных игр. Предыдущие алгоритмы использовали специализированные детекторы объектов или выделенные цветовые каналы под конкретные элементы игры, что делало сравнение даже не совсем честным по отношению к DQN, работавшей на «чистых» пикселях. Более того, в трёх играх искусственный интеллект превзошёл результаты эксперта-человека.

Сеть научилась филигранным паттернам. В игре Breakout она самостоятельно открыла знаменитую тактику «прокапывания туннеля»: dqn-агент пробивал брешь в крайнем ряду кубиков и запускал мяч за верхнюю границу стены, где тот хаотично отскакивал без участия игрока, принося колоссальное количество очков. Компьютер идеально реализовывал микроконтроль, требующий предельной точности движений.

Тем не менее, игры, требующие долгосрочного стратегического планирования, выявили уязвимость алгоритма. В средах, где награда разделена долгими периодами бесплодных поисков, DQN пасовала перед человеком. По утверждению Янника Килчера, эта проблема глубокого обучения с подкреплением остаётся актуальной и дискуссионной по сей день, а современные алгоритмы вроде Go-Explore до сих пор вызывают ожесточённые споры в научном сообществе.

💬 Цитаты

«Эта статья запустила целую революцию в обучении с подкреплением, породив современный хайп вокруг Deep RL.»

Янник Килчер 0:14

«Модель освоила семь разных игр, используя абсолютно одинаковые гиперпараметры, что доказывает универсальность механизма.»

Янник Килчер 7:59
👥 Спикер
📖 Термины
Q-learning
Алгоритм обучения с подкреплением, который оценивает ценность (будущую выгоду) совершения определённого действия в заданном состоянии среды.
DQN (Deep Q-Network)
Архитектура, объединяющая глубокую свёрточную нейросеть с алгоритмом Q-learning для работы напрямую с высокоразмерными визуальными данными.
Experience Replay
Методика сохранения истории переходов агента в специальный буфер памяти для последующего случайного извлечения батчей при обучении сети.
Credit Assignment Problem
Проблема распределения наград — сложность определения того, какие именно из прошлых действий агента привели к получению отложенного выигрыша.
i.i.d. (Independent and Identically Distributed)
Математическое допущение о независимости и одинаковом распределении случайных величин, критически важное для корректной работы градиентного спуска.
📊 Цифры
🗓 Хронология
  1. 2012 год Выход нейросети AlexNet, задавший тренд на крупные фильтры в свёрточных слоях компьютерного зрения.
  2. Декабрь 2013 года Публикация компанией DeepMind статьи 'Playing Atari with Deep Reinforcement Learning' на конференции NIPS.
  3. После 2013 года Бурное развитие Deep RL, появление архитектур непрерывного контроля и усложнение методов коррекции стратегий.
⚖️ Другая сторона
Искусственный интеллект Deep Reinforcement Learning Atari Янник Кильхер DeepMind DQN