繁体   English   中英

强化学习中的负面奖励

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

请帮我回答下一个问题:

  1. 交叉熵函数可以从0-> inf产生输出。 对?
  2. Tensorflow优化器通过绝对值最小化损失(不关心符号,完美损失始终为0)。 对?
  3. 如果陈述2是正确的,则损失7.234与-7.234同样糟糕。 对?
  4. 如果上面的一切都是正确的,那么负奖励如何告诉机器它是坏的,而正向告诉机器它是好呢?

我也阅读了这个答案 ,但是我仍然没有弄清到底为什么负面比正面糟糕的想法。 像这样对我来说更有意义:

 loss = tf.reduce_sum(tf.pow(cross_entropies, reward)) 

但是那个实验进行得并不顺利。

  1. 交叉熵函数可以从0-> inf产生输出。 对?

是的,只是因为我们将其乘以-1。 思考log(p)的自然符号。 由于p是概率(即介于0和1之间),因此log(p)的范围是(-inf,0]。

  1. Tensorflow优化器通过绝对值最小化损失(不关心符号,完美损失始终为0)。 对?

不,标志很重要。 它对所有损失进行了总结,并保留了完整的迹象。

  1. 如果陈述2是正确的,则损失7.234与-7.234同样糟糕。 对?

参见下文,就增加奖励而言,损失7.234比损失-7.234更好。 总体正损失表明我们的代理商正在做出一系列明智的决定。

  1. 如果上面的一切都是正确的,那么负奖励如何告诉机器它是坏的,而正向告诉机器它是好呢?

标准化奖励以在强化学习中产生回报,这很好地说明了已签署的奖励可以控制渐变的大小。 正/负奖励为渐变大小执行“平衡”操作。 这是因为来自较大损失的巨大梯度将导致权重发生较大变化。 因此,如果您的代理犯下的错误与其正确执行的错误一样多,则该批次的总体更新不应太大。

“ Tensorflow优化器通过绝对值来最小化损耗(不关心符号,完美损耗始终为0)。对吗?”

错误。 最小化损失意味着试图获得尽可能小的值。 也就是说,-100比0“好”。因此,-7.2比7.2好。 因此,除了设置许多损失函数以使0决定“最佳”值之外,值0实际上没有任何特殊意义。 但是,这些损失函数通常设置为非负值,因此不会出现正值与负值的问题。 例子是交叉熵,平方误差等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM