AI, Machine Learning

Как я научил ИИ играть в Atari Space Invaders

Сегодня все говорят о гонке между искусственным и человеческим интеллектом. Но когда же Искуственный Интеллект (ИИ) полностью превзойдет человека и будет контролировать бóльшую часть нашей повседневной жизни? Пока люди проводят дни в школе и университетах, что делает ИИ, чтобы вырваться в этой гонке вперёд?

В обучении ИИ есть техника под названием Reinforcement Learning (RL, или обучение с подкреплением). Она помогает искусственному интеллекту обучать самого себя выполнению определенной задачи. Я использовал RL, чтобы научить ИИ играть в Atari Space Invaders.

Ниже я рассмотрю концепции, связанные с созданием агента RL. Я также добавлю свой код, если вы захотите увидеть реализацию на Python.

В статье я буду использовать следующие термины:

  • Агент — ИИ-игрок. В моём случае — стрелок, атакующий пришельцев.
  • Окружающая среда — полное окружение агента (т. е. барьеры перед ним и инопланетяне выше).
  • Действие — то, что агент может делать (двигаться влево, двигаться вправо, стрелять, ничего не делать).
  • Ход — выбор и выполнение одного действия.
  • Состояние — текущее положение ИИ.

Итак, как работает Reinforcement Learning?

Обучение с подкреплением может быть использовано для обучения ИИ, но как оно работает? В RL искусственный интеллект тренируется по системе поощрений.

Вспомните начальную школу. Каждый раз, когда вы делаете что-то правильно, учитель даёт вам печенье или наклейку. Это побуждает вас стараться делать правильно, потому что вы хотите больше поощрений. Агент учится похожим образом. Если ИИ будет делать всё правильно, он получит некое абстрактное вознаграждение, если же он поступает неправильно — вознаграждение сразу теряется.

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

Как ИИ может понять окружающую среду?

Сделаем шаг назад. Как наш ИИ может распознать, что к нему приближается пуля, или вообще узнать, что такое пуля? Это возможно реализовать с помощью свёрточной нейронной сети (Convolutional Neural Networks, или CNN).

Искусственный Интеллект 
Машинное Обучение

Нейронные сети (NN) в целом моделируются по образу человеческого мозга. И если в мозге информация передаётся между нейронами, то в NN есть «узлы», которые обрабатывают информацию и выполняют операции. В стандартной NN существует три основных типа слоёв: входной слой, скрытый слой и выходной слой. Входной слой принимает информацию, затем она обрабатывается скрытыми слоями и, наконец, передаётся в выходной слой.

Искусственный Интеллект 
Машинное Обучение

CNN — это особый тип нейронной сети, предназначенный для анализа визуальных образов. Она содержит свёрточные слои, которые принимают изображения в качестве входных данных и просматривают их пиксель за пикселем.

Теперь наш ИИ уже может сказать, что находится вокруг него.

Искусственный Интеллект 
Машинное Обучение

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

Теперь искусственному интеллекту гораздо легче увидеть, с какой скоростью пули летят в его сторону, и что они вообще летят.

Искусственный Интеллект 
Машинное Обучение

Научиться играть с Q-Learning

На данный момент мы поощряем ИИ за стрельбу по инопланетянам. Искусственный интеллект знает, как интерпретировать окружающую среду, но есть ещё один фундаментальный компонент, которого нам не хватает. Откуда ИИ знает, что делать в каждой конкретной ситуации?

Для нас с вами всё предельно просто: нужно стрелять в пришельцев и уворачиваться от пуль. Но как мы это узнали? Из накопленного опыта нам известно: скорее всего, чтобы выиграть игру, придётся убить всех врагов. Проблема в том, что у ИИ нет накопленного опыта.

Так что лучший способ понять, что делать, — это, собственно, сыграть в игру.

Но было бы неплохо запоминать, как поступать хорошо, а как — плохо. Для этого ИИ создает Q-таблицу.

Искусственный Интеллект 
Машинное Обучение

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

Эту таблицу ИИ заполняет с помощью уравнения Беллмана.

Искусственный Интеллект 
Машинное Обучение

Важная для нас часть уравнения находится под знаком суммы (∑). Когда значение ∑ высоко, ИИ будет выбирать свое следующее действие случайным образом: у него нет никаких знаний, на которых можно основывать свои действия. Когда ИИ непреднамеренно получает награды или штрафы, он начинает отмечать выполнение определенных действий в определенных состояниях как хорошее или плохое. Таким образом он заполняет Q-таблицу. По мере того как тренировка продолжается, значение ∑ медленно уменьшается, а значит ИИ всё с большей долей вероятности принимает решения, основываясь на Q-таблице, а не случайным образом. К тому времени, когда ∑ приблизится к нулю, у ИИ в распоряжении уже будет заполненная Q-таблица.

Давайте посмотрим на мой результат

Итак, я разработал свой собственный ИИ для игры в Space Invaders. Ссылка на мой код здесь.

Читайте в блоге: 10 лучших проектов по Машинному Обучению

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

Ключевые моменты

Reinforcement Learning (RL, или обучение с подкреплением) — это система, в которой ИИ вознаграждается за правильные решения. Так он понимает, что можно и чего нельзя делать.

Convolutional Neural Networks (CNN, или свёрточные нейронные сети) — это особый тип нейронных сетей, которые могут распознавать изображения с помощью свёрточных слоев.

Q-learning (Q-обучение) — метод обучения искусственного интеллекта, при котором ИИ играет в игру и записывает в Q-таблицу, какие действия позволяют получить или не получить награды.

перевод: Наталья Астафьева

Оригинал cтатьи: How I trained an AI to Play Atari Space Invaders

Курс по нейронным сетям и deep learning

Курс по Machine Learning

Специализация Data Science

Поделиться: