Разработчик под никнеймом SheepSeb поделился проектом, в котором две компактные нейросети воссоздают простые игры на Raspberry Pi Pico 2 W и сами учатся в них играть.

Первая нейросеть служит моделью мира. Она получает текущий кадр, действия игрока и предсказывает следующий кадр. Вторая нейросеть отвечает за выбор действий внутри сгенерированной симуляции. Есть и заранее обученный агент для прохождения игр, и режим, в котором агент сам учится играть прямо на одноплатнике. При необходимости пользователь может перехватить управление агентом.

Для экономии ресурсов автор проекта использовал трансформер, который несколько раз применяет один блок с общими весами. Основные матричные вычисления при этом перевели в восьмибитный формат. В зависимости от игры модель содержит от 26 до 131 тыс. параметров. Обучают её заранее на игровых записях — до 3 млн примеров на игру.

Примечательно, что в симуляциях игр есть ошибки, которыми агент может пользоваться. Например, в Breakout агент набрал 210 очков при максимуме в 56. Эти ошибки автор исправляет с помощью обучения на дополнительных данных.

Сами игры сильно упрощены: кадры состоят из сеток размером от 20 × 16 до 48 × 48 ячеек. Протестировать симуляции можно в браузерном демо. Оно запускает модели с помощью WebAssembly. Можно следить за тем, как модель обучается играть. Код проекта опубликован на GitHub.
Источник: habr.com