我知道实现策略梯度的巧妙技巧(请参阅他的参考文献:Reinforcement learning)。具体而言,分类交叉熵定义为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)
的概率。
但是,当输出的类别很大时(例如,在机器翻译或语言建模中),我根本无法使用keras中的to_categorical(output, num_classes=output_class)
函数将输出首先转换为一个热向量。
因此,我无法应用技巧来计算p_a
。
那么在这种情况下如何实施政策梯度?
我希望我能清楚地提出问题!