强化学习中的负面奖励

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

这个问题源自于谷歌针对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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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