Глава 3: Оценка политик вне политики сбора данных (OPE)

«Нельзя запустить новую политику в продакшене, чтобы узнать, насколько она хороша — значит, нужно оценить её ценность по тем данным, которые уже есть.»


Постановка задачи

В главе 2 мы определили офлайн постановку: фиксированный датасет $\mathcal{D}$ переходов $(s, a, r, s')$, собранных поведенческой политикой $\pi_\beta$. Мы обучаем новую политику $\pi$ (например, с помощью CQL, IQL или других методов этой книги) по $\mathcal{D}$. Ключевой вопрос до внедрения:

Чему равна $J(\pi) = \mathbb{E}_{\tau \sim \pi}\bigl[\sum_t \gamma^t r_t\bigr]$ — истинный ожидаемый return политики $\pi$?

Ответить на это, запуская $\pi$ в реальной среде, нельзя: это уже внедрение, а не оценка. В промышленности развёртывание непроверенной политики может быть небезопасным или дорогим. Нужно оценивать $J(\pi)$ только по офлайн датасету $\mathcal{D}$, собранному под $\pi_\beta$, а не под $\pi$. Это и есть Off-Policy Evaluation (OPE).

OPE — парная по смыслу к офлайн RL задача: офлайн RL обучает политику по $\mathcal{D}$; OPE оценивает кандидатную политику по тому же $\mathcal{D}$. На практике используют оба шага: обучают несколько политик (например, CQL с разным $\alpha$), ранжируют их с помощью OPE, выбирают лучшего кандидата и только потом рассматривают внедрение (часто после отдельной проверки безопасности).


Почему нельзя просто использовать обученную Q-функцию?

В главе 2 уже вводилась оценка $\hat{J}(\hat\pi) = \mathbb{E}_{s,a \sim d^{\hat\pi}}[Q_\theta(s,a)]$ — return, который предсказывает обученная Q-сеть для жадной политики. Мы отмечали: $\hat{J}$ легко становится чрезмерно оптимистичной, когда $Q_\theta$ завышает ценность OOD-действий (действий вне поддержки датасета).

Отсюда два связанных эффекта:

Использовать training Q-network как единственный оценщик $J(\pi)$ — значит смешать обучение и валидацию. OPE вводит отдельные оценки $J(\pi)$: они явно учитывают сдвиг распределения между $\pi_\beta$ и $\pi$ и не предполагают, что $Q_\theta$ «уже правильная».


Три семейства оценок

1. Importance Sampling (IS)

Return траектории $\tau = (s_0, a_0, r_0, s_1, a_1, \ldots)$ под $\pi$ равен $G(\tau) = \sum_{t\ge 0} \gamma^t r_t$. Траектории в $\mathcal{D}$ сгенерированы $\pi_\beta$. Тождество:

$$\mathbb{E}_{\tau \sim \pi}[G(\tau)] = \mathbb{E}_{\tau \sim \pi_\beta}\left[ \frac{\rho(\tau)}{\rho_\beta(\tau)} \, G(\tau) \right]$$

где $\rho(\tau)$ — вероятность $\tau$ под $\pi$, $\rho_\beta(\tau)$ — под $\pi_\beta$. Произведение $\prod_{t} \frac{\pi(a_t|s_t)}{\pi_\beta(a_t|s_t)}$ — trajectory importance weight. Оценка:

$$\hat{J}_{IS} = \frac{1}{n}\sum_{i=1}^n \left( \prod_{t=0}^{T_i-1} \frac{\pi(a_t^{(i)}|s_t^{(i)})}{\pi_\beta(a_t^{(i)}|s_t^{(i)})} \right) G^{(i)}$$

Плюсы: несмещённость при полной поддержке (каждое действие с положительной вероятностью под $\pi$ имело положительную вероятность под $\pi_\beta$).
Минусы: дисперсия взрывается, когда $\pi$ и $\pi_\beta$ сильно расходятся — произведение весов может стать огромным. На практике: per-step / per-decision IS и clipping весов — меньше дисперсия, ценой смещения.

2. Direct Method (DM)

Обучают модель награды/динамики (или только Q) по $\mathcal{D}$, затем оценивают $J(\pi)$ симуляцией $\pi$ в модели или усреднением $\hat{Q}(s, \pi(s))$. Поскольку $J(\pi)$ — ожидаемый return от начального распределения состояний, корректная DM-оценка — среднее по начальным $s_0^{(i)}$ (по одному на траекторию в $\mathcal{D}$ или по held-out):

$$\hat{J}_{DM} = \frac{1}{n}\sum_{i=1}^n \hat{Q}(s_0^{(i)}, \pi(s_0^{(i)}))$$

Усреднение $\hat{Q}(s, \pi(s))$ по всем $s$ из $\mathcal{D}$ даёт ценность на посещённом распределении состояний, а не $J(\pi)$; иногда это дешёвый суррогат, если $s_0$ не логируются. Стандартный способ получить $\hat{Q}$ — Fitted Q Evaluation (FQE).

Плюсы: низкая дисперсия; использует весь датасет.
Минусы: смещение при ошибке модели или $\hat{Q}$ — в offline RL часто есть extrapolation error; DM/FQE могут быть излишне оптимистичны для действий $\pi$.

Fitted Q Evaluation (FQE) подробнее

FQE (Le et al., 2019, Batch Policy Learning under Constraints; там же формализована для OPE) подгоняет Q-функцию, приближающую ценность целевой политики $\pi$, только по офлайн данным из $\mathcal{D}$. В отличие от Fitted Q Iteration (FQI), FQE оценивает фиксированную политику: в Bellman-цели на следующем шаге используется $\pi(s')$, а не $\max_a$ или поведенческая политика. Истинная $Q^\pi$ удовлетворяет $Q^\pi(s,a) = r + \gamma \mathbb{E}_{s'}[Q^\pi(s', \pi(s'))]$, поэтому регрессия идёт на цель $y = r + \gamma \hat{Q}(s', \pi(s'))$ по переходам $(s,a,r,s') \in \mathcal{D}$. Минимизируют TD-ошибку: $\mathcal{L}_{FQE} = \mathbb{E}_{(s,a,r,s') \sim \mathcal{D}}[(r + \gamma \hat{Q}_{tgt}(s', \pi(s')) - \hat{Q}(s,a))^2]$. Можно делать одну регрессию или итерации с обновлением целевой сети. Минимальный шаг обучения и оценка $J$ в коде:

# FQE update: TD-цель использует π в следующем состоянии (не поведенческое действие)
with torch.no_grad():
    a_next = policy_fn(next_states)           # π(s')
    q_next = Q_tgt(next_states, a_next)
    td_target = rewards + gamma * (1 - dones) * q_next
q = Q(states, actions)
loss = F.mse_loss(q, td_target)
# ... backward, step оптимизатора, затем soft update Q_tgt ← Q

# FQE-оценка: (1/n) Σ Q(s, π(s)) по *начальным* состояниям для J(π); по всем состояниям датасета — суррогат
def estimate_J_FQE(Q, policy_fn, states):
    with torch.no_grad():
        a = policy_fn(states)
        return Q(states, a).mean().item()

Зачем FQE: не нужны importance weights и знание $\pi_\beta$; удобно для непрерывных действий (достаточно одного forward pass для $\hat{Q}(s', \pi(s'))$). Оценка $\hat{J}_{FQE} = \frac{1}{n}\sum_i \hat{Q}(s_0^{(i)}, \pi(s_0^{(i)}))$ дёшева после обучения $\hat{Q}$, поэтому FQE хорошо масштабируется при сравнении многих кандидатов. Смещение: $\hat{Q}$ обучена на распределении данных; при подстановке $\pi(s)$ и $\pi(s')$ действия могут быть вне распределения — та же экстраполяционная ошибка из главы 2. FQE наиболее надёжна, когда $\pi$ близка к $\pi_\beta$ или покрытие состояний в $\mathcal{D}$ достаточно богатое.

📄 Код: fqe.py — FQE на том же игрушечном окружении: обучение BC, подгонка $Q^\pi$, оценка $\hat{J}_{FQE}$ и сравнение с rollout return.

3. Doubly Robust (DR)

Комбинирует IS и DM: оценка несмещена, если верна (a) модель importance weights, или (b) value model $\hat{Q}$:

$$\hat{J}_{DR} = \frac{1}{n}\sum_{i=1}^n \left[ \hat{Q}(s_0^{(i)}, \pi(s_0^{(i)})) + \sum_{t\ge 0} \gamma^t \rho_{0:t}^{(i)} \left( r_t^{(i)} + \gamma \hat{Q}(s_{t+1}^{(i)}, \pi(s_{t+1}^{(i)})) - \hat{Q}(s_t^{(i)}, a_t^{(i)}) \right) \right]$$

где $\rho_{0:t}$ — importance weight до шага $t$. Если $\hat{Q} = Q^\pi$, хвостовые TD-остатки имеют нулевое матожидание. Если $\pi_\beta = \pi$, веса равны 1, но DR не вырождается в чистый DM: коррекционные слагаемые остаются. На практике DR часто даёт меньшую дисперсию, чем IS, и меньшее смещение, чем один DM. Ограничение: на длинных горизонтах $\rho_{0:t}$ по-прежнему может взрываться или обнуляться; смягчают Marginalized IS (state-marginal weights).


Практические рекомендации

Ситуация Предпочтительно
$\pi$ близка к $\pi_\beta$ IS (или weighted IS с clipping)
Большое пространство действий / $\pi$ далеко от $\pi_\beta$ FQE или DM (принять смещение)
Нужно одно число для сравнения многих политик FQE быстрая; ранжировать по $\hat{J}_{FQE}$, топ — проверить DR или IS
Критично по безопасности Несколько оценок; сильное расхождение — стоп-сигнал для внедрения

Снижение дисперсии

Для IS: per-decision IS, ограничение (cap) весов, нормализованные веса. Для DR: хорошо настроенная $\hat{Q}$ (TD на $\mathcal{D}$, target network) уменьшает дисперсию коррекционного члена.

Доверительные интервалы

Bootstrap по траекториям (или по эпизодам) даёт интервал вокруг $\hat{J}$; альтернатива — концентрационные границы (Chebyshev, high-confidence OPE). Широкий интервал — высокая неопределённость: не принимать решение о внедрении только по точечной оценке.

Правило для внедрения: если IS, FQE и DR (или любые две независимые оценки) сильно расходятся — трактуйте $J(\pi)$ как ненадёжную и не используйте результат как единственное основание для выдачи политики в продакшен. Согласуйте оценки, улучшите покрытие данных или проведите shadow / ограниченный rollout (главы 10, 12–13).


Ограничения


Итог

Оценщик Смещение Дисперсия Когда использовать
IS Низкое (при support) Высокая $\pi \approx \pi_\beta$
DM / FQE Высокое (ошибка модели) Низкая Быстрое ранжирование, смещение осознанно
DR Низкое, если верны Q или веса Средняя Разумный выбор по умолчанию, когда применимо

Off-Policy Evaluation отвечает на вопрос: по офлайн данным только, насколько хороша эта политика? OPE не заменяет контролируемое внедрение и мониторинг, но позволяет сравнивать и отбирать политики до реального rollout.

Следующая глава открывает алгоритмическую часть: Conservative Q-Learning (CQL) — первый метод обучения политики по $\mathcal{D}$.


Литература