Обучение с подкреплением (reinforcement learning, RL) — это подход, в котором агент взаимодействует со средой, получает сигнал вознаграждения и учится выбирать действия так, чтобы максимизировать накопленное вознаграждение, называемое return. В каноническом определении Sutton и Barto это обучение по взаимодействию: агент строит отображение из ситуаций в действия, ориентируясь на скалярный сигнал reward.
Английский термин: reinforcement learning. Сокращение: RL. Внутри темы постоянно встречаются термины agent (агент), environment (среда), state (состояние), observation (наблюдение), policy (политика), value function, Q-function и advantage function.
Простыми словами
Грубо говоря, RL можно представить как обучение на серии попыток. Агент что-то делает, среда отвечает новым наблюдением и числовым сигналом, а затем агент постепенно смещает поведение в сторону действий, которые чаще приводят к лучшему общему результату.
Важно, что среда не обязана объяснять агенту всю картину. В одних задачах агент видит полное состояние мира, а в других — только частичное наблюдение, и это нормальный случай для RL.
Как работает обучение с подкреплением
Базовый цикл в документации Spinning Up и в книге Sutton & Barto описывается одинаково: агент наблюдает ситуацию, выбирает действие, среда меняется и возвращает сигнал качества этого шага. Цель — не просто получить награду прямо сейчас, а максимизировать суммарное вознаграждение по траектории, то есть return.
Схема цикла RL 1) Среда находится в состоянии s_t 2) Агент получает observation o_t 3) Политика π(a|o_t или s_t) выбирает действие a_t 4) Среда выполняет переход 5) Среда возвращает: - новое observation - reward r_t - terminated - truncated - info 6) Агент обновляет policy и/или value estimates 7) Цикл повторяется до конца эпизода или усечения
Здесь полезно не путать state и observation. В терминологии Spinning Up состояние — это полное описание мира, а наблюдение может быть только его частью. Поэтому частично наблюдаемые задачи в RL — обычное явление, а не исключение.
Policy отображает состояние или наблюдение в действие. В глубоком RL, как отмечает Spinning Up, политики часто параметризуются и могут быть стохастическими: для одного и того же наблюдения агент выбирает действия по вероятностному правилу, а не по жёсткой таблице.
Value function оценивает ожидаемый return. Q-function оценивает ценность конкретного действия в конкретной ситуации, а advantage function показывает, насколько выбранное действие лучше базового ожидания. Эти величины связываются уравнениями Беллмана.
Редакционная оговорка: ниже приведены практические примеры и названия полей API по состоянию на 2026-08-16. Для Gymnasium, PettingZoo, Stable-Baselines3 и RLlib всегда сверяйте документацию с версией установленного пакета: у этих проектов есть версионируемые API и отдельные страницы релизов.
Где применяется
- Одиночные среды и симуляторы. Gymnasium документирует стандартный интерфейс среды с
reset()иstep(), через который алгоритм многократно собирает опыт. - Практические эксперименты с готовыми реализациями. Stable-Baselines3 предоставляет надёжные реализации RL-алгоритмов на PyTorch, когда вы хотите проверить базовую постановку без реализации всего стека с нуля.
- Распределённое обучение. RLlib описывает сущности
Algorithm,AlgorithmConfig,EnvRunnerиLearner, которые нужны для масштабирования сбора данных и обучения. - Мультиагентные сценарии. PettingZoo — библиотека для multi-agent reinforcement learning с AEC и parallel API, когда в среде действует не один агент, а несколько.
Если вы хотите развести базовые семейства методов, полезно отдельно посмотреть машинное обучение (ML), обучение с учителем, обучение без учителя, глубокое обучение (Deep Learning) и инструкционное обучение (Instruction Tuning).
Практический пример
Ниже — минимальный сценарий взаимодействия с одиночной средой через API Gymnasium. Он не обучает агента, а показывает сам цикл RL и важное разделение terminated и truncated, которое в API v0.26 заменило прежний флаг done.
import gymnasium as gym
env = gym.make("your_env_id") # подставьте идентификатор совместимой среды
observation, info = env.reset(seed=42)
finished = False
while not finished:
action = env.action_space.sample() # здесь у обученного агента была бы policy
observation, reward, terminated, truncated, info = env.step(action)
# В реальном RL-цикле агент сохраняет переход
# и обновляет policy / value estimates
finished = terminated or truncated
env.close()
Что в этом примере важно на практике:
reset(seed=42)инициализирует состояние среды и при необходимости задаёт сид.step()возвращает новое наблюдение, награду и два разных флага завершения.terminatedозначает терминальное состояние задачи, аtruncated— внешнее усечение эпизода, например по лимиту шага.- Алгоритм RL обычно накапливает такие переходы и меняет политику так, чтобы ожидаемый return рос.
Практический вывод: если вы переносите старый код на новые версии Gymnasium, нельзя механически ориентироваться только на done; нужно явно различать terminated и truncated.
Чем отличается от близких терминов
| Термин | Что означает | Чем отличается от RL |
|---|---|---|
| Reward | Числовой сигнал, который среда возвращает на шаге | RL — это весь процесс обучения по взаимодействию; reward — только один элемент этого процесса. |
| Return | Накопленное вознаграждение по траектории или эпизоду | Агент обычно оптимизирует именно return, а не обязательно мгновенный reward на каждом шаге. |
| State и observation | State — полное описание мира, observation — то, что агент реально видит | RL не требует, чтобы агент всегда имел полный доступ к миру; частичная наблюдаемость — обычный случай. |
| Policy и value function | Policy выбирает действие; value function оценивает ожидаемый return | В RL можно учить выбор действия напрямую, оценку отдельно или оба компонента вместе. |
Это различие не формальность. Большая часть путаницы вокруг RL появляется именно тогда, когда reward смешивают с return, а observation — со state.
Ограничения и заблуждения
- Заблуждение: «RL максимизирует награду на каждом шаге». По базовому определению цель — максимизировать cumulative reward, то есть return. Действие, которое выглядит выгодным прямо сейчас, может ухудшать итоговую траекторию.
- Заблуждение: «агент всегда видит полное состояние». Spinning Up отдельно различает state и observation; частично наблюдаемые задачи в RL распространены.
- Заблуждение: «достаточно подключить библиотеку, и всё заработает одинаково». На практике семантика API зависит от версии. В Gymnasium важны
terminatedиtruncated, а в распределённых системах вроде RLlib добавляется отдельная операционная сложность. - Ограничение: мультиагентный RL — отдельный слой сложности. PettingZoo вводит AEC и parallel API. По документации проекта Linux и macOS поддерживаются, а Windows не поддерживается официально.
- Ограничение: готовые реализации не заменяют понимание терминов. Stable-Baselines3 даёт надёжные реализации, но сам проект полезен в первую очередь тем, кто уже понимает базовые сущности RL и следит за совместимостью Python и версии пакета.
Практический вердикт: если вам нужно быстро понять термин, держите в голове четыре опоры: агент, среда, политика и return. Если вы уже пишете код, следующая обязательная проверка — версии Gymnasium, PettingZoo, Stable-Baselines3 и RLlib, потому что детали API и совместимости меняются по релизам.
Связанные термины и инструменты
- Машинное обучение (ML)
- Обучение с учителем
- Обучение без учителя
- Глубокое обучение (Deep Learning)
- Инструкционное обучение (Instruction Tuning)
По состоянию на 2026-08-16 полезно учитывать текущие условия инструментов: в репозитории Stable-Baselines3 указан релиз v2.8.0 от 2026-04-01 и требование Python 3.10+; в release notes PettingZoo указан 1.26.1 от 2026-04-27, а версия 1.26.0 добавила поддержку Python 3.13 и 3.14; на странице релизов Ray указан 2.55.1 от 2026-04-22. Это ориентир для совместимости, но не замена проверке вашей локальной среды.
Источники
- Releases · Farama-Foundation/Gymnasium
- Farama-Foundation/PettingZoo: Modern, light-weight, multi-agent reinforcement learning
- Changelog — Stable-Baselines3 documentation
- RLlib environments — Ray documentation
- Part 1: Key Concepts in RL — Spinning Up documentation
- Reinforcement Learning: An Introduction (draft PDF)
- Env — Gymnasium 0.28.1 documentation
- Release notes — PettingZoo documentation
- DLR-RM/stable-baselines3: Reliable Reinforcement Learning Library
- Key concepts — Ray documentation
- Releases · ray-project/ray
Вопросы и ответы
Что такое обучение с подкреплением простыми словами?
Это обучение через взаимодействие со средой. Агент делает действие, получает наблюдение и числовой сигнал вознаграждения, а затем меняет поведение так, чтобы суммарный результат, то есть return, становился лучше.
Чем reward отличается от return?
Reward — это сигнал на отдельном шаге. Return — накопленное вознаграждение по траектории или эпизоду. В базовом определении RL цель формулируется через максимизацию именно cumulative reward, то есть return.
Что означают terminated и truncated в Gymnasium?
Согласно документации Gymnasium, step() возвращает оба флага отдельно. terminated указывает на терминальное состояние задачи, а truncated — на внешнее усечение эпизода, например из-за лимита по шагам.
Можно ли начать практику RL со Stable-Baselines3?
Да, если вам нужна готовая PyTorch-реализация базовых алгоритмов. Но библиотека не отменяет необходимости понимать policy, value function, reward и return; по данным репозитория проект требует Python 3.10+.
Подходит ли PettingZoo для Windows?
По release notes проекта Linux и macOS поддерживаются, а Windows официально не поддерживается. Если вы планируете мультиагентные эксперименты, это ограничение лучше проверить до настройки окружения.