Введение

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

В этой статье мы расскажем об основах обучения с подкреплением и о том, как создать простого игрового агента с искусственным интеллектом с помощью Python. Агент научится играть в игру, выполняя действия в зависимости от состояния игры и получая вознаграждение. для каждого действия. Мы будем использовать библиотеку OpenAI Gym, которая предоставляет простой интерфейс для создания и тестирования сред обучения с подкреплением.

Давайте начнем с понимания фундаментальных концепций обучения с подкреплением.

Терминология

  • Агент. Объект, который выполняет действия и учится в окружающей среде.
  • Среда. Мир, в котором работает агент.
  • Состояние. Текущее состояние среды, которое агент использует для принятия решения о своем следующем действии.
  • Действие. Выбор агентом того, что делать в данном состоянии.
  • Награда: обратная связь от среды, показывающая, насколько хорошо работает агент.
  • Политика: сопоставление состояний с действиями, определяющее стратегию агента.
  • Функция ценности. Предсказание будущих вознаграждений, которые агент может ожидать от заданного состояния или пары состояние-действие.

Постановка задачи обучения с подкреплением

Задачу обучения с подкреплением можно формализовать как Марковский процесс принятия решений (MDP). MDP определяется как кортеж (S, A, P, R, γ), где:

  1. S — множество состояний.
  2. А - набор действий.
  3. P — функция перехода состояния, которая определяет вероятность перехода из одного состояния в другое при выполнении действия.
  4. R — функция вознаграждения, определяющая вознаграждение, получаемое агентом после совершения действия в заданном состоянии.
  5. γ (гамма) — коэффициент дисконтирования, определяющий важность будущих вознаграждений. Это значение от 0 до 1, где 0 означает, что важны только немедленные награды, а 1 означает, что все будущие награды одинаково важны.

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

Создание агента игрового ИИ с использованием Python

В этом разделе мы создадим игровой ИИ-агент с использованием Python, который учится играть в игру с помощью обучения с подкреплением. Мы будем использовать библиотеку OpenAI Gym, которая предоставляет простой интерфейс для создания и тестирования сред обучения с подкреплением.

Шаг 1: Установите OpenAI Gym

Чтобы установить OpenAI Gym, выполните в терминале следующую команду:

pip install gym

Шаг 2: Создайте игровую среду

Мы будем использовать среду CartPole от OpenAI Gym, которая является классическим примером задачи обучения с подкреплением. В этой среде агент управляет шестом, прикрепленным к тележке, которая движется влево и вправо. Задача агента — как можно дольше удерживать шест в равновесии.

import gym

env = gym.make("CartPole-v0")

Шаг 3: Реализуйте случайную политику

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

import random

state = env.reset()
done = False
while not done:
    action = env.action_space.sample()
    next_state, reward, done, info = env.step(action)
    state = next_state
    env.render()

Шаг 4: Реализуйте алгоритм обучения с подкреплением

Мы будем использовать Q-Learning, популярный алгоритм обучения с подкреплением, чтобы научить нашего агента играть в игру. Q-Learning — это алгоритм без моделей, который оценивает функцию значения состояния-действия Q(s, a) для каждой пары состояние-действие (s, a). Функция ценности состояния-действия представляет собой ожидаемое кумулятивное вознаграждение, которое агент может ожидать получить, предприняв действие a в состоянии s и следуя его политике π после этого.

import numpy as np

Q = np.zeros((env.observation_space.n, env.action_space.n))
alpha = 0.1
gamma = 0.99
num_episodes = 1000

for episode in range(num_episodes):
    state = env.reset()
    done = False
    while not done:
        action = np.argmax(Q[state, :] + np.random.randn(1, env.action_space.n) * (1.0 / (episode + 1)))
        next_state, reward, done, info = env.step(action)
        Q[state, action] = (1 - alpha) * Q[state, action] + alpha * (reward + gamma * np.max(Q[next_state, :]))
        state = next_state

Шаг 5: протестируйте обученный агент

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

total_rewards = 0
for episode in range(100):
    state = env.reset()
    done = False
    while not done:
        action = np.argmax(Q[state, :])
        next_state, reward, done, info = env.step(action)
        total_rewards += reward
        state = next_state

average_reward = total_rewards / 100
print("Average reward:", average_reward)

Заключение

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

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

Больше контента на PlainEnglish.io.

Подпишитесь на нашу бесплатную еженедельную рассылку. Подпишитесь на нас в Twitter, LinkedIn, YouTube и Discord. Повысьте узнаваемость своего технологического стартапа с помощью Circuit.