Методы градиента политики: REINFORCE
Теорема о градиенте политики, алгоритм REINFORCE, вычитание базовой линии, уменьшение дисперсии
«Методы градиента политики: REINFORCE» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Обучение с подкреплением на основе ценности и политики
Некоторые методы RL изучают ценность действий, а затем выбирают действия жадно. Методы градиента политики вместо этого обучают саму политику — функцию, которая выдаёт вероятности действий. Такой подход естественным образом работает с непрерывными действиями и стохастическими политиками.
Политика pi(a|s)
Параметризованная политика pi(a|s, theta) отображает состояние в распределение вероятностей действий, используя параметры theta (нейронную сеть). Во время обучения параметры theta изменяются так, чтобы предпочтение отдавалось действиям, приносящим большую награду.
class Policy(nn.Module):
def __init__(self, obs_dim, n_actions):
super().__init__()
self.net = nn.Sequential(
nn.Linear(obs_dim, 128), nn.ReLU(),
nn.Linear(128, n_actions)
)
def forward(self, s):
return torch.softmax(self.net(s), dim=-1)Выбор действий
Поскольку политика представляет собой распределение, Вы выбираете действие случайным образом, а не берёте действие с максимальной вероятностью. Такая выборка обеспечивает исследование среды и делает политику стохастической.
probs = policy(state)
dist = torch.distributions.Categorical(probs)
action = dist.sample()
log_prob = dist.log_prob(action)Разворачивание траектории
Эпизод (траектория) — это последовательность состояний, действий и наград от начала до конца. Полную траекторию получают, действуя в среде до её завершения.
states, actions, rewards, log_probs = [], [], [], []
state, _ = env.reset()
done = False
while not done:
probs = policy(torch.tensor(state).float())
dist = torch.distributions.Categorical(probs)
a = dist.sample()
state, r, term, trunc, _ = env.step(a.item())
rewards.append(r); log_probs.append(dist.log_prob(a))
done = term or truncДисконтированный возврат G_t
Возврат G_t — это общая будущая награда начиная с момента t, дисконтированная с помощью gamma, поэтому ближайшие награды имеют больший вес. Он показывает, насколько успешными оказались действия, выполненные начиная с шага t.
def returns(rewards, gamma=0.99):
G, out = 0, []
for r in reversed(rewards):
G = r + gamma * G
out.insert(0, G)
return torch.tensor(out)Целевая функция REINFORCE
REINFORCE выполняет градиентный подъём по ожидаемому возврату. Интуитивно: увеличивайте вероятность действий, которые привели к высокому возврату, и уменьшайте вероятность действий, приведших к низкому. Каждое действие взвешивается с помощью G_t.
Градиент политики
Функция потерь имеет вид -sum(log_prob * G_t). Знак минус превращает градиентный подъём в спуск, поэтому оптимизатор максимизирует возврат. Для действий с высоким возвратом их логарифм вероятности увеличивается.
G = returns(rewards)
loss = -torch.sum(torch.stack(log_probs) * G)Обновление политики
Выполните обратное распространение ошибки и шаг оптимизатора как обычно. Одно обновление использует целую траекторию, после чего она отбрасывается: REINFORCE работает только с данными, собранными текущей политикой.
optimizer.zero_grad()
loss.backward()
optimizer.step()Проблема высокой дисперсии
Обычный REINFORCE известен своей нестабильностью и высокой дисперсией: возвраты сильно различаются от эпизода к эпизоду, поэтому оценки градиента получаются зашумлёнными, а обучение идёт медленно и непредсказуемо.
Базовая оценка для снижения дисперсии
Вычитание базовой оценки, например среднего возврата, из G_t уменьшает дисперсию, не внося смещения в градиент. Мы поощряем действия за то, что они лучше ожидаемого, а не просто за положительный возврат.
baseline = G.mean()
advantage = G - baseline
loss = -torch.sum(torch.stack(log_probs) * advantage)Почему REINFORCE важен
REINFORCE лежит в основе всех методов градиента политики. Его недостатки — высокая дисперсия и неэффективное использование данных — послужили причиной появления методов actor-critic и PPO, которые Вы изучите далее.
Проверка знаний
Проверьте, насколько хорошо Вы понимаете градиент политики.
Итоги: REINFORCE
Вы научились задавать параметры политики pi(a|s,theta), разворачивать траектории, вычислять дисконтированный возврат G_t и выполнять градиентный подъём с функцией потерь -sum(log_prob * G_t). Вы увидели высокую дисперсию REINFORCE и узнали, как базовая оценка её уменьшает.
Часто задаваемые вопросы
Урок «Методы градиента политики: REINFORCE» бесплатный?
Да — полный текст урока «Методы градиента политики: REINFORCE» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Методы градиента политики: REINFORCE»?
Теорема о градиенте политики, алгоритм REINFORCE, вычитание базовой линии, уменьшение дисперсии Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Методы градиента политики: REINFORCE»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Методы градиента политики: REINFORCE
- Методы Actor-Critic (A2C)
- Проксимальная оптимизация политики (PPO)
- Пользовательские среды Gymnasium