在使用函数近似的Q学习中,是否可以避免手工制作特征?

我对机器学习的背景知识不多,如果我的问题看起来很傻,请原谅我。

根据我所阅读的资料,迄今为止最佳的无模型强化学习算法是Q学习,其中代理的世界中每个状态-动作对都被赋予一个q值,在每个状态下选择q值最高的动作。然后q值按以下方式更新:

Q(s,a) = (1-α)Q(s,a) + α(R(s,a,s’) + (max_a’ * Q(s’,a’))) 其中α是学习率。

显然,对于高维度的问题,状态数量会变得天文数字般庞大,使得q值表的存储变得不可行。

因此,Q学习的实际实现需要通过状态的泛化(即特征)来进行q值近似。例如,如果代理是吃豆人,那么特征可能包括:

  • 到最近的豆子的距离
  • 到最近的鬼的距离
  • 吃豆人是否在隧道中?

这样,你就不需要为每一个状态都有一个q值,而只需要为每一个特征有一个q值。

所以我的问题是:

强化学习代理是否可以创建或生成额外的特征?

我做了一些研究:

这个帖子提到了A Geramifard的iFDD方法

这是一种“发现特征依赖关系”的方法,但我不知道这是否属于特征生成,因为该论文假设你从一组二进制特征开始。

我找到的另一篇相关论文是使用深度强化学习玩Atari游戏,该论文“使用一系列神经网络架构提取高级特征”。

我已经阅读了这篇论文,但仍需进一步理解他们的算法。这是否是我在寻找的?

谢谢


回答:

看起来你已经自己回答了这个问题 🙂

特征生成并不是Q学习(和SARSA)算法的一部分。然而,在一个称为预处理的过程中,你可以使用广泛的算法(你展示了一些)从数据中生成/提取特征。结合不同的机器学习算法会产生混合架构,这是你在研究什么对你的问题最有效时可能需要了解的一个术语。

这里有一个使用SARSA的特征示例(它与Q学习非常相似)。你引用的论文是否对你的情景有帮助,你需要自己决定。正如机器学习中常见的那样,你的方法高度依赖于问题本身。如果你在机器人领域,并且手动定义离散状态很困难,神经网络可能会有帮助。如果你能自己想出启发式方法(如吃豆人示例中那样),那么你可能不需要它。

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

发表回复

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