Давайте изучим эту эволюцию.

УКРЕПИТЬ

Давайте посмотрим на этот алгоритм.

Параметр

У нас есть среда и агент, который использует нейронную сеть. Кроме того, пространство для действий

конечно и дискретно. На вход нейронная сеть получает состояние среды и выводит вероятности действий. Пусть π(a, s) — вероятность выполнения действия a в состоянии s. Итак, схема агента/нейронной сети выглядит так

Итак, нейронная сеть описывает нашу политику π нашего агента, а политика π зависит от параметров сети θ; поэтому мы пишем π_θ, если хотим подчеркнуть эту связь.

Вначале нейронная сеть инициализируется случайным образом, поэтому и политика случайна. Наш агент должен узнать, что такое хорошо и что такое плохо. Для этого используем алгоритм.

Алгоритм REINFORCE

Это алгоритм, основанный на политике, и мы хотим напрямую улучшить политику (и, следовательно, нейронную сеть). Это означает, что мы хотим увеличить общую награду за эпизод, изменив параметры нейронной сети θ. Для этого мы можем максимизировать ожидаемый дисконтированный доход для начальных состояний.

Хорошо, что это значит для нашего алгоритма?

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

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

Напомним: дисконтированная доходность для нашей траектории определяется как

для k=0, 1, …, n-1, и 0 ≤ γ ≤ 1 — коэффициент дисконтирования.

Таким образом, максимизация дисконтированного дохода для начального состояния означает максимизацию функции

по всем возможным траекториям, настраивая параметры сети θ.

Для нашей траектории дисконтированная доходность — это просто сумма

Хорошо, но как нам обучить нашу сеть?

Основная идея REINFORCE заключается в том, что мы хотим улучшить использование хороших действий и сократить использование плохих действий. Но что такое хорошее/плохое действие?

Для этого мы смотрим на нашу траекторию τ и вычисляем все дисконтированные доходы G_k для k=0, …, n-1. Затем мы вычисляем среднее значение всех G_k

и вычесть его из всех G_k

и поэтому мы получаем новое значение. Мы называем b базовым уровнем.

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

для каждого t = 0,…,n-1. Поэтому потери

Это алгоритм REINFORCE.

Одна слабость REINFORCE

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

Актер-критик

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

как потеря. Теперь мы хотим оценивать каждый переход независимо от его траектории, это означает, что нам нужно заменить базовую линию b чем-то лучшим; с чем-то, что зависит от состояния… например, функцией-значением V. Кроме того, вознаграждение со скидкой G_t также зависит от траектории. Чтобы исправить это, мы просто заменим его функцией качества Q. С учетом всего этого получаем следующее:

(Имейте в виду, что у нас есть V(s)=0, если s является конечным состоянием.) Уравнение

называется преимуществом. По этой причине Актер-Критик также называется Выгодный Актер-Критик и сокращенно A2C.

Итак, нам нужна функция-ценность… но мы ее не знаем!

Это правда! У нас нет функции ценности, но это не проблема для нас. Мы можем просто использовать другую нейронную сеть для аппроксимации функции ценности V. Итак, у нас есть две нейронные сети, одна для нашей политики, а другая для нашей функции ценности. Политическая сеть — это актер, потому что она определяет, как действовать; новая сеть оценивает это действие и поэтому называется критиком.

Как обновить параметры

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

Обозначим через θ_w параметры сети актера и θ_v параметры сети критика. Пусть (s, a, r, s’) — переход. Мы хотим обновлять сеть актора, как указано выше, для каждого перехода, это означает:

Но мы не знаем истинного преимущества A(s, a). Таким образом, мы аппроксимируем его, используя переход. Мы рассчитываем

где V является сетью критиков. (V(s’)=0ifs’является конечным состоянием.) Тогда мы получаем

так как наше обновление и потеря за один переход составляет

Критическое обновление просто обновляет аппроксимацию функции ценности. Давайте обсудим, как это делается и почему это делается именно так.

Прежде всего, определение функции цены. Стоимость состояния равна его ожидаемой дисконтированной доходности:

Имея это в виду, мы легко можем вспомнить уравнение Беллмана для функции цены:

p_{a,s →s'} — вероятность перехода из состояния s в s'. Это также зависит от нашей политики и может быть записано как p_{a, s → s'} = p(s'|s, π(s)).

Если мы используем партии для аппроксимации V (s) с помощью аппроксимации Монте-Карло, мы получаем следующее:

Если у нас есть только один переход (s, a, r, s’) в виде пакета, мы получаем

как результат. Итак, мы хотим, чтобы левая сторона была (почти) равна правой стороне. Поэтому мы выбрали

как проигрыш (за один переход). В обновлении актера мы использовали аппроксимацию преимущества:

Имейте в виду, что Δ зависит от параметров θ_v. Кроме того, V(s’)=0, если s’ является конечным состоянием.

Учитывая это приближение, этот проигрыш более или менее равен выигрышу в степени двойки, и мы получаем:

Тогда обновление

Надеюсь, теперь понятно, как происходила эволюция от REINFORCE к Актеру-Критику.

Как реализовать этот алгоритм

Теперь мы знаем настройку актера-критика и как обновлять параметры. Давайте кратко рассмотрим полный алгоритм. Обозначим через V аппроксимацию функции ценности критика.

  1. Сыграйте N шагов в среде и сохраните переходы (например, в воспроизведении опыта).
  2. Для каждого перехода (s, a, r, s') вычислить «выгоду» в зависимости от нашего критика и установить V(s')=0, если s' является конечным состоянием:

3. Рассчитайте потери актера и критика для каждого перехода:

4. Суммируйте потери актера и потери критика соответственно.

5. Сделайте шаг оптимизатора для актера и для критика.

6. Повторяйте до схождения.

И все! Спасибо, что прочитали!