# Как классическая игра NetHack помогает обучать нейросети будущего

Источник: https://www.youtube.com/watch?v=H8xcjBqSTy8
Канал: The TWIML AI Podcast
Опубликовано: 14.10.2021

---

Обучение с подкреплением (Reinforcement Learning, RL) долгое время опиралось на игры вроде Atari, однако современные исследователи считают этот подход ограниченным. Тим Роктешель, научный сотрудник Meta AI (FAIR) и профессор UCL, обсуждает переход к процедурно генерируемым средам и использованию классической игры NetHack для тренировки агентов, способных к настоящему обобщению знаний.

## 🕹️ Проблема «переобучения» в симуляторах
[[JUMP:02:00]]

На протяжении последнего десятилетия исследования в области RL были сосредоточены на крайне ограниченных и детерминированных средах [02:12]. Тим Роктешель подчеркивает, что успех в играх Atari, безусловно, продвинул науку, но эти игры статичны. Агенты часто не «учатся» играть в широком смысле, а просто эксплуатируют упрощенные предположения, заложенные в симуляторы, фактически заучивая последовательности действий [04:25].

Проблема аналогична переобучению (overfitting) на датасете ImageNet в компьютерном зрении [08:22]. В RL это проявляется еще острее: если агент привыкает к определенному визуальному паттерну или топологии уровня, малейшее изменение (например, текстуры пола или расположения стен) приводит к полному краху его стратегии [07:02]. Чтобы преодолеть этот барьер, исследовательское сообщество начало внедрять процедурно генерируемые среды, такие как:

*   **Minecraft:** богатый, но чрезвычайно медленный для симуляции мир [09:51].
*   **Obstacle Tower:** 3D-среда для прыжков, где расположение блоков и ключей меняется каждый эпизод [10:05].
*   **OpenAI Procgen:** набор из 16 игр, требующих систематического обобщения навыков [10:17].

## 🗡️ NetHack как идеальный полигон для AI
[[JUMP:12:00]]

Роктешель и его команда остановили свой выбор на NetHack — культовой игре жанра rogue-like, созданной в 1987 году [12:38]. Несмотря на то, что игра полностью текстовая (ASCII-графика в терминале), она обладает невероятной глубиной.

Ключевые особенности NetHack как бенчмарка:

1.  **Скорость:** отсутствие 3D-графики позволяет симулировать десятки тысяч шагов в секунду на одном GPU [26:50].
2.  **Сложность:** сотни типов монстров и предметов, каждый из которых обладает уникальной механикой взаимодействия [12:54].
3.  **Перманентная смерть:** после гибели персонажа игра начинается заново в абсолютно новом, процедурно созданном подземелье [13:06].
4.  **Длительность:** прохождение игры занимает в среднем 50 000 шагов, что в разы больше, чем в StarCraft II [13:31].

Тим отмечает, что даже для опытного человека игра крайне сложна: самому Роктешелю потребовалось два года регулярной игры во время поездок на поезде, чтобы одержать свою первую победу («вознестись») [15:58].

## 🧠 От «берсерка» к осознанному исследователю
[[JUMP:18:00]]

Первые попытки применить стандартные алгоритмы глубокого RL к NetHack дали любопытные результаты. Агенты научились базовым навыкам: открывать двери, избегать сильных монстров и даже есть пищу, чтобы не умереть от голода [18:58]. Однако они все еще далеки от победы.

Основная проблема заключается в функции вознаграждения. Обычный игровой счет в NetHack — плохая метрика для оптимизации. Агент, стремящийся максимизировать счет, превращается в «берсерка»: он просто бежит вперед, убивая всё на своем пути, и быстро погибает, так как не тратит время на поиск экипировки и стратегическое развитие [20:26].

По мнению Роктешеля, агенты должны руководствоваться не внешними очками, а **внутренней мотивацией** (intrinsic motivation) и любопытством [21:04]. Ученый проводит параллель со своей докторской диссертацией по NLP и графам знаний: агент в NetHack должен вести себя как ученый, ставящий эксперименты. Например, выяснять: «Что будет, если я смешаю эти два зелья?» или «Могу ли я прокопать туннель вниз с помощью этого жезла?» [22:45].

## 🛠️ MiniHack и обучение через дизайн сред
[[JUMP:30:48]]

Для более тонкой настройки исследований команда Роктешеля создала проект **MiniHack**. Это «песочница» на базе движка NetHack, которая позволяет описывать конкретные задачи на специальном языке (DSL) [32:32]. Исследователи могут создавать изощренные лабиринты или специфические ситуации для проверки конкретных навыков агента.

Одним из самых перспективных направлений Тим называет **Unsupervised Environment Design (UED)** [38:51]. В этой концепции существуют два агента:

*   **Студент:** обучается решать задачи.
*   **Учитель:** генерирует уровни.

Учитель не просто создает случайные миры, а ищет такие конфигурации, где Студент допускает ошибки, но имеет потенциал для обучения [39:31]. Этот процесс автоматического формирования учебного плана (curriculum learning) позволяет выращивать агентов, обладающих «Zero-shot generalization» — способностью успешно проходить созданные вручную сложные уровни, которые они никогда не видели в процессе обучения [42:13].

## 🚀 Будущее и открытые вопросы
[[JUMP:44:22]]

В завершение беседы Роктешель выделил основные приоритеты будущих исследований:

1.  **Масштабирование сложности:** переход от 2D-лабиринтов к полноценным 3D-мирам (например, в стиле Minecraft), где сложность нарастает эволюционно [44:47].
2.  **Обучение на демонстрациях:** на серверах alt.org накоплено около 5 миллионов записей игр людей в NetHack [29:02]. Проблема в том, что в них записаны состояния, но не действия (клавиши), что требует разработки новых методов обратного RL.
3.  **Символьное представление:** использование того факта, что NetHack — символьная игра. Это открывает путь к нейросимвольным моделям, сочетающим глубокое обучение и классическую логику [23:45].

Тим подчеркивает: цель не в том, чтобы «взломать» конкретную игру, используя бесконечные вычислительные мощности, а в создании методов, которые позволят AI функционировать в непредсказуемом реальном мире [46:18].