[英]Negative reward in reinforcement learning
我无法解决这个问题: 消极奖励到底如何帮助机器规避它们?
问题的根源来自谷歌针对Pong游戏的解决方案 。 按照他们的逻辑,一旦游戏结束(座席获胜或输掉积分),环境就会返回奖励(+1或-1)。 任何中间状态都将返回0作为奖励。 这意味着每次赢/输都会返回[0,0,0,...,0,1]或[0,0,0,...,0,-1]奖励数组。 然后他们打折并标准化奖励: #rwd - array with rewards (ex. [0,0,0,0,0,0,1]), args.gamma is 0.99 prwd = discount_rewards(rwd, args.gamma) prwd -= np.mean(prwd) prwd /= np.std(prwd)
discount_rewards假设是某种标准函数,可以在此处找到 impl。 获胜(+1)的结果可能是这样的:
[-1.487 , -0.999, -0.507, -0.010, 0.492, 0.999, 1.512]
对于松散(-1):
[1.487 , 0.999, 0.507, 0.010, -0.492, -0.999, -1.512]
结果,每一步都得到了回报。 他们的损失函数如下所示:
loss = tf.reduce_sum(processed_rewards * cross_entropies + move_cost)
请帮我回答下一个问题:
我也阅读了这个答案 ,但是我仍然没有弄清到底为什么负面比正面糟糕的想法。 像这样对我来说更有意义:
loss = tf.reduce_sum(tf.pow(cross_entropies, reward))
但是那个实验进行得并不顺利。
是的,只是因为我们将其乘以-1。 思考log(p)的自然符号。 由于p是概率(即介于0和1之间),因此log(p)的范围是(-inf,0]。
不,标志很重要。 它对所有损失进行了总结,并保留了完整的迹象。
参见下文,就增加奖励而言,损失7.234比损失-7.234更好。 总体正损失表明我们的代理商正在做出一系列明智的决定。
标准化奖励以在强化学习中产生回报,这很好地说明了已签署的奖励可以控制渐变的大小。 正/负奖励为渐变大小执行“平衡”操作。 这是因为来自较大损失的巨大梯度将导致权重发生较大变化。 因此,如果您的代理犯下的错误与其正确执行的错误一样多,则该批次的总体更新不应太大。
“ Tensorflow优化器通过绝对值来最小化损耗(不关心符号,完美损耗始终为0)。对吗?”
错误。 最小化损失意味着试图获得尽可能小的值。 也就是说,-100比0“好”。因此,-7.2比7.2好。 因此,除了设置许多损失函数以使0决定“最佳”值之外,值0实际上没有任何特殊意义。 但是,这些损失函数通常设置为非负值,因此不会出现正值与负值的问题。 例子是交叉熵,平方误差等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.