Это часть моих постов RL-series.

В последнем посте мы говорили о REINFORCE и градиентах политики. Мы увидели, что дисперсия в градиентах стандартной политики и REINFORCE велика, и мы можем уменьшить эту дисперсию, вычитая базовую линию из G. Эта базовая линия может быть функцией значения и изучаться с помощью градиентного спуска. Я думаю, мы можем вызвать функцию преимущества rescaler G-V (на самом деле это оценка преимущества). В REINFORCE мы обновляем политику и функции значений после каждого эпизода и вычисляем накопленное вознаграждение в этом эпизоде. Пока мы не используем функцию усвоенных ценностей в качестве критика, это еще не актер-критик. Здесь мы хотим поговорить о семействе алгоритмов, которое дает нам возможность обновлять нашу политику и функции значений на каждом временном шаге или каждом временном шаге N. Мы не ограничены ожиданием конца серии. Мы также используем функцию усвоенных ценностей как критик. Это означает, что мы используем бутстрэппинг (оценку значения на основе значений следующих состояний). Я думаю, что следующая часть из книги Саттона и Барто может помочь нам лучше понять эту концепцию:

Хотя метод REINFORCE-with-baseline изучает как политику, так и функцию значения состояния, мы не считаем его методом «субъект-критик», потому что его функция значения состояния используется только как базовый уровень, а не как критик. То есть он не используется для самонастройки (обновления оценки значения для состояния из оцененных значений последующих состояний), а только в качестве базовой линии для состояния, оценка которого обновляется. Это полезное различие, поскольку только посредством бутстрепинга мы вводим смещение и асимптотическую зависимость от качества приближения функции. Как мы видели, предвзятость, вызванная самозагрузкой и зависимостью от представления состояния, часто бывает полезной, поскольку снижает дисперсию и ускоряет обучение. REINFORCE с базовой линией является беспристрастным и будет асимптотически сходиться к локальному минимуму, но, как и все методы Монте-Карло, он имеет тенденцию к медленному обучению (дает оценки с высокой дисперсией) и неудобен для реализации в режиме онлайн или для постоянных проблем. Как мы видели ранее в этой книге, с помощью методов временной разницы мы можем устранить эти неудобства, а с помощью многошаговых методов мы можем гибко выбирать степень начальной загрузки. Чтобы получить эти преимущества в случае методов градиента политики, мы используем методы «субъект – критик» с критиком самонастройки.

Вот и отправная точка для семьи актеров и критиков. Используя функцию значения в качестве критика и функцию преимущества в качестве масштабатора градиента, мы получим преимущество актер-критик или A2C.

Есть еще одна версия актеров-критиков, называемая A3C, что расшифровывается как Asynchronous Advantage Actor-Critic. В этом методе есть несколько параллельных агентов, взаимодействующих со своей собственной средой (например, могут быть реализованы и работать на нескольких ядрах ЦП). Вот sudo-код для этого алгоритма из статьи:

А вот высокоуровневая архитектура для A3C:

Здесь у нас есть одна глобальная сеть, n рабочих и n сред. У рабочих есть свои уникальные параметры. Они взаимодействуют со своей средой, а затем собирают некоторые данные. Затем вычислите d_theta, используя их собственные уникальные параметры. Затем в какой-то момент они отправляют этот градиент в глобальную сеть, и она обновляет свой вес, используя:

theta = prev_theta + alfa * d_theta → d_theta от одного из рабочих, а alfa - скорость обучения

После обновления весов глобальной сети рабочий, который отправляет d_theta в глобальную сеть, получит обновленные веса и снова начнет взаимодействовать со своей собственной средой. Затем в какой-то другой момент другой воркер сделает то же самое и отправит вычисленное значение d_theta в глобальную сеть, и он обновит свои веса (веса содержат информацию о предыдущем воркере), а работник обновит свои веса новыми весами из глобального сеть. То же самое и с остальными n-2 рабочими. Как видите, все асинхронно. Мы используем функцию преимущества во всех вышеупомянутых процедурах. Мы также используем функцию ценности как критику. Этот А3С !! Фаза обновления глобальной сети и работников не совпадают. Изображения ниже могут помочь лучше понять концепцию:

Поговорим о синхронной версии А3С !! Так что один А будет удален! A2C !! снова!! Актер-критик синхронного преимущества. Здесь мы будем использовать тот же подход, что и A3C, но синхронно. Каждый воркер вычислит свой d_theta и отправит его в глобальную сеть. Глобальная сеть будет ждать, пока все рабочие не выдадут свои d_theta и усреднят их, а затем обновит свои веса. Затем все рабочие получают новые веса и снова приступают к работе. Здесь у нас всегда будут одинаковые веса для всех рабочих.

Чтобы сравнить производительность A2C и A3C, мы можем обратиться к следующим абзацам из публикации OpenAI:

После прочтения статьи исследователи искусственного интеллекта задались вопросом, привела ли асинхронность к повышению производительности (например, «возможно, добавленный шум обеспечит некоторую регуляризацию или исследование?»), Или же это была просто деталь реализации, которая позволила ускорить обучение с помощью процессора на базе ЦП. выполнение.

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

Наша синхронная реализация A2C работает лучше, чем наши асинхронные реализации - мы не видели никаких доказательств того, что шум, создаваемый асинхронностью, обеспечивает какое-либо преимущество в производительности. Эта реализация A2C более рентабельна, чем A3C при использовании компьютеров с одним графическим процессором, и быстрее, чем реализация A3C только для ЦП при использовании более крупных политик.

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

Вот несколько ресурсов, чтобы узнать больше: