Широкий спектр сред
В поисках искусственного общего интеллекта (AGI) мы стремимся создавать агентов, которые могут достигать целей в самых разных средах. По мере того как наши агенты осваивают среду, которую мы создаем, мы должны постоянно создавать новые среды, которые исследуют еще не проверенные когнитивные способности.
Игры всегда представляли собой проблему для исследований в области искусственного интеллекта (ИИ), наиболее известными из которых являются настольные игры, такие как нарды, шахматы и го. Видеоигры, такие как Space Invaders, Quake III Arena, Dota 2 и StarCraft II, в последнее время также стали популярными для исследований ИИ. Игры идеальны, потому что они имеют четкую меру успеха, позволяя эмпирически оценивать прогресс и напрямую сравнивать его с людьми.
По мере развития исследований в области ОИИ растет и интерес исследовательского сообщества к более сложным играм. В то же время становится трудно управлять инженерными усилиями, необходимыми для преобразования отдельных видеоигр в исследовательскую среду. Все чаще игровые движки общего назначения становятся наиболее масштабируемым способом создания широкого спектра интерактивных сред.
Универсальные игровые движки
Многие исследования AGI уже проводились в игровых движках, таких как Проект Мальмёоснованный на Майнкрафте; ВиЗДум, основанный на Думе; и Лаборатория DeepMind, основанный на Quake III Arena. Эти механизмы могут быть написаны для быстрого создания новых сред, а поскольку многие из них были написаны для старого оборудования, они могут работать очень быстро на современном оборудовании, устраняя среду как узкое место в производительности.
Но в этих игровых движках отсутствуют некоторые важные функции. DeepMind Lab, например, отлично подходит для изучения навигации, но плохо подходит для изучения понятий здравого смысла, таких как то, как объекты движутся и взаимодействуют друг с другом.
Единство
В DeepMind мы используем Unity, гибкий и многофункциональный игровой движок. Реалистичная физическая симуляция Unity позволяет агентам работать в среде, более близкой к реальному миру. Современный конвейер рендеринга предоставляет более тонкие визуальные подсказки, такие как реалистичное освещение и тени. Скрипты Unity написаны на C#, который легко читается и, в отличие от специализированных движков, обеспечивает доступ ко всем функциям игрового движка. Многоплатформенная поддержка позволяет нам запускать среды дома на наших ноутбуках или в масштабах центров обработки данных Google. Наконец, поскольку движок Unity продолжает развиваться, мы можем быть уверены в завтрашнем дне, не затрачивая много времени на собственное проектирование.
Unity включает в себя готовый к использованию инструментарий машинного обучения под названием ML-агенты который фокусируется на упрощении процесса создания существующей игры в качестве среды обучения. DeepMind фокусируется на создании широкого спектра гетерогенных сред, которые запускаются в масштабе, и поэтому вместо этого мы используем dm_env_rpc (см. ниже).
Отличия от обычных игр
Традиционные видеоигры визуализируются в режиме реального времени: одна секунда на экране равна одной секунде в симуляции. Но для исследователей ИИ игра — это просто поток данных. Игры часто могут обрабатываться намного быстрее, чем в режиме реального времени, и нет проблем, если скорость игры резко меняется от момента к моменту.
Кроме того, многие алгоритмы обучения с подкреплением масштабируются с несколькими экземплярами. То есть один ИИ может одновременно играть в тысячи игр и одновременно учиться на них всех.
Из-за этого мы оптимизируем пропускную способность, а не задержку. То есть мы обновляем наши игры столько раз, сколько можем, и не беспокоимся о создании этих обновлений с постоянной скоростью. Мы запускаем несколько игр на одном компьютере, по одной игре на ядро процессора. Задержки, вызванные такими функциями, как сборка мусора — обычная головная боль для традиционных разработчиков игр — нас не беспокоят, если игра в целом работает быстро.
Контейнеризация и dm_env_rpc
Игры выводят изображения, текст и звук, которые игрок может видеть и слышать, а также принимают входные команды от какого-либо игрового контроллера. Структура этих данных важна для исследователей ИИ. Например, текст обычно представляется отдельно, а не рисуется на экране. Поскольку гибкость в этом формате данных очень важна, мы создали новую библиотеку с открытым исходным кодом под названием dm_env_rpcкоторый функционирует как граница между средами и агентами.
Используя dm_env_rpc, мы можем контейнеризовать наши среды и публиковать их. Контейнеризация означает использование таких технологий, как Докер для упаковки предварительно скомпилированных двоичных файлов среды. Контейнеризация позволяет проводить независимую проверку наших исследований. Это более надежный и удобный способ воспроизведения экспериментов, чем открытый исходный код, который может быть сбит с толку различиями компиляторов или операционных систем. Для получения более подробной информации о том, как мы контейнеризируем среду, см. нашу работу на dm_memorytasks.