【问题标题】:Policy gradient (REINFORCE) diverging when finding the shortest path in a graph with negative rewards在具有负奖励的图中找到最短路径时,策略梯度 (REINFORCE) 会发散
【发布时间】:2020-03-26 08:36:11
【问题描述】:

我想使用策略梯度在网络中的一组节点中找到最短路径。
网络使用带有标记为值 -1 的边的图表示。
现在,负值最接近 0 的路径是最短路径。
因此,我使用梯度下降来更新策略参数。

这是 TensorFlow 中的更新规则。

self.cross_entropy = tf.nn.softmax_cross_entropy_with_logits_v2(labels = self.outputTrue, logits = self.outputPred)
self.cerd = tf.tensordot(self.cross_entropy, self.reward, axes=1)
self.meanCEloss = self.cerd/tf.cast(BS,tf.float32) # BS is the batch size.
self.train_step = tf.train.AdamOptimizer(1e-4).minimize(self.meanCEloss)

但是,在运行代码后,self.meanCEloss 会不断向负无穷大减小,直到发生下溢。
损失评估需要做哪些改变才能解决问题?

【问题讨论】:

    标签: python-3.x tensorflow shortest-path reinforcement-learning policy-gradient-descent


    【解决方案1】:

    乘以 -1 然后最小化。这样,它会尝试找到得分最少的路径:最短的浴缸。您正在做的是无限地最小化负项,这将变为 -∞。

    【讨论】:

    • 如果我将 self.meanCEloss 乘以 -1,那么它将所有奖励转换为正值,现在模型将尝试最大化奖励并找到最长路径。
    • 你正在实现的是梯度下降,而不是梯度上升。
    • 最大化对数似然等效于最小化交叉熵损失。因此,通过平方或取绝对值将奖励转换为正值将找到最长的路径而不是最短的路径。
    • 如果你的奖励是积极的,那是真的。
    • 请看这个解释:youtu.be/bRfUxQs6xIM (33:11)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 2019-02-15
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多