Большой разбор: как ИИ играет в змейку
medium

Большой разбор: как ИИ играет в змейку

Современные технологии против игры прошлого века.

Помните, раньше была такая игра — змейка? Она появилась в 70-х, и в неё играли на всём: от компьютеров и приставок до кнопочных телефонов. Например, если вы пропустили то время, это могло выглядеть вот так:

Большой разбор: как ИИ играет в змейку

Смысл игры:

  1. Вы управляете змейкой, которая постоянно в движении, она может двигаться вверх, вниз, влево или вправо. На экране в случайном месте появляется клеточка — считайте, что это еда.
  2. Ваша задача — собрать как можно больше еды.
  3. Как только змейка съедает очередную клеточку с едой, в случайном месте появляется новая клетка. Также змейка удлиняется на одну клетку.
  4. Если змейка упрётся в стенку или сама в себя, то игра заканчивается.

В начале игры всё просто: поле пустое, змейка вольготно по нему ползает и жрёт. Но дальше змейка постепенно растёт, занимая всё большую площадь экрана, и в какой-то момент передвигаться становится суперсложно. И вот тогда нужна стратегия и ловкость.

Австралийский программист Эван, он же CodeBullet, научил искусственный интеллект играть в эту игру и сделал об этом видео:

Если вы знаете английский, просто смотрите и получайте удовольствие, а если нет — мы приготовили подробный разбор того, что происходит в ролике.

Начало: 5 разных алгоритмов

В самом начале Эван экспериментировал с нейросетью, чтобы найти лучший алгоритм для игры в змейку. В итоге у него получилось 5 разных алгоритмов, каждому из которых он дал своё имя. Они отличались стилем игры, поведением в разных ситуациях и результативностью.

Степан. Это одна из первых версий алгоритма, у которой есть одна характерная особенность: Стёпа любит двигаться по диагонали.

Большой разбор: как ИИ играет в змейку

Несмотря на то, что кажется, что змейка делает всё правильно, это самая худшая версия нейронки, которая получилась у программиста. При этом умение Стёпки двигаться по диагонали — уникально, оно сильно пригодится в будущем.

Лена. Она умнее Стёпы, двигается более предсказуемо, а ещё у неё классно получается избегать столкновения с собой. Это важное умение для змейки, потому что если голова упрётся в хвост или в тело — игра закончится.

Лена отлично умеет выбираться из сложных ситуаций.

Миша. Быстрая, эффективная змейка почти без единого лишнего движения. Миша почти идеален, но этого недостаточно.

Большой разбор: как ИИ играет в змейку

Коля. Умеет собирать много кусочков, но когда становится совсем длинным, то размер начинает ему мешать.

Большой разбор: как ИИ играет в змейку

Сёма. Чемпион среди этих версий, потому что только он смог набрать 136 очков — больше, чем остальные кандидаты.

Большой разбор: как ИИ играет в змейку

Собираем в одно целое

Можно было остановиться на Сёме, но Эван решил пойти дальше и подумал: «А что если объединить эти змейки в одну, чтобы вместе они работали максимально эффективно?»

Для этого программист сделал одну большую нейросеть, в которую поместил 5 змеек по такому алгоритму:

  1. Перед каждым следующим шагом каждая из пяти змеек говорит, как бы она поступила в этой ситуации.
  2. Отдельная нейросеть смотрит на варианты и выбирает лучший из них.
  3. Змейка делает шаг, и всё начинается сначала.

Смысл в том, чтобы использовать сильные стороны каждой змейки для наибольшего эффекта.

Добавляем цвета

Чтобы стороннему наблюдателю было понятно, что происходит на экране и о чём именно «думает» нейронка, Эван придумал раскрашивать змейку в разные цвета:

  • зелёный означает, что змейка нашла очередной кусочек, который можно съесть, и это стало её целью;
  • синий — змея предвидит, что скоро она будет двигаться к еде;
  • белый — рядом со змеёй нет легкодоступных кусочков, и её задача — выжить и никуда не врезаться.

Теперь мы тоже можем понимать, какие решения принимает искусственный интеллект в каждой ситуации. Самое интересное, что иногда мы даже можем понять, какая из змеек сейчас взяла управление на себя.

Например, тут явно Степан.
А вот тут Лена помогает Стёпе не врезаться в самого себя.

Появился синий цвет: это означает, что змейка видит еду и думает, как бы подобраться к ней поближе.

Даже тут виден кусочек Стёпы :-)
Новая змейка побила рекорд Сёмы, и даже с такой длиной она легко движется дальше.
Начались первые проблемы: белый цвет означает, что змейке не до еды и нужно выбираться из такой ситуации.
А вот отсюда змейка уже выбраться не сумеет, хотя путь для выхода у неё есть. Рекорд — 204 очка.

Запустим снова и проверим, получится ли побить этот рекорд:

200 очков и почти катастрофа, но змейка всё же нашла решение. Поразительно.
Набрав 228 очков, змейка внезапно врезается в свой хвост, хотя места в середине достаточно для трёх таких змеек.

Рекорд побит, и, скорее всего, не в последний раз. С каждым запуском алгоритм становится умнее, и змейка допускает всё меньше и меньше ошибок.

Что дальше

Дальше как обычно — новые большие разборы, объяснение того, как работают нейросети и как это применить на практике. Лайк, подписка, все дела.

Обложка:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
Что такое Git и как с ним работать
Что такое Git и как с ним работать

Зачем нужен контроль версий и что делать, если ваши друзья его используют

easy
Как на самом деле работает Wi-Fi
Как на самом деле работает Wi-Fi

Пособие для тех, кому нужно больше, чем пароль.

easy
Новая задача про хитрого электрика
Новая задача про хитрого электрика

На этот раз у него 49 проводов, но он справится.

hard
Кто такой фронтенд-разработчик и что он делает
Кто такой фронтенд-разработчик и что он делает

Руководство для входа в профессию

easy
Что такое канбан
Что такое канбан

Самый узнаваемый атрибут айтишных команд.

easy
Зачем на компьютере нужны разные пользователи
Зачем на компьютере нужны разные пользователи

Делаем жизнь друг друга проще

easy
Что такое форк в программировании
Что такое форк в программировании

Это когда делаешь свою версию какого-то софта

medium
Объясни мне: что такое домен и как его получить
Объясни мне: что такое домен и как его получить

Пошаговая инструкция для начинающих.

medium
Прохладная история про погодный зонд, НАСА и невнимательных менеджеров
Прохладная история про погодный зонд, НАСА и невнимательных менеджеров

Золотой фонд менеджерских косяков

easy
medium