强化学习中的负面奖励

我无法理解这个问题:负面奖励究竟是如何帮助机器避免它们的?

这个问题源自于谷歌针对Pong游戏的解决方案。根据他们的逻辑,一旦游戏结束(代理赢得或输掉一分),环境会返回奖励(+1或-1)。任何中间状态的奖励为0。这意味着每次赢或输都会返回[0,0,0,…,0,1]或[0,0,0,…,0,-1]的奖励数组。然后他们对奖励进行折扣和标准化:

#rwd - 奖励数组(例如 [0,0,0,0,0,0,1]),args.gamma 为 0.99prwd = discount_rewards(rwd, args.gamma)prwd -= np.mean(prwd)prwd /= np.std(prwd)

discount_rewards 应该是一种标准函数,其实现可以在这里找到。赢得比赛(+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到无穷大的输出,对吗?
  2. Tensorflow优化器通过绝对值最小化损失(不关心符号,完美的损失总是0),对吗?
  3. 如果第2条陈述正确,那么损失7.234和-7.234一样差,对吗?
  4. 如果以上所有都正确,那么负面奖励如何告诉机器它是坏的,而正面奖励告诉机器它是好的?

我还阅读了这个回答,然而我仍然没有完全理解为什么负面奖励比正面奖励更差。对我来说,更有意义的是这样做:

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

但这个实验并没有成功。


回答:

“Tensorflow优化器通过绝对值最小化损失(不关心符号,完美的损失总是0),对吗?”

不对。最小化损失意味着尽可能地达到最小的值。也就是说,-100比0“更好”。因此,-7.2比7.2更好。因此,0值实际上并没有特别的意义,除了许多损失函数被设置为0来确定“最优”值。然而,这些损失函数通常被设置为非负的,因此正值与负值的问题不会出现。例子有交叉熵、平方误差等。

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注