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

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

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

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

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

Смысл игры:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что дальше

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

Обложка:

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

Корректор:

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

Вёрстка:

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

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