Deep Reinforcement Learning
Глубокое обучение с подкреплением (DRL) использует нейросети для обучения политик и функций ценности на основе исходных данных, например пикселей. Разбираем DQN, PPO, результаты и ограничения.
Глубокое обучение с подкреплением (DRL) объединяет обучение с подкреплением (RL), в котором агент методом проб и ошибок учится максимизировать вознаграждение, с глубокими нейронными сетями, представляющими усвоенные агентом знания. В классическом RL для каждого состояния хранится значение в таблице, что невозможно, если состояние — это изображение с камеры или непрерывные углы суставов робота. Вместо этого нейронная сеть преобразует исходные наблюдения высокой размерности, например пиксели, сканы лидара или текст, в значения или вероятности действий и обобщает результат на ранее не встречавшиеся состояния. В 2015 году DQN от DeepMind прославил этот подход, научившись играть в 49 игр Atari 2600, используя только пиксели экрана и счет в игре. Для этого применялись одна архитектура сети и один набор гиперпараметров, а уровень игры был сопоставим с уровнем профессионального тестировщика игр.
Как работает глубокое обучение с подкреплением#
Агент по-прежнему следует циклу RL, основанному на марковском процессе принятия решений: наблюдает за состоянием, действует, получает вознаграждение и обновляет параметры. Меняется то, что теперь сеть с миллионами параметров содержит одно или несколько из следующих компонентов:
- Функция ценности: Сеть предсказывает ожидаемую отдачу для каждого действия, и агент выбирает действие с наибольшей отдачей. На вход сети DQN поступали последние четыре кадра игры, уменьшенные до 84×84 пикселей, чтобы она могла распознавать движение.
- Политика: Сеть выдает вероятность для каждого действия либо среднее значение и разброс для непрерывного действия, например угла поворота руля. Методы градиента политики напрямую корректируют ее в сторону действий, обеспечивших высокую отдачу.
- Актор и критик: Сеть актора выбирает действия, а сеть критика оценивает их ценность и сообщает актору, насколько каждое действие оказалось лучше ожидаемого. Это снижает шум при обновлении параметров.
- Модель мира: Агент на основе модели, например Dreamer, обучает сеть предсказывать будущие наблюдения и вознаграждения, а затем учит политику внутри созданного симулятора.
Обучение сети на данных, которые агент сам генерирует, нестабильно: соседние кадры сильно коррелируют, а целевые значения меняются вслед за изменениями сети. DQN решил эту проблему с помощью двух идей, которые сохранили последующие алгоритмы: буфера воспроизведения опыта, из которого для обучения случайным образом выбираются мини-пакеты прошлых переходов, и отдельной целевой сети, обновляемой только через заданные промежутки времени:
Градиенты политики в коде#
Методы градиента политики полностью обходятся без таблиц значений: они выбирают действия по выходам сети, а затем увеличивают вероятность действий, за которыми последовала высокая отдача. В этом примере на PyTorch небольшая сеть политики обучается по алгоритму REINFORCE — исходному алгоритму градиента политики — удерживать шест на движущейся тележке в среде CartPole из Gymnasium:
import gymnasium as gym
import torch
from torch import nn
torch.manual_seed(0)
env = gym.make("CartPole-v1")
policy = nn.Sequential(nn.Linear(4, 64), nn.ReLU(), nn.Linear(64, 2)) # cart and pole state -> logits for left/right
optimizer = torch.optim.Adam(policy.parameters(), lr=0.02)
lengths = []
for episode in range(500):
obs, _ = env.reset(seed=episode)
log_probs, rewards, done = [], [], False
while not done: # play one episode with the current policy, earning +1 per step the pole stays up
dist = torch.distributions.Categorical(logits=policy(torch.as_tensor(obs)))
action = dist.sample()
obs, reward, terminated, truncated, _ = env.step(action.item())
log_probs.append(dist.log_prob(action))
rewards.append(reward)
done = terminated or truncated
# REINFORCE: raise the log-probability of actions followed by above-average discounted return
returns = torch.tensor([sum(0.99**k * r for k, r in enumerate(rewards[t:])) for t in range(len(rewards))])
loss = -(torch.stack(log_probs) * (returns - returns.mean()) / (returns.std() + 1e-8)).sum()
optimizer.zero_grad()
loss.backward()
optimizer.step()
lengths.append(len(rewards))
print(f"Average episode length: first 20 = {sum(lengths[:20]) / 20:.0f}, last 20 = {sum(lengths[-20:]) / 20:.0f}")Код выводит first 20 = 14, last 20 = 500: необученная сеть роняет шест примерно через 14 шагов, а после 500 эпизодов удерживает его до предела в 500 шагов на протяжении каждого эпизода. При других случайных начальных значениях тот же скрипт может застрять или потерпеть неудачу на полпути обучения. Снизить такую высокую дисперсию помогают критики и ограниченные обновления в методе проксимальной оптимизации политики (PPO). Библиотеки, такие как Stable-Baselines3, предоставляют проверенные реализации PPO, DQN и мягкого актора-критика (SAC).
Знаковые примеры применения#
- Игры: После Atari агенты глубокого обучения с подкреплением победили чемпионов мира по го с помощью AlphaGo и достигли уровня гроссмейстера в StarCraft II с помощью AlphaStar, сочетая обучение на человеческих партиях с самообучением методом RL.
- Гонки дронов: Дрон Swift, созданный в Цюрихском университете и обученный с помощью глубокого RL в симуляции с последующей донастройкой на данных реальных полетов, в 2023 году выиграл несколько очных гонок у каждого из трех пилотов-чемпионов и установил рекордное время прохождения трассы.
- Термоядерная энергетика: DeepMind и Швейцарский центр физики плазмы EPFL использовали политику глубокого RL для управления магнитными катушками токамака. Она сформировала несколько конфигураций плазмы, в том числе одновременно создала две отдельные «капли» плазмы.
- Робототехника: Шагающие роботы учатся передвигаться по пересеченной местности с помощью политик, обученных на тысячах симулируемых роботов. Трение и массу случайным образом меняют, чтобы политика сохраняла работоспособность при переносе на реальное оборудование.
- Языковые модели: Дообучение политик Transformer с помощью RL на основе предпочтений или автоматически проверяемых вознаграждений привело к созданию современных чат-ассистентов и моделей рассуждений.
Восприятие как наблюдение#
DQN пришлось учиться распознавать объекты только по вознаграждению, получая на каждом шаге 84×84×4 = 28,224 значения пикселей. Во многих робототехнических системах и системах управления автомобилями политика вместо этого получает выход предварительно обученной модели сверточной нейронной сети компьютерного зрения. Это уменьшает размер наблюдения и позволяет алгоритму RL тратить выборки на принятие решений. Ultralytics YOLO26 в режиме отслеживания преобразует каждый кадр камеры в класс, рамку и постоянный идентификатор для каждого объекта — состояние, ориентированное на объекты, по которому политика также может отслеживать движение каждого объекта между кадрами.
Сложности#
Глубокое RL требует много данных: DQN обучали на 50 миллионах кадров для каждой игры — примерно 38 дней игрового времени. Поэтому большинство робототехнических политик обучают в симуляции, а затем переносят на реальные устройства. Физика в симуляции никогда не совпадает с реальностью в точности, поэтому инженеры рандомизируют трение, массы, освещение и текстуры с помощью рандомизации предметной области и добавляют синтетические данные для редких условий. На результаты также влияют случайные начальные значения, гиперпараметры и детали реализации — проблему воспроизводимости описывает работа Deep Reinforcement Learning That Matters. Сильный оптимизатор также находит лазейки в любом несовершенном вознаграждении. Этот сбой известен как взлом вознаграждения: например, агент в гоночной игре на лодках научился бесконечно кружить и собирать очки, вместо того чтобы финишировать.
Глубокое RL и смежные понятия#
- Обучение с подкреплением: более широкая область. Табличное RL подходит для небольших задач, а глубокое RL — это RL с нейронными сетями в качестве аппроксиматоров функций.
- Глубокое обучение: обычные модели глубокого обучения обучаются на фиксированном размеченном наборе данных. В глубоком RL данные генерируют действия самого агента, а обучающим сигналом служит отложенное вознаграждение, а не метка.
- Обучение с подкреплением на основе отзывов людей (RLHF): метод глубокого RL, в котором вместо написанного вручную вознаграждения используется модель вознаграждения, обученная на сравнении человеческих предпочтений. Этот метод применяют для согласования языковых моделей.
- Предиктивное управление по модели: MPC на каждом шаге управления заново решает задачу оптимизации на основе явной модели, тогда как обученная политика глубокого RL выбирает действие за один прямой проход по сети.










