Введение
Обучение с подкреплением – это ветвь искусственного интеллекта, которая фокусируется на обучении агентов принятию решений путем выполнения определенных действий в среде, чтобы максимизировать сигнал вознаграждения. Это подход к обучению методом проб и ошибок, когда агент выполняет действия и получает отзывы в виде вознаграждений или штрафов, которые он использует для обновления своей стратегии и улучшения его принятие решений.
В этой статье мы расскажем об основах обучения с подкреплением и о том, как создать простого игрового агента с искусственным интеллектом с помощью Python. Агент научится играть в игру, выполняя действия в зависимости от состояния игры и получая вознаграждение. для каждого действия. Мы будем использовать библиотеку OpenAI Gym, которая предоставляет простой интерфейс для создания и тестирования сред обучения с подкреплением.
Давайте начнем с понимания фундаментальных концепций обучения с подкреплением.
Терминология
- Агент. Объект, который выполняет действия и учится в окружающей среде.
- Среда. Мир, в котором работает агент.
- Состояние. Текущее состояние среды, которое агент использует для принятия решения о своем следующем действии.
- Действие. Выбор агентом того, что делать в данном состоянии.
- Награда: обратная связь от среды, показывающая, насколько хорошо работает агент.
- Политика: сопоставление состояний с действиями, определяющее стратегию агента.
- Функция ценности. Предсказание будущих вознаграждений, которые агент может ожидать от заданного состояния или пары состояние-действие.
Постановка задачи обучения с подкреплением
Задачу обучения с подкреплением можно формализовать как Марковский процесс принятия решений (MDP). MDP определяется как кортеж (S, A, P, R, γ), где:
- S — множество состояний.
- А - набор действий.
- P — функция перехода состояния, которая определяет вероятность перехода из одного состояния в другое при выполнении действия.
- R — функция вознаграждения, определяющая вознаграждение, получаемое агентом после совершения действия в заданном состоянии.
- γ (гамма) — коэффициент дисконтирования, определяющий важность будущих вознаграждений. Это значение от 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.