Говоря об алгоритме градиента политики (PG)

обучение с подкреплением

Эта статья была впервые опубликована на:Уокер ИИ

Оптимизация политик — это большой класс алгоритмов обучения с подкреплением, и его основная идея отличается от алгоритмов, основанных на ценности. Поэтому многие учебники делят RL без моделей на две категории: оптимизация политик и основанная на ценности. Эта серия блогов будет ссылаться на вводное руководство, опубликованное OpenAI.Spinning Up 1, Серия Spinning Up — очень хороший учебник для начала работы с оптимизацией политик, особенно для новичков. Алгоритм Policy Gradient (Policy Gradient, PG для краткости) является основной концепцией оптимизации политики В этой главе мы начнем с простейшего вывода PG и шаг за шагом раскроем тайну алгоритма оптимизации политики.

1. Интуитивное понимание

Если выразить одним предложениемградиент политикиИнтуитивное объяснение , то есть «если действие увеличивает итоговое вознаграждение, то вероятность этого действия увеличить, и наоборот, уменьшить вероятность этого действия». Это предложение выражает два значения:

  • Мы рассматриваем влияние действий на доходность, а не состояние или другие факторы.
  • Мы корректируем вероятность действия, а не присваиваем счет действию, что отличается от алгоритмов, основанных на ценности.

2. Вывод градиента политики

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

  • максимизировать функцию вознаграждения

Мы представляем нашу политику с параметризованной нейронной сетьючисло Пиθ\pi_\theta, то наша цель может быть выражена как корректировкаθ\theta, так чтоожидаемое возвращениемаксимум, выраженный формулой:

J(число Пиθ)=E[число ПитR(т)](1)J(\pi_\theta)=E\underset{\pi \sim \tau}[R(\tau)] ---(1)

В формуле (1)т\tauПредставляет полный путь от начала до конца. Обычно для задач максимизации мы можем использовать алгоритм градиентного восхождения, чтобы найти максимальное значение.

θ*=θ+альфаJ(число Пиθ)(2)\theta^*=\theta + \alpha\nabla J(\pi_\theta) ---(2)

Для того, чтобы шаг за шагом получить оптимальные параметры, нам нужно получитьθJ(число Пиθ)\nabla_{\theta} J\left(\pi_{\theta}\right), а затем используйте алгоритм градиентного восхождения.Основная идея так проста.

  • градиент политики

Главное - искать конечноефункция возвратаJ(число Пиθ)J(\pi_\theta)оθ\thetaГрадиент , этоградиент политики(градиент политики), алгоритм, который решает проблемы RL путем оптимизации градиента политики, называетсяАлгоритм градиента политики, наши общие PPO и TRPO относятся к алгоритму градиента политик. Далее наша цель состоит в том, чтобы расширить формулу (2) шаг за шагом.Основная часть формулы (2)θJ(число Пиθ)\nabla_{\theta} J\left(\pi_{\theta}\right), который также является ядром этого блога.

θJ(число Пиθ)=θEтчисло Пиθ[R(т)](3)\nabla_{\theta} J\left(\pi_{\theta}\right) = \nabla_{\theta} \underset{\tau \sim \pi_{\theta}}{\mathrm{E}} [R(\tau)] ---(3)
=θтP(тθ)R(т)(4)=\nabla_{\theta} \int_{\tau} P(\tau \mid \theta) R(\tau) \quad ---(4)
=тθP(тθ)R(т)(5)=\int_{\tau} \nabla_{\theta} P(\tau \mid \theta) R(\tau) \quad ---(5)
=тP(тθ)θlogP(тθ)R(т)(6)=\int_{\tau} P(\tau \mid \theta) \nabla_{\theta} \log P(\tau \mid \theta) R(\tau) ---(6)
=Eтчисло Пиθ[θlogP(тθ)R(т)](7)=\underset{\tau \sim \pi_{\theta}}{\mathrm{E}}\left[\nabla_{\theta} \log P(\tau \mid \theta) R(\tau)\right] ---(7)

В приведенном выше выводе используется метод логарифмического вывода:logx\log xоxxПроизводная от1x\frac{1}{x}. Таким образом, мы можем получить следующую формулу:

θP(тθ)=P(тθ)θlogP(тθ)(8)\nabla_{\theta} P(\tau \mid \theta)=P(\tau \mid \theta) \nabla_{\theta} \log P(\tau \mid \theta) ---(8)

Поэтому есть только формулы (5)-(6), а дальше будем расширять формулу (7), в основном доθlogP(тθ)\nabla_{\theta} \log P(\tau \mid \theta)Расширять. Первый взглядP(тθ)P(\tau \mid \theta)

P(тθ)=р0(s0)t=0TP(st+1st,at)число Пиθ(atst)(81)P(\tau \mid \theta)=\rho_{0}\left(s_{0}\right) \prod_{t=0}^{T} P\left(s_{t+1} \mid s_{t}, a_{t}\right) \pi_{\theta}\left(a_{t} \mid s_{t}\right) ---(8-1)

Добавьте журнал, чтобы превратить умножение в сложение:

logP(тθ)=logр0(s0)+t=0T(logP(st+1st,at)+logчисло Пиθ(atst))(82)\log P(\tau \mid \theta)=\log \rho_{0}\left(s_{0}\right)+\sum_{t=0}^{T}\left(\log P\left(s_{t+1} \mid s_{t}, a_{t}\right)+\log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right) ---(8-2)

Вычислить градиент логарифмической функции и округлить некоторые константы:

θlogP(тθ)=θlogр0(s0)+t=0T(θlogP(st+1st,at)+θlogчисло Пиθ(atst))\nabla_{\theta} \log P(\tau \mid \theta) = \cancel{\nabla_{\theta} \log \rho_{0}\left(s_{0}\right)} + \sum_{t=0}^{T}\left(\cancel{\nabla_{\theta} \log P\left(s_{t+1} \mid s_{t}, a_{t}\right)} + \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right)\right)
=t=0Tθlogчисло Пиθ(atst)(9)=\sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) ---(9)

Следовательно, объединяя уравнение (7) и уравнение (9), мы получаем окончательное выражение

θJ(число Пиθ)=Eтчисло Пиθ[t=0Tθlogчисло Пиθ(atst)R(т)](10)\nabla_{\theta} J\left(\pi_{\theta}\right)=\underset{\tau \sim \pi_{\theta}}{\mathrm{E}}\left[\sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) R(\tau)\right] \quad ---(10)

Формула (10) является основным выражением алгоритма PG. Из этой формулы видно, что требуемый градиент политики на самом деле является ожиданием. Реализация конкретного проекта может использовать идею Монте-Карло для получения ожидания, то есть выборки Возьмите среднее значение, чтобы аппроксимировать ожидание. Собираем сериюD={тi}i=1,,N\mathcal{D}=\left\{\tau_{i}\right\}_{i=1, \ldots, N}, где каждая траектория является политикой, принятой агентомчисло Пиθ\pi_{\theta}Интерактивная выборка со средой, градиент политики может быть выражен как:

g^=1DтеDt=0Tθlogчисло Пиθ(atst)R(т)(11)\hat{g}=\frac{1}{|\mathcal{D}|} \sum_{\tau \in \mathcal{D}} \sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) R(\tau) ---(11)

в,D|\mathcal{D}|Указывает количество отобранных траекторий. Теперь, когда мы завершили процесс вывода подробного градиента политики, мы можем вздохнуть с облегчением, а следующая работа относительно проста, то есть на основе формулы (10) мы ее модифицируем.

Прежде чем делать простые модификации, давайте подытожим формулу (10), ведь эта формула является базовой формулой алгоритма PG:

  • По сравнению с нашими обычными алгоритмами обучения с учителем, мы все определяем функцию потерь, а затем функция потерь берет вывод параметров и использует алгоритм градиентного спуска для непрерывной минимизации потерь. Для алгоритма PG наша «функция потерь» на самом деле является логарифмом ожидаемой доходности, а наша цель — максимизировать ожидаемую доходность, поэтому здесь используется алгоритм градиентного восхождения.
  • В общих алгоритмах обучения с учителем распределения обучающих и тестовых выборок распределяются одинаково, а функция потерь получается из выборок с фиксированным распределением, которое не зависит от параметров, которые мы хотим оптимизировать. Однако для алгоритма PG имеемна основе существующих стратегийПроцесс выборки, стратегия другая, выборки, полученные путем выборки, разные, что приводит к большой разнице в окончательных расчетных потерях, что делает сеть легкой для переобучения, а о более продвинутом фреймворке Actor-Critic я расскажу позже. Используйте идею конфронтации, чтобы решить эту проблему.
  • Для общего контролируемого обучения чем меньше потеря, тем лучше, и потеря также является очень эффективным индикатором для оценки того, завершено ли обучение. Тогда для алгоритма PG «функция потерь» здесь не имеет большого значения, главным образом потому, что ожидаемая доходность здесь действует только на набор данных, сгенерированный текущей стратегией. Следовательно, это не означает, что модель работает лучше, когда потери уменьшаются.
  • Мы можем ввести формулуR(т)R(\tau)рассматривается какlogчисло Пиθ(atst)log\pi_\theta(a_t \mid s_t)Вес , когда награда мала, значит,sts_tдействоватьata_tЭффект плохой, уменьшитеsts_tв состоянииata_tНаоборот, если вознаграждение больше, вероятность действия будет увеличена, чтобы достичь цели выбора наиболее подходящего действия.

3. Улучшите функцию вознаграждения

Продолжаем соблюдать формулу (10), для формулы вR(т)R(\tau), представляющий собой возврат всей траектории, на самом деле необоснованно. Использование одного и того же вознаграждения для всех действий на траектории эквивалентно присвоению одинакового веса каждому действию на траектории. Очевидно, что действия в последовательности действий хороши или плохи, и все они берут одно и то же вознаграждение, которое не может достичь цели вознаграждения и наказания, Как бы это выразить?выполнить действие в определенном состоянииВозврат?

Более интуитивная идея состоит в том, что текущее действие повлияет на последующее состояние и получит мгновенное вознаграждение (вознаграждение), тогда нам нужно только использоватьСовокупный доход со скидкойДостаточно представить вознаграждение за текущее действие, которое выражается формулой как:

R^tt'=tTR(st',at',st'+1)(12)\hat{R}_{t} \doteq \sum_{t^{\prime}=t}^{T} R\left(s_{t^{\prime}}, a_{t^{\prime}}, s_{t^{\prime}+1}\right) ---(12)

Это называется наградой за вращение, поэтому уравнение (10) можно выразить следующим образом:

θJ(число Пиθ)=Eтчисло Пиθ[t=0Tθlogчисло Пиθ(atst)t'=tTR(st',at',st'+1)](13)\nabla_{\theta} J\left(\pi_{\theta}\right)=\underset{\tau \sim \pi_{\theta}}{\mathrm{E}}\left[\sum_{t=0}^{T} \nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \sum_{t^{\prime}=t}^{T} R\left(s_{t^{\prime}}, a_{t^{\prime}}, s_{t^{\prime}+1}\right)\right] ---(13)

Конечно, распределение веса с использованием вознаграждения на ходу все еще довольно элементарно.Мы можем использовать более продвинутый метод распределения веса, чтобы еще больше уменьшить дисперсию распределения вознаграждения.Из-за нехватки места мы поговорим о нем позже.

4. Резюме

В этой главе мы потратили много места, чтобы вывести основную формулу градиента политики (PG) и получили ключевое выражение (10). Понимание этой формулы очень поможет нам понять все семейство алгоритмов PG в будущем. Я надеюсь, что вы можете серьезно понять этот процесс вывода формулы.


PS: Для получения дополнительной технической галантереи, пожалуйста, обратите внимание на [Публичный аккаунт | xingzhe_ai] и обсудите с ходоками!


  1. OpenAI Spinning Up spinningup.openai.com/