Реализация градиента политики при большом количестве выходных классов
Мне известен этот хитрый способ реализации градиента политики (см. Его для справки: обучение подкреплению). В частности, определяется категориальная кросс-энтропия 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
,
Так как же реализовать градиент политики в этом случае?
Надеюсь, я ясно сформулирую свой вопрос!