Алгоритм soft actor-critic (SAC) - безмодельный, онлайн, внеполитический, актерско-критический метод обучения подкреплению. Алгоритм SAC вычисляет оптимальную политику, которая максимизирует как долгосрочное ожидаемое вознаграждение, так и энтропию политики. Политическая энтропия является мерой политической неопределенности, учитывая состояние. Более высокая величина энтропии способствует большему исследованию. Максимизация как ожидаемого совокупного долгосрочного вознаграждения, так и энтропийного баланса и разработки и разведки окружающей среды.
Дополнительные сведения о различных типах агентов обучения усилению см. в разделе Агенты обучения усилению.
Реализация агента SAC в программном обеспечении Amphination Learning Toolbox™ использует два критика функции Q-value, что предотвращает переоценку функции value. В других реализациях алгоритма SAC используется критик функции дополнительного значения.
Агенты SAC могут обучаться в средах со следующими пространствами наблюдения и действий.
| Пространство наблюдения | Пространство действий |
|---|---|
| Дискретный или непрерывный | Непрерывный |
Агенты SAC используют следующие представления актера и критика.
| Критик | Актер |
|---|---|
Критик Q (S, A) функции Q-value, созданный с помощью | Stochastic policy actor δ (S), который создается с помощью |
Во время обучения агент SAC:
Регулярно обновляет свойства актера и критика во время обучения.
Оценивает среднее и стандартное отклонение гауссова распределения вероятностей для пространства непрерывного действия, затем случайным образом выбирает действия на основе распределения.
Обновляет член веса энтропии, уравновешивающий ожидаемую доходность и энтропию политики.
Сохранение прошлого опыта с помощью буфера циклического опыта. Агент обновляет актера и критика, используя мини-партию переживаний, случайным образом отобранных из буфера.
Если UseDeterministicExploitation опция в rlSACAgentOptions имеет значение true действие с максимальной вероятностью всегда используется в sim и generatePolicyFunction. Это приводит к детерминированному поведению моделируемого агента и сгенерированной политики.
Для оценки политики и функции значения агент SAC поддерживает следующие аппроксиматоры функций:
Стохастический актер (S) - актер берёт наблюдение S и возвращает функцию плотности вероятности действия. Агент случайным образом выбирает действия на основе этой функции плотности.
Один или два Q-значения критики Qk (S, A) - критики принимают наблюдение S и действие A в качестве входных данных и возвращают соответствующее ожидание функции значения, которое включает в себя как долгосрочное вознаграждение, так и энтропию.
Один или два целевых критика Q 'k (S, A) - чтобы улучшить стабильность оптимизации, агент периодически обновляет целевых критиков на основе последних значений параметров критиков. Количество целевых критиков совпадает с количеством критиков.
При использовании двух критиков, Q1 (S, A) и Q2 (S, A), каждый критик может иметь различную структуру. Когда критики имеют одинаковую структуру, они должны иметь разные начальные значения параметров.
Для каждого критика Qk (S, A) и Q 'k (S, A) имеют одинаковую структуру и параметризацию.
После завершения обучения обученная оптимальная политика сохраняется в акторе (S).
Исполнитель в агенте SAC генерирует выходные данные среднего и стандартного отклонения. Чтобы выбрать действие, актёр сначала случайным образом выбирает неограниченное действие из гауссова распределения с этими параметрами. Во время обучения агент SAC использует неограниченное распределение вероятности для вычисления энтропии политики для данного наблюдения.
Если пространство действий агента SAC ограничено, исполнитель генерирует ограниченные действия, применяя операции tanh и масштабирования к неограниченному действию.

Можно создать агент SAC с представлениями актера и критика по умолчанию на основе спецификаций наблюдения и действий из среды. Для этого выполните следующие действия.
Создайте спецификации наблюдения для среды. Если у вас уже есть объект интерфейса среды, вы можете получить эти спецификации с помощью getObservationInfo.
Создание спецификаций действий для среды. Если у вас уже есть объект интерфейса среды, вы можете получить эти спецификации с помощью getActionInfo.
При необходимости укажите количество нейронов в каждом обучаемом слое или следует ли использовать рецидивирующую нейронную сеть. Для этого создайте объект параметра инициализации агента с помощью rlAgentInitializationOptions.
При необходимости укажите параметры агента с помощью rlSACAgentOptions объект.
Создание агента с помощью rlSACAgent объект.
Кроме того, можно создавать представления актера и критика и использовать эти представления для создания агента. В этом случае убедитесь, что входные и выходные размеры представлений актера и критика соответствуют соответствующим спецификациям действия и наблюдения среды.
Создание стохастического актера с помощью rlStochasticActorRepresentation объект. Для агентов SAC сеть актера не должна содержать tanhLayer и scalingLayer в среднем выходном тракте.
Создание одного или двух критиков с помощью rlQValueRepresentation объекты.
Укажите параметры агента с помощью rlSACAgentOptions объект.
Создание агента с помощью rlSACAgent объект.
Агенты SAC не поддерживают актеров и критиков, которые используют повторяющиеся глубокие нейронные сети в качестве аппроксиматоров функций.
Дополнительные сведения о создании актеров и критиков для аппроксимации функций см. в разделе Создание представлений политик и функций значений.
Агенты SAC используют следующий обучающий алгоритм, в котором они периодически обновляют свои модели актёра и критика и вес энтропии. Чтобы настроить алгоритм обучения, укажите параметры с помощью rlSACAgentOptions объект. Здесь K = 2 - число критиков, а k - индекс критиков.
Инициализируйте каждый критик Qk (S, A) случайными значениями параметров, и инициализируйте каждый целевой критик такими же случайными значениями параметров:
Инициализируйте актера λ (S) со случайными значениями параметров
Выполните теплое начало, выполнив последовательность действий в соответствии с исходной случайной политикой в (S). Для каждого действия сохраните опыт в буфере опыта. Чтобы указать количество действий разогрева, используйте NumWarmStartSteps вариант.
Для каждого шага времени обучения:
Для текущего наблюдения S выберите действие A, используя политику в (S).
Выполнить действие A. Наблюдать награду R и следующее наблюдение S '.
Сохраните опыт (S, A, R, S ') в буфере опыта.
Выборка случайной мини-партии M опытов (Si, Ai, Ri, S 'i) из буфера опыта. Чтобы задать M, используйте MiniBatchSize вариант.
Каждые временные шаги DC обновляют параметры каждого критика, минимизируя потери Lk во всех отобранных переживаниях. Чтобы указать DC, используйте CriticUpdateFrequency вариант.
Ai 'startQk)) 2
Если S 'i является терминальным состоянием, целевой показатель yi функции значений равен вознаграждению Ri за опыт. В противном случае целевой функцией значения является сумма Ri, минимальное дисконтированное будущее вознаграждение от критиков и взвешенная энтропия H.
αH (λ (Si '| λ λ))
Здесь:
A 'i - это ограниченное действие, полученное из неограниченного выходного сигнала действующего лица (S' i).
γ - коэффициент дисконтирования, который задается с помощью DiscountFactor вариант.
H - это энтропия политики, которая вычисляется для неограниченного выхода актера.
α - вес настройки энтропии, который агент SAC настраивает во время обучения.
Каждые шаги времени DA обновляют параметры актера путем минимизации следующей целевой функции. Чтобы установить DA, используйте PolicyUpdateFrequency вариант.
(Si' startλ)))
Каждые шаги времени DA также обновляют вес энтропии путем минимизации следующей функции потери.
Здесь H '- целевая энтропия, которая задается с помощью EntropyWeightOptions.TargetEntropy вариант.
Каждый шаг DT обновляет целевые критики в зависимости от метода целевого обновления. Чтобы указать DT, используйте TargetUpdateFrequency вариант. Дополнительные сведения см. в разделе Методы целевого обновления.
Повторите шаги 4-8 раз NG, где NG - количество шагов градиента, которое задается с помощью NumGradientStepsPerUpdate вариант.
Агенты SAC обновляют параметры целевого критика, используя один из следующих методов целевого обновления.
Сглаживание (Smoothing) - обновляет параметры целевого критика на каждом временном шаге с использованием коэффициента сглаживания Чтобы задать коэффициент сглаживания, используйте TargetSmoothFactor вариант.
Periodic - периодически обновлять параметры целевого критика без сглаживания (TargetSmoothFactor = 1). Чтобы указать период обновления, используйте TargetUpdateFrequency параметр.
Qk)
Периодическое сглаживание - периодическое обновление целевых параметров сглаживанием.
Чтобы настроить целевой метод обновления, создайте rlSACAgentOptions и задайте TargetUpdateFrequency и TargetSmoothFactor как показано в следующей таблице.
| Метод обновления | TargetUpdateFrequency | TargetSmoothFactor |
|---|---|---|
| Сглаживание (по умолчанию) | 1 | Менее 1 |
| Периодический | Больше 1 | 1 |
| Периодическое сглаживание | Больше 1 | Менее 1 |
[1] Хаарноджа, Туомас, Аурик Чжоу, Кристиан Хартикайнен, Джордж Такер, Сехун Ха, Цзе Тан, Викаш Кумар и др. «Алгоритмы и приложение мягкого актера-критика». Препринт, представлен 29 января 2019 года. https://arxiv.org/abs/1812.05905.
rlSACAgent | rlSACAgentOptions