我无法缠绕问题:确切的负奖励如何帮助机器避免使用?
这个问题的起源来自Google的Game 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假设是某种标准功能,可以在此处找到。Win( 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)
请帮助我回答下一个问题:
- 交叉熵功能可以从0-> INF产生输出。对吗?
- TensorFlow优化器通过绝对值最大程度地减少损失(不在乎符号,完美损失始终为0)。对吗?
- 如果说明2是正确的,则损失7.234同样糟糕的是-7.234。对吗?
- 如果上述所有内容都正确,那么负面的奖励是如何告诉机器不好的,并且正面告诉机器很好?
我也阅读了这个答案,但是我仍然没有设法获得想法的正是为什么负面比正更糟。拥有类似的东西对我来说更有意义。
loss = tf.reduce_sum(tf.pow(cross_entropies, reward))
但是该实验进展不顺利。
- 交叉熵功能可以从0-> INF产生输出。对吗?
是的,只是因为我们将其乘以-1。思考日志的自然迹象(p)。由于p是概率(即0和1之间),log(p)范围为(-inf,0]。
- 张量优化器最大程度地减少了绝对值(不在乎符号,完美损失始终为0)。对吗?
nope,标志很重要。它完整地总结了所有损失。
- 如果说明2是正确的,则损失7.234与-7.234同样糟糕。对吗?
见下文,就增加奖励而言,损失7.234远胜于-7.234的损失。总体积极损失表明我们的代理商正在做出一系列好的决定。
- 如果上述所有内容都是正确的,那么负面奖励是如何告诉机器不好的,而正面的肯定告诉机器很好?
将奖励归一化以产生增强学习中的回报,这是一个很好的观点,即签名的奖励在那里控制梯度的大小。正/负奖励对梯度大小执行"平衡"行为。这是因为大损失的巨大梯度会导致重量的巨大变化。因此,如果您的代理商犯了尽可能多的错误,则该批次的总体更新不应很大。
" TensorFlow优化器最小化的绝对值(不关心标志,完美损失总是0)。对吗?"
错误。最大程度地减少损失意味着要实现尽可能小的值。也就是说,-100比0好。相应地,-7.2大于7.2。因此,0的值确实没有特殊的意义,除了设置许多损失函数以使0确定"最佳"值的事实。但是,这些损失函数通常被设置为非负值,因此不会出现正值和负值的问题。示例是交叉熵,平方错误等。