Обучение с подкреплением и выравнивание
Обучение вне политики
Использовать чужие данные — и почему это работает ровно до тех пор, пока политики близки
Зачем
Градиент политики требует данных, собранных текущей политикой. Сделали шаг — данные устарели, собирайте заново. Для языковой модели это означает генерацию заново после каждого обновления, и это дорого.
Хочется переиспользовать. Инструмент известен из блока 3, урок 150:
Тождество точное: ожидание по одному распределению переписывается как ожидание по другому с поправочным весом. Оценка остаётся несмещённой при любом , у которого носитель покрывает носитель .
Где оно ломается
Несмещённость сохраняется всегда, дисперсия — нет. Измерим на трёхруком примере: целевая политика , награды , истинное значение .
| поведенческая | дисперсия | эффективный размер выборки | макс. отношение |
|---|---|---|---|
| — совпадает | |||
Оценка во всех строках даёт ровно — она несмещена. Но эффективный размер выборки падает вчетверо, как только политики заметно расходятся: из ста собранных примеров реально работают двадцать три.
Обратите внимание на четвёртую строку: дисперсия там меньше, чем в третьей, хотя ESS ниже и максимальное отношение вдвое больше. Дисперсия зависит и от того, какие именно значения получают большие веса; ESS — нет. Поэтому смотреть стоит на оба числа, а не выбирать одно.
Отсюда — вся конструкция следующих уроков
Логика получается такая:
- переиспользовать данные можно, и оценка остаётся честной;
- качество оценки падает по мере расхождения политик;
- значит нужно ограничить расхождение;
- а ограничение накладывается на шаг оптимизации.
Пункты 3 и 4 — это trust region (урок 100) и PPO (урок 110). Посмотрите, как выглядит целевая функция, когда отношение отпущено на волю и когда ограничено.
отношение π/μ целевая функция
- значение
- 1
- производная
- 1
- диапазон обрезки
- 0.8–1.2
Смертельная триада
Второй способ сломаться, и он не про дисперсию. Три ингредиента:
| ингредиент | что даёт |
|---|---|
| аппроксимация функции | обобщение вместо таблицы |
| бутстрэппинг | обучение оценки по оценке |
| off-policy данные | переиспользование |
Любые два безопасны, все три вместе могут расходиться. Это не редкая патология: известны компактные контрпримеры на нескольких состояниях, где значения уходят в бесконечность.
Причина в том, что оператор Беллмана сжимает в равномерной норме (урок 030), а проекция на пространство функций сети — в норме, взвешенной распределением данных. Когда распределение данных не соответствует политике, композиция двух операторов перестаёт быть сжимающей, и гарантия исчезает.
Практически это лечится не теорией, а осторожностью: целевые сети, ограничение расхождения политик, консервативные шаги. Все приёмы следующих уроков делают одно — держат обучение в режиме, где данные почти соответствуют политике.
Итог
- Importance sampling позволяет переиспользовать данные и не вносит смещения.
- Дисперсия и эффективный размер выборки быстро деградируют при расхождении политик: измерено падение до и рост дисперсии в двадцать раз.
- ESS и дисперсия — разные диагностики, и смотреть стоит на обе.
- Смертельная триада: аппроксимация, бутстрэппинг и off-policy вместе снимают гарантию сходимости.
- Отсюда потребность ограничивать шаг — тема уроков 100 и 110.
Источники
- Precup и др. — Eligibility Traces for Off-Policy Policy Evaluation — Importance sampling для оценки политики
- Sutton, Barto — Reinforcement Learning, An Introduction — Глава 5.5–5.9 и 11, off-policy и «смертельная триада»
Проверки
0 из 2Чужие данные и их цена
Отметьте все верные утверждения об обучении вне политики.
Веса важности и эффективный размер выборки
Реализуйте
importance_facts(target, behaviour, values)— три списка одинаковой длины: целевая политика , поведенческая и величина , ожидание которой нас интересует. Верните[estimate, variance, effective_sample_fraction, max_ratio]:estimate= — оценка importance sampling (посчитайте именно так, не сокращая: это проверяет реализацию);variance= ;effective_sample_fraction= — доля выборки, которая реально работает;max_ratio= .
Проверить себя можно так: при третье число равно единице, а первое — обычному ожиданию.
Загрузка редактора…
Ctrl/⌘ + Enter