
Стратегии исследования в глубоком обучении с подкреплением
Разбираем ключевые стратегии exploration в Deep RL: от ε-greedy до curiosity-driven подходов. Практично, с примерами и сравнениями.
Стратегии исследования в глубоком обучении с подкреплением
Представьте агента, который учится играть в видеоигру с нуля. Он не знает правил, не знает, что приносит очки, и не знает, куда вообще идти. Единственное, что у него есть — это возможность действовать и получать обратную связь от среды. Перед ним встаёт фундаментальный вопрос: пробовать новое или делать то, что уже работало раньше?
Эта дилемма — exploration vs exploitation — является краеугольным камнем обучения с подкреплением. Противостояние эксплуатации и исследования — одна из ключевых тем в Reinforcement Learning. И чем сложнее среда, тем острее стоит этот вопрос. В этой статье мы разберём, какие стратегии исследования существуют в глубоком RL, как они работают под капотом, и когда какую применять.
Почему исследование — это сложно
Хорошее исследование становится особенно трудным, когда среда редко предоставляет награды в качестве обратной связи. «Hard-exploration» проблема — это исследование в среде с очень редкой или даже обманчивой наградой. Это сложно, потому что случайное исследование в таких сценариях редко позволяет обнаружить успешные состояния или получить значимую обратную связь.
Во многих реальных задачах результаты определённого события видны только после значительного числа других событий. Такие задачи называются задачами с разреженной наградой (sparse reward), поскольку вознаграждение редко и не имеет чёткой связи с предыдущими действиями. Разреженные награды широко встречаются в реальном мире — например, при поисково-спасательных операциях награда выдаётся только при нахождении объекта, а при доставке — только при её завершении.
Глубокое обучение с подкреплением (DRL) добилось значительных успехов в широком спектре областей, включая игровой ИИ, автономные транспортные средства и робототехнику. Однако агентам DRL требуются миллионы взаимодействий даже для относительно простых задач, что сдерживает широкое применение в реальных индустриальных сценариях.
Классические стратегии: ε-greedy и UCB
ε-Greedy (Эпсилон-жадный)
Самый базовый метод исследования — ε-greedy: с вероятностью 1−ε агент выбирает действие жадно (эксплуатация), в остальных случаях делает случайный выбор (исследование). Несмотря на популярность и простоту, ε-greedy неэффективен в сложных задачах с большим пространством состояний-действий.
Канонический алгоритм ε-greedy выбирает случайное действие с вероятностью ε, иначе — жадное действие, максимизирующее ожидаемую награду. Несмотря на гарантию сходимости, ε-greedy не способен учитывать информацию о неопределённости модели.
На практике часто применяется декрементируемый ε (epsilon decay): агент начинает с высокого значения ε (много исследования) и постепенно снижает его по мере обучения.
import numpy as np
class EpsilonGreedyAgent:
def __init__(self, n_actions, epsilon=1.0, epsilon_min=0.01, decay=0.995):
self.n_actions = n_actions
self.epsilon = epsilon
self.epsilon_min = epsilon_min
self.decay = decay
self.q_values = np.zeros(n_actions)
def select_action(self):
if np.random.rand() < self.epsilon:
return np.random.randint(self.n_actions) # Исследование
return np.argmax(self.q_values) # Эксплуатация
def decay_epsilon(self):
self.epsilon = max(self.epsilon_min, self.epsilon * self.decay)
Upper Confidence Bound (UCB)
UCB — классический метод исследования, изначально разработанный для задач Multi-Armed Bandits. В отличие от неэффективного случайного исследования (например, ε-greedy), методы семейства UCB измеряют потенциал каждого действия через верхнюю доверительную границу ожидаемой награды.
UCB был введён для учёта неопределённости оценок. Интуиция проста: если действие уже выбиралось много раз, вы достаточно уверены в его последствиях.
UCB и аналогичные методы естественным образом снижают вероятность выбора исследовательских действий и со временем становятся более уверенными в оптимальной политике — и поэтому по своей природе более эффективны, чем ε-greedy.
Boltzmann (Softmax) Exploration
Другой метод — исследование Больцмана (Softmax): агент выбирает действия из распределения Больцмана по Q-значениям. Формально вероятность выбора действия a равна: p(a) = exp(Q(s,a)/τ) / Σ exp(Q(s,aᵢ)/τ), где температурный параметр τ контролирует степень случайности. Недостаток — метод нельзя напрямую применить к непрерывным пространствам состояний-действий.
Энтропийная регуляризация и шум в пространстве параметров
Entropy Regularization
Энтропийная регуляризация широко используется для стимулирования исследования в алгоритмах RL со стохастическими политиками: энтропия политики H(π(a|s)) добавляется к целевой функции как регуляризатор, побуждая политику принимать разнообразные действия.
Добавление энтропийного члена H(π(a|s)) в функцию потерь поощряет политику выбирать разнообразные действия. Этот приём используется в алгоритмах Soft Actor-Critic (SAC) и A3C.
Noise-based Exploration
Шумовое исследование предполагает добавление шума в пространство наблюдений, действий или даже параметров. Метод NoisyNet (Fortunato et al., 2017) добавляет параметрический шум прямо в веса нейронной сети, что позволяет агенту исследовать среду более последовательно, чем при случайном выборе действий.
«Noise-based exploration allows agents to learn when and where to explore rather than exploring uniformly at random.» — ключевая идея NoisyNet
Curiosity-Driven Exploration: агент, которому интересно
Классические методы хорошо работают в простых задачах, но пасуют перед сложными средами с разреженными наградами. Здесь на сцену выходит любопытство как движущая сила исследования.
Intrinsic Curiosity Module (ICM)
Curiosity-based методы обучают агентов взаимодействовать со средой так, чтобы испытывать результаты, не совпадающие с предсказаниями агента. Таким образом, curiosity-driven исследование обычно подразумевает обучение агента наращивать знания о среде (например, о её динамике).
Intrinsic Curiosity Module (ICM) обучает совместное пространство эмбеддингов с помощью потерь инверсной и прямой динамики и стал первым методом на основе любопытства, успешно применённым в глубоком RL.
Агент, оснащённый моделью мира, получает текущее состояние среды и пытается предсказать следующее. Ошибка предсказания и является внутренней наградой. По мере улучшения модели мира внутренние награды снижаются, поскольку растут знания агента о среде. Это и называется curiosity-driven exploration.
Если прямая модель не может точно предсказать следующее состояние, агент «любопытствует» и назначает себе внутреннюю награду — как бы говоря: «Я этого не ожидал! Давайте исследуем дальше.» ICM — это своеобразный «мозг» любопытства агента, постоянно вычисляющий ошибки предсказания и использующий их как топливо для исследования.
Random Network Distillation (RND)
Random Network Distillation (RND) — техника, разработанная для обеспечения внутренней curiosity-награды агентам RL и улучшения их способностей к исследованию в сложных средах.
RND использует случайно инициализированную нейронную сеть для измерения новизны. Идея заключается в том, что агент сравнивает новые состояния с тем, что видел раньше. Если новое состояние кардинально отличается от привычного, агент «любопытствует» и назначает себе внутреннюю награду.
RND особенно полезен в средах с огромным пространством состояний, таких как масштабные задачи исследования в сложных играх или мирах с открытым миром. Назначая внутренние награды за новые состояния, он гарантирует, что агенты сохраняют любопытство даже при дефиците внешних наград.
import torch
import torch.nn as nn
class RNDModel(nn.Module):
"""Упрощённая иллюстрация RND"""
def __init__(self, input_dim, output_dim):
super().__init__()
# Фиксированная целевая сеть (не обучается)
self.target = nn.Sequential(
nn.Linear(input_dim, 64), nn.ReLU(),
nn.Linear(64, output_dim)
)
# Предсказывающая сеть (обучается)
self.predictor = nn.Sequential(
nn.Linear(input_dim, 64), nn.ReLU(),
nn.Linear(64, output_dim)
)
# Заморозим параметры target
for p in self.target.parameters():
p.requires_grad = False
def intrinsic_reward(self, obs):
with torch.no_grad():
target_feat = self.target(obs)
pred_feat = self.predictor(obs)
# Ошибка предсказания = внутренняя награда
return ((target_feat - pred_feat) ** 2).mean(dim=-1)
Проблема «шумного телевизора»
Однако методы на основе curiosity постоянно оказываются неэффективными, когда в среде присутствует неустранимый шум. Классический мысленный эксперимент: если поставить агента перед телевизором со случайным статическим шумом, его ICM-модель никогда не сможет предсказать следующий кадр — и будет бесконечно «любопытствовать» перед экраном, игнорируя реальные задачи.
Для решения этой проблемы был предложен метод RIDE, который использует разницу между двумя последовательными эмбеддингами состояний как внутреннюю награду и побуждает агента выбирать действия, приводящие к значительным изменениям состояния.
Count-based методы и псевдоподсчёт
Count-Based Exploration — более прямолинейный подход: агент получает награду за посещение новых состояний на основе счётчика, сколько раз состояние было посещено. Чем реже посещалось состояние, тем выше награда. Метод прост, но хорошо работает в дискретных средах.
Одна из интуитивных формулировок curiosity — count-based методы, где менее посещённые состояния обладают большей новизной для исследования. Но они не масштабируются на большие или непрерывные пространства состояний.
Для преодоления этого ограничения исследователи предложили псевдоподсчёт (pseudo-count) — приближённый аналог подсчёта, основанный на плотностных моделях нейронных сетей.
Сравнение стратегий исследования
| Метод | Тип | Сложность реализации | Sparse Rewards | Масштабируемость | Лучше всего подходит для |
|---|---|---|---|---|---|
| ε-Greedy | Случайный | ⭐ Минимальная | ❌ Слабо | ✅ Высокая | Простые среды, DQN |
| ε-Greedy с decay | Случайный | ⭐⭐ Низкая | ⚠️ Средне | ✅ Высокая | Базовые задачи Deep RL |
| UCB | На основе подсчёта | ⭐⭐ Низкая | ⚠️ Средне | ❌ Ограничена | Tabular RL, бандиты |
| Entropy Reg. | Политика | ⭐⭐ Низкая | ⚠️ Средне | ✅ Высокая | SAC, A3C, policy gradient |
| NoisyNet | Шум параметров | ⭐⭐⭐ Средняя | ⚠️ Средне | ✅ Высокая | DQN на Atari |
| ICM | Intrinsic / Curiosity | ⭐⭐⭐ Средняя | ✅ Хорошо | ✅ Высокая | Разреженные награды |
| RND | Intrinsic / Novelty | ⭐⭐⭐ Средняя | ✅ Отлично | ✅ Высокая | Hard-exploration задачи |
| Count-based | Подсчёт | ⭐⭐ Низкая | ✅ Хорошо | ❌ Только дискретные | Дискретные среды |
Современные подходы и направления исследований
Современные обзоры категоризируют методы исследования по ключевым вкладам: вознаграждение за новые состояния, вознаграждение за разнообразное поведение, goal-based методы, вероятностные методы, методы на основе имитации, безопасное исследование и случайные методы.
Goal-conditioned исследование
Агент ставит себе подцели и исследует пространство состояний, стремясь достичь их. Этот подход хорошо работает в иерархических задачах и роботизированных манипуляциях.
Эволюционные стратегии и разнообразие политик
В эволюционных стратегиях используется разнообразная популяция политик, а не одна политика. Эволюционные стратегии способны находить решения, не предусмотренные разработчиками, поскольку ищут как структуру нейронной сети, так и разнообразие. Однако они страдают от низкой эффективности по числу выборок, что делает обучение вычислительно затратным или медленным.
Meta-learning curiosity алгоритмов
Алгоритмы curiosity, такие как Random Network Distillation (RND), разработаны вручную и способны хорошо работать в разных средах. Однако в 2020 году Alet et al. предложили уникальный подход к открытию новых алгоритмов curiosity — через мета-обучение. В результате были открыты два новых интерпретируемых алгоритма: Fast Action Space Transition (FAST) и Cycle-Consistency Intrinsic Motivation (CCIM).
graph TD
A[Агент взаимодействует со средой] --> B{Получена награда?}
B -- Да --> C[Обновление политики / эксплуатация]
B -- Нет --> D[Вычисление внутренней награды]
D --> E{Метод исследования}
E --> F[ε-Greedy: случайное действие]
E --> G[UCB: наименее изученное действие]
E --> H[ICM/RND: состояние-новинка]
E --> I[Entropy Reg.: максимизация разнообразия]
F & G & H & I --> J[Исследование новых состояний]
J --> A
C --> A
Заключение: как выбрать стратегию
Большинство успешных RL-приложений используют ε-greedy, поскольку он надёжен и хорошо изучен. Баланс между исследованием и эксплуатацией фундаментален для RL и для принятия решений в целом. Агенту необходимо балансировать между испытанием нового и использованием уже известного, и идеального решения не существует.
Практические рекомендации:
- Простые задачи / дискретные среды → ε-Greedy с decay, UCB
- Policy gradient алгоритмы (SAC, PPO) → Entropy Regularization
- Atari-игры с плотными наградами → NoisyNet, ε-Greedy
- Разреженные награды, сложные игры → ICM, RND
- Исследование и безопасность → Goal-conditioned + Safe exploration
Исследование в Deep RL — это не просто технический приём, а отражение фундаментального когнитивного принципа: чтобы научиться чему-то по-настоящему ценному, иногда нужно рискнуть и пойти туда, куда ещё не ходил. Правильный баланс между любопытством и осторожностью определяет, станет ли ваш агент чемпионом или застрянет в локальном оптимуме.