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



