Lil’Log: алгоритмы градиента политики
Конспект большого обзора Лилиан Венг: теорема о градиенте политики с доказательством, REINFORCE и baseline, actor-critic, off-policy и importance sampling, A3C/A2C, TRPO и PPO, а также DDPG, TD3, SAC, IMPALA — что из этого нужно для RLHF и GRPO.
Коротко
Заголовок раздела «Коротко»- Градиент политики (градиент политикиградиент политикиEN policy gradient∇J = E[r · ∇ log π(y|x)] — основа REINFORCE, PPO и GRPO.) оптимизирует саму политику градиентным подъёмом по ожидаемой награде, не выбирая действие через . Поэтому он естественно работает с непрерывными и огромными пространствами действий — например, со словарём LLM.
- Теорема о градиенте политики избавляет от необходимости дифференцировать распределение состояний среды: . Оценка по выборке несмещённая, но очень шумная.
- Почти вся дальнейшая история — борьба с дисперсией без внесения смещения: baseline и преимущество (преимуществопреимущество (advantage)EN advantageA = r − b или A(s, a) = Q(s, a) − V(s): насколько действие лучше среднего в этой ситуации.), критик (актор-критикактор-критик (actor-critic)EN actor-criticДве сети — актор (политика) и критик (оценка V); критик даёт актору оценку преимущества.), GAE.
- Вторая линия — устойчивость шага: TRPO ограничивает KL между старой и новой политикой, PPO делает то же проще — обрезкой отношения вероятностей.
- Третья линия — эффективность по данным: off-policy обучение с importance sampling, буфер опыта, детерминированные политики (DDPG, TD3), максимизация энтропии (SAC), масштабирование (A3C, IMPALA с V-trace).
- В конце Венг собирает общие принципы: уменьшать дисперсию, не переоценивать ценность, ограничивать сдвиг политики, подумать дважды, делить ли сеть между актором и критиком.
Как читать вместе с курсом
Заголовок раздела «Как читать вместе с курсом»Пост — справочник, а не учебник: читайте его после урока 6.0.3 «Actor-critic, GAE и PPO полностью», когда REINFORCE, baseline и PPO вы уже реализовали руками. Тогда обзор покажет, где эти алгоритмы стоят среди остальных.
Для новичка обязательно: обозначения, теорема о градиенте политики (сам вывод — по желанию), REINFORCE, actor-critic, off-policy градиент, TRPO и PPO. Это прямой фундамент 6.3.1 «Основы RL для LLM» и 6.3.2 «RLHF — reward model и PPO», а через них — GRPO (6.4). Можно пропустить при первом чтении: DPG, DDPG, D4PG, MADDPG, ACER, ACKTR, SVPG — это алгоритмы для роботов и непрерывного управления, в обучении LLM они почти не встречаются.
Обозначения у Венг такие же, как в курсе: — дисконтированная отдача, , , , — коэффициент дисконтирования. Детерминированную политику она обозначает , чтобы не путать со стохастической .
1. Что такое градиент политики
Заголовок раздела «1. Что такое градиент политики»Венг начинает со справочной таблицы обозначений и сразу формулирует цель: найти параметры , при которых ожидаемая награда максимальна,
где — стационарное распределение состояний: как часто агент, долго действуя по политике, оказывается в состоянии . Читаем формулу так: «средняя ценность состояний, взвешенная тем, насколько часто мы в них бываем».
Почему не обойтись методами на основе ценности (Q-learning из урока 6.0.2)? Там улучшение политики — это , то есть перебор всех действий. Для непрерывных действий (угол поворота руля) или для 150 тысяч токенов словаря это либо невозможно, либо дорого. Градиент политики просто сдвигает туда, где награда растёт.
Теорема о градиенте политики
Заголовок раздела «Теорема о градиенте политики»Трудность: зависит от двумя путями — через выбор действий (это мы знаем) и через распределение состояний (а это зависит от неизвестной среды). Теорема говорит, что второй путь можно не дифференцировать:
Последний переход — тот же «трюк с логарифмом», что в уроке 6.3.1: , и сумма с весами становится математическим ожиданием, которое можно оценивать по выборке.
Венг приводит полное доказательство по книге Саттона и Барто (разд. 13.1). Его идея на словах: распишите через и уравнение Беллмана; получится рекурсия, где следующего состояния снова выражается через то же правило. Развернув рекурсию до бесконечности, вы получаете сумму по всем состояниям, взвешенную вероятностями до них дойти за шагов, — а нормированная, эта сумма и есть . Коэффициент пропорциональности в эпизодической задаче — средняя длина эпизода.
Главный вывод раздела: «ванильный» градиент политики не смещён, но имеет большую дисперсию, и следующие алгоритмы в основном уменьшают дисперсию, не добавляя смещения. В конце раздела Венг даёт общую форму из статьи о GAE (Schulman и др., 2016): вместо в формулу можно подставлять полную отдачу, отдачу после шага, её же минус baseline, , преимущество или TD-ошибку — все варианты дают тот же градиент в среднем.
2. Базовые алгоритмы
Заголовок раздела «2. Базовые алгоритмы»REINFORCE
Заголовок раздела «REINFORCE»Монте-Карло-версия: сыграть эпизод, посчитать отдачу для каждого шага и сдвинуть параметры: . Работает, потому что .
Популярная доработка — вычесть из baseline, например : получится преимущество . Ожидание градиента не меняется, а дисперсия падает. Насколько сильно — видно в нашем примере ниже.
Actor-critic
Заголовок раздела «Actor-critic»Раз уж ценность помогает уменьшать дисперсию, её стоит учить вместе с политикой. Критик обновляет параметры функции ценности ( или ) по TD-ошибке . Актор обновляет в направлении, которое подсказывает критик: . У них два разных learning rate.
flowchart LR ENV["Среда"] -->|"состояние s, награда r"| A["Актор π_θ"] A -->|"действие a"| ENV ENV -->|"s, a, r, s′"| C["Критик V_w или Q_w"] C -->|"TD-ошибка δ или преимущество A"| A
Off-policy градиент политики
Заголовок раздела «Off-policy градиент политики»REINFORCE и простой actor-critic — on-policy (on-policyon-policy (обучение на данных текущей политики)EN on-policyПротивоположность — off-policy, обучение на данных другой политики.): данные собирает та же политика, которую учим. Off-policy (off-policyoff-policy (обучение на данных другой политики)EN off-policyПолитика, которую учим, отличается от той, что собирала данные. Пример — Q-learning; в PPO и GRPO — поправка π/π_old.) позволяет переиспользовать старые траектории (буфер опыта) и исследовать другой, «поведенческой» политикой . Цена — поправочный множитель (выборка по значимостивыборка по значимости (importance sampling)EN importance samplingПеревзвешивание сэмплов старой политики отношением π_new / π_old — основа PPO.):
Строго говоря, при дифференцировании появляется ещё слагаемое с , которое считать очень трудно; Венг ссылается на работу Degris, White и Sutton (2012), где показано, что его можно отбросить и всё равно гарантировать улучшение политики. Это отношение вероятностей вы потом увидите в PPO и GRPO.
3. Масштабирование: A3C и A2C
Заголовок раздела «3. Масштабирование: A3C и A2C»A3C (Mnih и др., 2016) — много параллельных потоков-акторов, каждый со своей копией параметров; они копят градиенты по нескольким шагам и асинхронно отправляют их в общие параметры. Критик учит по среднеквадратичной ошибке , и служит baseline. A2C — синхронный вариант: координатор ждёт всех акторов, и следующая итерация начинается с одной и той же политики. По данным OpenAI, A2C лучше загружает GPU и работает не хуже A3C.
4. Детерминированные политики: DPG, DDPG, D4PG, MADDPG, TD3
Заголовок раздела «4. Детерминированные политики: DPG, DDPG, D4PG, MADDPG, TD3»Здесь политика выдаёт одно действие , а градиент идёт по цепному правилу через критика: . Плюс — не нужен importance sampling (нет интеграла по действиям); минус — нет встроенного исследования, поэтому к действию добавляют шум.
- DDPG (Lillicrap и др., 2015) соединяет DPG с приёмами DQN: буфер опыта и медленно обновляемые целевые сети (, ), плюс batch norm для признаков разной физической природы.
- D4PG — распределительный критик (учит распределение отдачи, а не среднее), -шаговые цели, много акторов, приоритетный буфер.
- MADDPG — для нескольких агентов: централизованный критик видит действия всех, а акторы действуют по своим локальным наблюдениям; ансамбли политик снижают дисперсию.
- TD3 (Fujimoto и др., 2018) борется с переоценкой ценности: берёт минимум из двух критиков, обновляет политику реже критика и добавляет обрезанный шум к действию в цели («сглаживание целевой политики»).
5. Устойчивый шаг: TRPO, PPO, PPG
Заголовок раздела «5. Устойчивый шаг: TRPO, PPO, PPG»TRPO (Schulman и др., 2015) максимизирует «суррогатную» цель с importance sampling относительно старой политики, , при жёстком ограничении «доверительной области» . Обещание — монотонное улучшение; цена — сложная оптимизация второго порядка.
PPO (Schulman и др., 2017) получает похожий эффект первым порядком. Обозначим и ограничим его интервалом :
Минимум из двух слагаемых убирает стимул уводить политику далеко ради большей награды. Если актор и критик делят сеть, к цели добавляют ошибку ценности и бонус энтропии . Пример с числами: при и положительном преимуществе рост с 1 до 1,5 даст в цели не , а : дальше 1,2 тянуть вероятность действия бесполезно.
Венг добавляет более позднее наблюдение Hsu и др. (2020): у стандартного PPO есть три режима отказа (нестабильность при нулевой награде вне ограниченной области в непрерывных действиях; застревание на неоптимальном действии при редких больших наградах в дискретных; чувствительность к инициализации). Помогают дискретизация действий или бета-распределение вместо гауссова и KL-регуляризация вместо обрезки.
PPG (Cobbe и др., 2020) разводит обучение политики и ценности по фазам: в фазе политики — обычный PPO, во вспомогательной — учится ценность, а KL к старой политике («клонирование поведения») не даёт политике уехать. Ценность переносит гораздо больше повторных проходов по данным (6 эпох против 1), и эффективность по данным заметно растёт.
6. Off-policy actor-critic и энтропия: ACER, ACKTR, SAC, SVPG, IMPALA
Заголовок раздела «6. Off-policy actor-critic и энтропия: ACER, ACKTR, SAC, SVPG, IMPALA»- ACER — off-policy версия A3C: оценка Retrace, обрезанные веса importance sampling с поправкой смещения и эффективное ограничение доверительной области.
- ACKTR — шаг натурального градиента через приближение K-FAC (кронекеровская факторизация матрицы Фишера); Венг включает его для полноты и в детали не идёт.
- SAC (Haarnoja и др., 2018) — максимизация энтропии: к награде добавляется . Политика должна быть как можно случайнее, оставаясь успешной: она лучше исследует и сохраняет несколько почти одинаково хороших стратегий. Отдельный раздел — автоматическая подстройка «температуры» под целевую энтропию.
- SVPG — популяция политик, обновляемых методом Stein variational gradient descent: одно слагаемое тянет частицы к областям высокой награды, другое расталкивает их друг от друга ради разнообразия.
- IMPALA (Espeholt и др., 2018) разделяет «действующих» и «учащихся»: много акторов генерируют опыт слегка устаревшей политикой, один learner учится на всём. Расхождение исправляет V-trace — -шаговая цель с обрезанными весами importance sampling и .
Связь с LLM: та же проблема «данные собраны чуть устаревшей политикой» есть в асинхронном RL для языковых моделей, и решается она тем же — обрезанными отношениями вероятностей (урок 6.4.3).
7. Общие принципы (итог поста)
Заголовок раздела «7. Общие принципы (итог поста)»Венг сводит обзор к списку приёмов, повторяющихся почти во всех алгоритмах. Пересказ:
| Принцип | Где встречается | Где у нас в курсе |
|---|---|---|
| уменьшать дисперсию, не смещая оценку | baseline, преимущество, GAE | 6.0.3, 6.3.1 |
| off-policy ради исследования и эффективности по данным | ACER, DDPG, SAC, IMPALA | 6.0.2 (Q-learning, буфер) |
| буфер опыта и медленные целевые сети | DQN, DDPG, TD3 | 6.0.2 |
| регуляризация энтропией | A3C, PPO, SAC | 6.0.3; коллапс энтропии — 6.4.3 |
| ограничивать расхождение старой и новой политики | TRPO, PPO, PPG | 6.3.2, 6.4.1 |
| не переоценивать ценность | TD3 (минимум из двух критиков) | — |
| подумать, делить ли сеть актора и критика | PPG | 6.3.2: отдельный критик — одна из «четырёх моделей» |
Что сделать руками
Заголовок раздела «Что сделать руками»Проверьте главный тезис поста — baseline уменьшает дисперсию и не ломает обучение — на трёхрукой задаче о бандите. Код на NumPy, работает за секунду:
import numpy as np
def reinforce(use_baseline, seed, steps=2000, lr=0.01): rng = np.random.default_rng(seed) true_means = np.array([10.0, 10.5, 9.5]) # средние награды трёх «рычагов»; лучший — второй theta = np.zeros(3) # логиты политики: π(a) = softmax(θ) baseline, early_grads = 0.0, [] for t in range(steps): pi = np.exp(theta - theta.max()); pi /= pi.sum() a = rng.choice(3, p=pi) # действуем по текущей политике r = true_means[a] + rng.normal(0, 1) # шумная награда grad_logp = -pi.copy(); grad_logp[a] += 1 # ∇θ log π(a) = one_hot(a) − π weight = r - baseline if use_baseline else r g = weight * grad_logp # оценка градиента REINFORCE по одному шагу if t < 200: early_grads.append(g) theta += lr * g # градиентный ПОДЪЁМ: награду максимизируем baseline += 0.05 * (r - baseline) # бегущее среднее награды var = np.array(early_grads).var(axis=0).sum() return pi, var
for use_baseline in [False, True]: for seed in range(3): pi, var = reinforce(use_baseline, seed) print(f"baseline={use_baseline!s:5} seed={seed}: π={pi.round(2)}, дисперсия={var:.1f}")Ожидаемый вывод:
baseline=False seed=0: π=[0.04 0.95 0.01], дисперсия=61.7baseline=False seed=1: π=[0.97 0.01 0.01], дисперсия=50.6baseline=False seed=2: π=[0.81 0.15 0.04], дисперсия=64.1baseline=True seed=0: π=[0.04 0.93 0.03], дисперсия=4.3baseline=True seed=1: π=[0.06 0.91 0.03], дисперсия=4.1baseline=True seed=2: π=[0.05 0.93 0.02], дисперсия=4.0Без baseline все награды около 10, и любой выбранный рычаг «поощряется» — какой из них победит, решает случай (в двух запусках из трёх политика сошлась к худшему рычагу). С baseline дисперсия градиента падает примерно в 15 раз, и все три запуска находят лучший рычаг. Дальше:
- Замените постоянный baseline на — и вы получите actor-critic (для бандита состояние одно, так что это то же бегущее среднее).
- Добавьте к обновлению обрезку из PPO и несколько эпох на одном батче — так устроен цикл обучения в уроке 6.0.3.
- Пройдите практику уроков 6.0.3 и 6.3.1, держа пост открытым как справочник по формулам.
Словарик
Заголовок раздела «Словарик»| EN | RU |
|---|---|
| policy gradient (theorem) | градиент политики (теорема о нём) |
| stationary distribution | стационарное распределение |
| return, discount factor | отдача, коэффициент дисконтирования |
| baseline, advantage | baseline (базовая линия), преимущество |
| actor, critic | актор, критик |
| on-policy / off-policy | on-policy / off-policy (по своей / по чужой политике) |
| behavior policy, target policy | поведенческая политика, целевая политика |
| importance weight | вес важности (importance sampling) |
| trust region | доверительная область |
| clipped surrogate objective | обрезанная суррогатная цель (PPO) |
| deterministic policy | детерминированная политика |
| experience replay, target network | буфер опыта, целевая сеть |
| maximum entropy RL, temperature | RL с максимизацией энтропии, температура |
| overestimation bias | смещение переоценки |
| natural gradient | натуральный градиент |