使用强化学习教机器人在达到终止状态前在网格世界中收集物品

我的问题如下。我有一个简单的网格世界:

https://i.sstatic.net/xrhJw.png

代理从标记为START的初始状态开始,目标是到达标记为END的终止状态。但代理必须避开标记为X的障碍物,并且在到达END状态之前必须收集所有标记为F的物品。我使用Q-Learning和Sarsa实现了这一点,代理能够到达END状态并避开障碍物(X状态)。所以这一部分运作良好。

我的问题是,如何让代理在到达END状态之前收集所有物品(F状态)?使用Q-Learning或Sarsa时,它会避开障碍物,到达END状态,但不会收集所有物品。通常只会访问一个F状态,然后代理就朝着END状态前进。

谢谢你的帮助!


回答:

你应该始终确保达到目标是最吸引人的与环境互动的方式。你希望代理达到特定目标,而代理试图最大化奖励信号,所以你需要做的是设计一个奖励函数,正确地“引导”代理执行正确的动作。

在你描述的情况下,似乎为了获得最多的奖励,代理应该访问一个F状态,然后前往END状态——所以尝试更改奖励函数,例如,为访问F状态返回更多的奖励。

我能想象的另一个奖励函数是,在没有收集物品的情况下访问END状态时返回-1,收集了物品后访问END状态时返回1,访问其他任何状态时返回0(或者,如果你希望尽快达到目标,可以返回-0.02)。

你可以尝试设计奖励函数——我的建议是进行实验并观察代理的行为。这通常是更好地了解和理解代理和环境的非常好的方法。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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