Reinforcement Learning
Обучение с подкреплением (RL) обучает агента методом проб и ошибок максимизировать долгосрочное вознаграждение. Рассматриваются цикл RL, Q-learning, семейства алгоритмов и сферы применения.
Обучение с подкреплением (RL) — это раздел машинного обучения (ML), в котором агент учится принимать последовательность решений, пробуя действия в среде и получая награды или штрафы. Цель — со временем набрать как можно больше наград. Никто не подсказывает агенту, какое действие правильное. Он сам выясняет, какие действия приносят пользу, в том числе если результат проявляется через много шагов, например выигрыш материала в шахматах через десять ходов. Поэтому RL — стандартный подход к задачам последовательного управления: игре, управлению роботами и обучению больших языковых моделей (LLMs), чтобы они выдавали предпочтительные людям ответы или ответы, которые можно проверить программно. Ричард Саттон и Эндрю Барто, чей учебник заложил основы современной области, получили премию ACM A.M. Turing Award 2024 года за фундаментальный вклад в обучение с подкреплением.
Как работает обучение с подкреплением#
Задачи RL формализуют как марковские процессы принятия решений (MDP). На каждом шаге агент наблюдает текущее состояние, выбирает действие из своего пространства действий и получает награду вместе со следующим состоянием. Его цель — максимизировать возврат, то есть сумму будущих наград. Коэффициент дисконтирования от 0 до 1 снижает вес отдалённых наград по сравнению с немедленными. Награда — единственное описание задачи, доступное агенту, поэтому небрежно заданная награда может привести к взлому функции вознаграждения: агент получает высокие оценки, не выполняя намерение разработчика.
- Агент: Обучаемая система, принимающая решения, например контроллер робота или программа для игры.
- Среда: Всё, с чем взаимодействует агент: от физического симулятора до настоящего складского помещения.
- Состояние: Информация, на основе которой агент действует, например углы сочленений, положение фигур на доске или признаки, извлечённые из кадра камеры.
- Действие: Доступный агенту вариант выбора: дискретный (налево или направо) или непрерывный (угол поворота руля).
- Награда: Число, которое среда возвращает после каждого действия: положительное за продвижение к цели, отрицательное за ошибки или потраченное впустую время.
- Политика: Правило, по которому агент выбирает действие в каждом состоянии; именно его и улучшает обучение.
- Функция ценности: Ожидаемый возврат из состояния или при выполнении определённого действия в состоянии. Она помогает агенту оценивать действия с учётом их долгосрочных последствий.
Поскольку агент узнаёт только о действиях, которые пробует, ему нужно балансировать между исследованием — выбором действий с неопределённой ценностью — и использованием известных возможностей — выбором действия, которое сейчас кажется лучшим. Распространённое правило — epsilon-greedy: с небольшой вероятностью действовать случайно, а в остальных случаях выбирать жадно. В этом примере на NumPy используется Q-learning — классический алгоритм, который учится оценивать каждую пару «состояние — действие», — чтобы научить агента пройти по коридору из шести клеток к награде в дальнем конце:
import numpy as np
rng = np.random.default_rng(0)
# Коридор из 6 клеток: начало в клетке 0, награда +1 за достижение клетки 5; действия: 0 = влево, 1 = вправо
n_states, goal = 6, 5
Q = np.zeros((n_states, 2)) # Оценка возврата для каждой пары (состояние, действие)
alpha, gamma, epsilon = 0.5, 0.9, 0.2 # Скорость обучения, коэффициент дисконтирования, коэффициент исследования
for episode in range(200):
state = 0
while state != goal:
# Исследовать с вероятностью epsilon, иначе использовать лучшее известное действие
action = rng.integers(2) if rng.random() < epsilon else Q[state].argmax()
next_state = max(0, state - 1) if action == 0 else state + 1
reward = 1.0 if next_state == goal else 0.0
# Обновление Q-learning: двигаться в сторону награды плюс дисконтированная наилучшая ценность следующего состояния
Q[state, action] += alpha * (reward + gamma * Q[next_state].max() - Q[state, action])
state = next_state
print("Greedy policy:", ["left" if a == 0 else "right" for a in Q[:goal].argmax(axis=1)])
print("Value of moving right:", Q[:goal, 1].round(2))Выводится политика right для каждой клетки и значения [0.66 0.73 0.81 0.9 1. ]. Награда выдавалась только в последней клетке, однако обновление распространило её назад, и каждый шаг дальше от цели стоит в 0.9 раза меньше следующего — именно так работает коэффициент дисконтирования.
Семейства алгоритмов RL#
Табличные методы, подобные описанному выше, хранят значение для каждого состояния, но перестают работать, когда состояния представлены изображениями с камеры или непрерывными углами суставов. Глубокое обучение с подкреплением заменяет таблицу на нейронную сеть, которая обобщает знания на похожие состояния; основные семейства алгоритмов различаются тем, чему учится эта сеть:
Агенты без модели учатся исключительно на реальном или симулированном опыте, тогда как агенты с моделью изучают модель мира, которая предсказывает реакцию среды, а затем планируют с её помощью, как в предиктивном управлении или поиске по дереву методом Монте-Карло. Проксимальная оптимизация политики (PPO), ограничивающая допустимое изменение политики при каждом обновлении, стала стандартным методом градиента политики в робототехнике и при обучении языковых моделей, а групповая оптимизация относительной политики (GRPO) адаптировала этот метод для рассуждений LLM, отказавшись от обучаемого критика. В Spinning Up от OpenAI эти алгоритмы разбираются на примере эталонных реализаций.
Примеры применения в реальных условиях#
- Игры: AlphaGo от DeepMind объединила глубокие нейронные сети с поиском по дереву и самообучением с подкреплением, чтобы в марте 2016 года победить чемпиона по го Ли Седоля со счётом 4:1.
- Робототехника: Контроллеры передвижения четвероногих и гуманоидных роботов обучают с помощью RL на тысячах параллельно симулируемых роботов. Часто используют рандомизацию трения, массы и рельефа, чтобы политика переносилась на реальное оборудование.
- Выравнивание языковых моделей: Чат-ассистентов дообучают с помощью RL на основе модели вознаграждения, обученной на сравнении предпочтений людей, а модели рассуждений обучают с помощью RL на автоматических проверяющих системах, которые проверяют ответы по математике или запускают модульные тесты.
- Рекомендательные системы: Если рассматривать последовательность рекомендаций как цепочку решений, система может оптимизировать долгосрочную вовлечённость, а не следующий клик.
Симуляция — основная среда для обучения политик роботов, поскольку агенту могут потребоваться миллионы попыток, а реальное оборудование ломается. Такие фреймворки, как NVIDIA Isaac Lab, запускают тысячи сред на одном GPU, а рандомизация домена сокращает разрыв между симулированной и реальной физикой. Системы RL на основе камер обычно используют выход модели восприятия, а не необработанные пиксели: Ultralytics YOLO26, работающая на роботе через интеграцию с ROS, передаёт классы объектов в каждом кадре камеры, а при наличии камеры глубины — и расстояние до каждого объекта, в виде лёгких сообщений, которые политика может использовать как состояние.
Обучение с подкреплением и смежные подходы#
- Обучение с учителем: Для каждого обучающего примера известен правильный ответ. Агент RL получает только скалярную награду, часто с задержкой, а его собственные действия определяют, какие данные он увидит дальше.
- Обучение без учителя: Модель обнаруживает структуру, например кластеры, в неразмеченных данных; при этом ей не нужно предпринимать действия и максимизировать награду.
- Марковский процесс принятия решений: MDP задаёт формулировку задачи, а RL — семейство методов, которые решают её на основе опыта, не получая вероятности переходов.
- Обучение через имитацию: Агент копирует демонстрации эксперта и не может легко превзойти учителя, тогда как RL может обнаружить стратегии, которые не показывал ни один демонстратор. Эти подходы часто объединяют: сначала AlphaGo училась на 30 миллионах позиций из партий людей, а затем совершенствовалась в самообучении; её преемница AlphaGo Zero полностью отказалась от человеческих данных и победила ту версию AlphaGo со счётом 100:0.










