В этом руководстве TensorFlow для метода Actor-Critic потери актера рассчитываются с помощью следующую формулу:
Код: Выделить всё
advantage = returns - values
action_log_probs = tf.math.log(action_probs)
actor_loss = -tf.math.reduce_sum(action_log_probs * advantage)
Насколько я понимаю, action_log_probs всегда имеет отрицательное значение.
Тогда формула меня смущает, потому что умножение tf.math.reduce_sum(action_log_probs * преимущество) значение -1 означает, что когда преимущество положительное, значение act_loss становится положительным. Предполагая, что чем выше преимущество, тем лучше, минимизация act_loss позволит скорректировать параметры так, чтобы минимизировать вероятность действий, приносящих более высокие награды.
Преимущество всегда отрицательно, и меньшее преимущество лучше?
Я запустил код и распечатал преимущество с помощью tf.print('advantage: ', Advantage), который показал, что преимущество всегда отрицательно.
Не могли бы вы объяснить, почему преимущество отрицательное и почему меньшее преимущество лучше?< /p>
Изображение рисунка, показывающего значения преимущества за последние 500 шагов финального эпизода.
Подробнее здесь: https://stackoverflow.com/questions/787 ... plied-by-1