Мне известен этот хитрый способ реализации градиента политики (см. Его для справки: Обучение усилению ).В частности, определяется категориальная кросс-энтропия H(p, q) = sum(p_i * log(q_i))
.Для предпринятых действий a
мы можем установить p_a = advantage * [index of action a in 1-hot-vector representation]
.Между тем, q_a
является выходом сети политики, которая представляет собой вероятность совершения действия a
, то есть policy(s, a)
.
Однако, когда классы вывода огромны (например, как в машинеперевод или языковое моделирование), я просто не могу сначала преобразовать вывод в один горячий вектор, используя функцию to_categorical(output, num_classes=output_class)
в кератах.
Из-за этого я не могу применить трюк для вычисления p_a
.
Итак, как реализовать градиент политики в этом случае?
Надеюсь, я четко сформулирую свой вопрос!