Нейросети научились воссоздавать аркады на Raspberry Pi Pico 2 W

Разработчик под никнеймом SheepSeb представил проект, в котором Raspberry Pi Pico 2 W не просто запускает упрощённые аркады, а воссоздаёт их с помощью нейросетей. Система также умеет самостоятельно учиться играть в созданных симуляциях.
В основе проекта лежат две модели. Первая выступает в роли модели игрового мира: она получает текущий кадр и действие игрока, после чего предсказывает следующий кадр. Вторая нейросеть отвечает за выбор действий агента внутри этой симуляции.
Предусмотрено несколько вариантов управления. Для некоторых игр используется заранее обученный агент, а в другом режиме он учится непосредственно на одноплатном компьютере. Пользователь при этом может в любой момент перехватить управление и сыграть самостоятельно.
Как модели работают на микроконтроллере
Чтобы уложиться в ограниченные вычислительные ресурсы Raspberry Pi Pico 2 W, автор применил трансформер, который многократно использует один и тот же блок с общими весами. Основные матричные операции переведены в восьмибитный формат, что снижает требования к памяти и производительности.
Размер модели зависит от конкретной игры и составляет от 26 до 131 тысячи параметров. До запуска на устройстве нейросеть заранее обучают на игровых записях — объём обучающей выборки достигает 3 млн примеров для одной игры.
Симуляции пока не воспроизводят оригинальные аркады идеально. В моделях встречаются ошибки, которые агент может использовать в своих интересах. Например, в версии Breakout он набрал 210 очков при заявленном максимуме в 56. Разработчик исправляет такие проблемы, добавляя в обучение новые данные.
Игры в проекте намеренно упрощены: их кадры представлены сетками размером от 20 × 16 до 48 × 48 ячеек. Это позволяет запускать модели на компактном устройстве, сохраняя базовую механику аркад.
Проверить работу симуляций можно через браузерное демо, где модели запускаются с использованием WebAssembly. В интерфейсе также доступно наблюдение за тем, как агент учится играть. Исходный код проекта опубликован разработчиком на GitHub.


