0Pricing
Learn AI with Python · Урок

Проксимальная оптимизация политики (PPO)

Обрезанная суррогатная целевая функция, оценка преимущества GAE, PPO со stable-baselines3

«Проксимальная оптимизация политики (PPO)» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Почему PPO?

PPO — сегодня стандартный алгоритм RL: стабильный, эффективно использующий данные и простой в настройке. Он устраняет основную проблему градиентных методов политики — слишком большие обновления, разрушающие политику, — ограничивая степень изменения политики при каждом обновлении.

Опасность больших обновлений

Одно чрезмерно большое обновление политики может привести к падению производительности, а поскольку RL работает только с данными текущей политики, восстановление затруднено. PPO сохраняет каждое обновление близким к текущей политике, чтобы избежать проблем.

Отношение вероятностей

PPO отслеживает отношение новых вероятностей действий к старым: ratio = pi_new(a|s) / pi_old(a|s). Отношение, близкое к 1, означает, что политика почти не изменилась; далёкое от 1 — что произошло значительное изменение.

ratio = torch.exp(new_log_prob - old_log_prob)

Ограниченная целевая функция

Отличительная особенность PPO — ограниченная суррогатная целевая функция. Она умножает отношение на преимущество, но ограничивает отношение значениями из диапазона [1-eps, 1+eps], устраняя стимул изменять политику слишком сильно.

clipped = torch.clamp(ratio, 1 - eps, 1 + eps)
objective = torch.min(ratio * adv, clipped * adv)
loss = -objective.mean()

Порог отсечения эпсилон

eps, обычно равный 0.2, — это порог отсечения. Он ограничивает отклонение отношения от 1, поэтому даже при большом преимуществе обновление политики остаётся ограниченным и стабильным.

eps = 0.2  # allow at most +/-20% change in probability

Почему min() и отсечение работают

Взятие min ограниченной и неограниченной целевых функций делает ограничение пессимистичным: улучшения за пределами диапазона отсечения не дают дополнительного вознаграждения, поэтому у оптимизатора нет причин выходить за границы.

Обобщённая оценка преимущества

PPO оценивает преимущества с помощью GAE, объединяющего возвраты за несколько шагов с использованием параметров gamma и lambda. GAE позволяет найти компромисс между смещением и дисперсией и получить плавные, надёжные оценки преимущества.

def gae(rewards, values, gamma=0.99, lam=0.95):
    adv, gae_acc = [], 0
    for t in reversed(range(len(rewards))):
        delta = rewards[t] + gamma * values[t+1] - values[t]
        gae_acc = delta + gamma * lam * gae_acc
        adv.insert(0, gae_acc)
    return adv

Несколько эпох для одного пакета

В отличие от REINFORCE, PPO повторно использует каждый пакет собранных данных в течение нескольких эпох оптимизации. Отсечение делает это безопасным и значительно повышает эффективность использования данных.

for _ in range(n_epochs):
    # recompute ratio and clipped loss on the same batch
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()

PPO со Stable-Baselines3

На практике Вам редко приходится писать PPO вручную. Stable-Baselines3 предоставляет проверенную реализацию. Создайте её, указав тип политики, среду и уровень подробности вывода, затем вызовите learn.

from stable_baselines3 import PPO

model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=100_000)

Использование обученного агента

После обучения используйте predict, чтобы получать действия для новых наблюдений. Для оценки установите deterministic=True, чтобы выбирать наиболее вероятное действие, а не выполнять случайную выборку.

obs, _ = env.reset()
action, _ = model.predict(obs, deterministic=True)
model.save("ppo_agent")

Почему PPO доминирует

PPO объединяет стабильные ограниченные обновления, преимущества GAE и повторное использование данных в надёжный универсальный алгоритм, который работает во множестве задач при минимальной настройке. Поэтому он применяется во всём — от робототехники до RLHF.

Проверка знаний

Проверьте, насколько хорошо Вы понимаете PPO.

Итоги: PPO

Вы изучили ограниченную суррогатную целевую функцию PPO, использующую отношение вероятностей и порог отсечения eps для ограничения обновлений, GAE для оценки преимущества и повторное использование данных в течение нескольких эпох. Вы легко запустили PPO с помощью PPO("MlpPolicy", env, verbose=1) в Stable-Baselines3.

Часто задаваемые вопросы

Урок «Проксимальная оптимизация политики (PPO)» бесплатный?

Да — полный текст урока «Проксимальная оптимизация политики (PPO)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Проксимальная оптимизация политики (PPO)»?

Обрезанная суррогатная целевая функция, оценка преимущества GAE, PPO со stable-baselines3 Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Проксимальная оптимизация политики (PPO)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Методы градиента политики: REINFORCE
  2. Методы Actor-Critic (A2C)
  3. Проксимальная оптимизация политики (PPO)
  4. Пользовательские среды Gymnasium
← Назад к Learn AI with Python