Как настроить функцию потерь в PyTorch для Soft-Actor-Critic

Я пытаюсь реализовать настраиваемую функцию потерь для алгоритма мягкого Q-обучения, алгоритма градиента политики «актер-критик» в PyTorch. Это взято из следующего документа Уроки несовершенных демонстраций. Структура алгоритма аналогична глубокому q-обучению в том, что мы используем сеть для оценки Q-значений, и мы используем целевую сеть для стабилизации результатов. Однако, в отличие от DQN, мы вычисляем V (s) из Q (s) следующим образом:

введите описание изображения здесь

Это достаточно просто вычислить с помощью PyTorch. Мой главный вопрос связан с тем, как настроить функцию потерь. Часть уравнения обновления выражается как:

введите описание изображения здесь

Обратите внимание, что Q_hat поступает из целевой сети. Как я могу поместить что-то подобное в функцию потерь? Я могу вычислить значения для V и Q, но как я могу обрабатывать градиенты в этом случае? Если кто-нибудь может указать мне на аналогичный пример, я был бы очень признателен.


person Kyle    schedule 19.11.2019    source источник


Ответы (1)


Это оказывается довольно простым, если предположить, что вы можете вычислить V, Q и Q ^. Обсудив это с некоторыми людьми в автономном режиме, я смог заставить pytorch рассчитать эту потерю, настроив его как:

loss = (Q-V)*(Q-Q_hat).detach()
optimizer.zero_grad()
loss.backward()
optimizer.step()
person Kyle    schedule 06.01.2020