Я понимаю обратное распространение в сетях градиентов политик, но не уверен, как работает с библиотеками, которые автоматически дифференцируются.
То есть, как они превращают это в проблему контролируемого обучения. Например, код ниже:
Y = self.probs + self.learning_rate * np.squeeze(np.vstack([gradients]))
Почему Y не является горячим вектором для предпринятых действий? Он вычисляет градиент, предполагая, что действие правильное, Y - горячий вектор. Затем он умножает его на награду в соответствующем временном шаге. Но во время тренировок он это кормит как коррекцию. Я думаю, ему лучше вместо этого умножить награды на один горячий вектор. https://github.com/keon/policy-gradient/blob/master/pg.py#L67