簡體   English   中英

損失政策梯度-強化學習

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM