Рубрики
Без рубрики

День 22: Как построить игровой бот AI, используя тренажерный зал Openai и вселенной

Автор оригинала: FreeCodeCapm Team.

Арини Джанакираман

Давайте посмотрим на это, АИ везде. А Face-Off Battle Разворачивается между Elon Musk и Марком Цукербергом на будущее АИ. Есть некоторые, которые его демонируют. И некоторые утопические взгляды утверждают, что АИ почти может быть боговым в том, чтобы помочь человечеству. Какая бы сторона твоих взглядов наклона, AI здесь, чтобы остаться.

Если вы взволнованы нырять вправо и Tinker с AI, то игры – отличное место для начала. Они были прошедшими для AI. Но прежде чем прыгать, вот немного истории о том, как игровое программирование развивалось через время.

История игрового программирования

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

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

Команда в Deepmind сделала это путем обобщения и моделирования интеллекта, чтобы решить любую игру Atari, брошенную на нее. Игра BOT использовала глубокие учебные нейронные сети, которые не имеют знаний о том, что не имеют знаний. Они бьют игру, основанные на пикселях, которые они видели на экране, и их знание игровых управлений. Однако части Deepmind все еще не открыты, поскольку Google использует его, чтобы победить конкуренцию.

Демократизация АИ

Чтобы избежать концентрирования невероятной силы AI в руках несколько, элон-мускус, основанные Openai Отказ Это стремится к демократизации АИ, сделав его доступным для всех. Сегодня мы изучим тренажерный зал Openai и недавно выпущенную вселенную, которая построена на вершине тренажерного зала.

Симпатию Openai Обеспечивает простой интерфейс для взаимодействия и управления любым

Есть тысячи сред. Они варьируются от классических игр Atari, Minecraft и Grand Theft Auto, до Симуляции белкового склада которые могут вылечить рак. Вы можете создать бот и запустить его в любой среде, используя только несколько строк кода Python. Это слишком круто, чтобы не попробовать!

Проект (1 час)

Мы собираемся построить игровой бот AI, который использует технику «Усиление обучения». Я объясню это позже. Он будет автономно играть и победить игру Atari Neon Race Car (вы можете выбрать любую игру, которую вы хотите). Мы построим эту игру BOT, используя тренажерный зал Sprageai и библиотеки вселенной.

Шаг 1: Установка

Убедитесь, что у вас установлен Python или установить его с помощью доморящего. Вы можете скачать выделенный Python IDE, как Pycharm или iPython Notebook. Мне нравится держать его простым и использовать возвышенное. Наконец, установите тренажерный зал, вселенные и другие необходимые библиотеки, используя PIP.

// Install python using brewbrew install python3// Install the required OpenAI librariespip3 install gympip3 install numpy incrementalbrew install golang libjpeg-turbo pip install universe

Все в вселенной (средах) работает как контейнеры внутри докера. Если у вас его уже нет, установите и запустите Docker от здесь Отказ

Шаг 2: код игры бота

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

import gymimport universe

Для этой игры BOT, давайте воспользуемся моим любимым детским игре, неоновые гоночные автомобили, как тестовая среда. Вы можете найти полный список других средов/игр, которые вы можете выбрать из здесь Отказ

Вселенная позволяет управлять как можно больше средств, сколько вы хотите, параллельно. Но для этого проекта мы будем использовать только один.

env = gym.make('flashgames.NeonRace-v0')env.configure(remotes=1) # creates a local docker container

Учебное обучение

Теперь мы добавляем игровую логику Bot, которая использует технику обучения подкрепления. Этот метод отмечает предыдущее состояние и вознаграждение игры (например, пиксели, которые видели на экране или на счет игры). Затем он подходит к действию для выполнения окружающей среды.

Цель состоит в том, чтобы сделать его следующее наблюдение лучше (в нашем случае – максимизировать счет игры). Это действие выбрано и выполняется агентом (игровой бот) с намерением максимизировать счет. Затем он применяется к окружающей среде. Окружающая среда записывает полученный государство и вознаграждение на основе того, было ли действие выгоднее или нет (выиграл игру?).

Теперь мы можем получить список наблюдений для каждой среды инициализированной с использованием метода env.reset ().

observation_n = env.reset()

Наблюдение здесь является средой-специфическим объектом. Он представляет собой то, что наблюдалось, например, необработанные данные пикселей на экране или статусе игры/оценки.

Следующим шагом является создание игрового агента с использованием бесконечного цикла, который непрерывно выполняет некоторые действия на основе наблюдения. В нашем боте давайте определим единственное действие неоднократно нажав стрелку вверх (глупый бот! Не стесняйтесь развивать его в сложный …). Действие здесь определяется типом события (keyEvent), клавиша управления (стрелка вверх (вверх стрелка) и настраивая его на true для всех наблюдений, что агент видит.

while True:action_n = [[('KeyEvent', 'ArrowUp', True)] for ob in observation_n]

Затем мы используем Env.Step () Метод использовать действие, чтобы двигаться вперед один раз. Это очень базовая реализация усиленного обучения.

 observation_n, reward_n, done_n, info = env.step(action_n)

Метод шага здесь возвращает четыре переменных:

  1. наблюдение_н : Наблюдения окружающей среды
  2. Reward_n : Если ваше действие было выгодно или нет: + 1/-1
  3. DONE_N : Указывает, является ли игра окончена или нет: Да/Нет
  4. Информация : Дополнительная информация, такая как производительность и задержка для целей отладки

Вы можете запустить это действие одновременно для всех сред, в которых вы тренируете свой бот. Используйте метод env.render () для запуска бота.

env.render()

Теперь у вас есть игровой бот, готов конкурировать с окружающей средой. Полный код для этого базового бота, а также расширенная версия доступна в моем GitHub Repo здесь Отказ

Шаг 3: Запустите игровой бот

Теперь для веселой части: убедитесь, что Docker работает и запустить бот. Увидеть это в действии, избиение других автомобилей или не в состоянии сделать это. Если это не удается, продолжайте настроить свой бот, чтобы заставить его бить интеллект!

python gamebot.py

Продолжайте менять с AI и в конце концов, вы можете разблокировать режим Бога! # 100Дасофкод

Если вам понравилось это, пожалуйста, хлопайте ? с О, другие могут видеть это тоже! Подпишись на меня в Твиттере @ H аринилабс или М. Эдиум. Чтобы получить последние обновления на других историях или просто сказать привет:)

PS: Подпишитесь на мою рассылку здесь быть первым, чтобы получить новый новый контент, и он наполнен дозой вдохновения из мира # Жентех И да, мужчины тоже могут подписаться!