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

Естественно, есть много способов, которыми агент может создать алгоритм для этого. Например, алгоритм может научиться аппроксимировать ожидаемое вознаграждение с учетом конкретной политики и оптимизировать свою политику, чтобы максимизировать вознаграждение. С другой стороны, алгоритм может попытаться понять ценность пребывания в определенном состоянии и продолжать выбирать действия для достижения состояний с высокой ценностью.

Давайте углубимся в эти подходы.

Предварительная информация

Небольшое примечание о предстоящих нотациях — в обучении с подкреплением мы обычно используем цепи Маркова, в которых результат текущего состояния не зависит ни от чего, что произошло ранее. Мы представляем состояние как s, действие как a, вознаграждение как r и политику, которую использует агент, как π .

В RL у нас также есть понятие V(s), которое представляет собой «значение» определенного состояния s. Значение s,с учетом использования политики π, представляет собой ожидаемый доход после перехода в состояние s с использованием политика π. Мы говорим, что π(a|s) — это вероятность совершения действия a в состоянии s при текущей политике π.

Точно так же существует также Q(s, a), которое является «значением Q» конкретной пары (состояние, действие) (s, a). Это ожидаемый доход после достижения состояния s, принятия решения об использовании действия a,и следования политике πвыбора действий. после этого.

Наконец, мы объединяем Q(s, a) и V(s), чтобы создать A(s, a), который представляет собой Q(s, a) — V(s) . A(s, a) называется функцией преимущества, которая интуитивно говорит нам о том, что лучше предпринять действие в состоянии s, чем просто использовать базовую политику в этом состоянии.

Теперь мы готовы поговорить о некоторых алгоритмах!

Ванильный градиент политики

В ванильном градиенте политики мы напрямую пытаемся обновить параметры нашей политики, чтобы оптимизировать вознаграждение. Идея ванильного градиента политики так же проста, как «если действие a в состоянии s приносит большее вознаграждение, чем то, что я имею в настоящее время, имейте это в виду и увеличьте вероятность выполнения действие aв следующий раз, когда я достигну состояния s».

Это утверждение в математике выглядит как этот градиент:

Здесь мы видим, что если действие, которое мы предприняли, было выгодным (A_t положительное), то градиент перемещается, чтобы увеличить вероятность выполнения этого действия в состоянии s_t в следующий раз. .

В градиенте политики мы многократно берем пакеты данных, собранные от агента, и используем этот градиент для обновления политики.

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

В PPO мы используем следующее соотношение вероятностей, чтобы помочь нам:

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

Здесь мы видим, что если преимущество положительное, мы в конечном итоге меняем параметры политики, чтобы действие было более вероятным. Благодаря математической эффективности и простоте, PPO работает с этим соотношением.

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

Это выглядит довольно пугающе, но на самом деле это просто ограничитель. Во-первых, в PPO эпсилон выбирается равным примерно 0,2. Оператор «clip» говорит, что если r меньше 1-eps, то установить r = 1-eps. Аналогично верхняя граница r составляет 1 + eps.

Затем берется минимум между усеченным термином, умноженным на преимущество, и обычным r*Advantage. Таким образом мы ограничиваем величину ожидания (оно никогда не будет слишком отрицательным или слишком положительным). Наша политика не начнет сходить с ума от изменений.

Хорошо! Надеюсь, теперь целевая функция PPO имеет смысл. Вот псевдокод, который объединяет все это.

Здесь мы видим, что для каждой итерации у нас есть N шагов исследования с нашей текущей политикой, и мы выясняем преимущества каждого из предпринятых нами шагов (A(s,a)). Затем мы просматриваем пакет данных, полученных в результате наших прошлых исследований (включая исследования предыдущих итераций), и выполняем градиентный спуск, чтобы оптимизировать нашу политику, используя цель, которую мы определили ранее!