[英]Loss Policy Gradient - Reinforcement Learning
我正在使用策略梯度來訓練我的網絡,並將損失定義為:
self.loss = -tf.reduce_mean(tf.log(OUTPUT_NN)* self.REWARDS))
self.opt = tf.train.AdamOptimizer(self.lr).minimize(self.loss)
我不明白的是,損失函數有時為正,有時為負。 我不明白信號中的這種翻轉。 對我來說,它應該始終為負,因為我在tf.reduce_mean.
前面有tf.reduce_mean.
例:
Train-> Reward: 0.257782, Hit Ration: 0.500564, True Positive: 0.433404, True Negative: 0.578182, loss: 6.698527
Train-> Reward: 0.257782, Hit Ration: 0.500564, True Positive: 0.433404, True Negative: 0.578182, loss: -11.804675
這可能嗎,或者我在代碼中做錯了什么?
謝謝。
無需贅述,您需要計算方程的梯度:
哪里 是在時間t采取的行動, 是t的狀態, 是t的折扣獎勵(或不折價給您)。
所以在時間t,你知道行動 ,您可以將其表示為一鍵編碼的向量,對嗎? 現在,如果您看損失的第一項:
這實際上是對數似然或交叉熵。 因此,您的等式應如下所示:
self.loss = -tf.reduce_mean(tf.multiply(tf.nn.softmax_cross_entropy_with_logits_v2(labels=ONE_HOT_ACTIONS, logits=OUTPUT_NN),REWARDS))
self.opt = tf.train.AdamOptimizer(self.lr).minimize(self.loss)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.