在使用函数近似的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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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