我对机器学习的背景知识很少,所以如果我的问题看起来很愚蠢,请原谅我。
根据我所读到的内容,迄今为止最好的无模型强化学习算法是 Q-Learning,其中代理世界中的每个状态和 Action 对都被赋予一个 q 值,并且在每个状态下具有最高值的 Action 选择 q 值。然后 q 值更新如下:
Q(s,a) = (1-α)Q(s,a) + α(R(s,a,s') + (max_a' * Q(s',a'))) 其中 α 是学习速度。
显然,对于高维问题,状态数量变得天文数字大,使得 q 值表存储不可行。
因此,Q-Learning 的实际实现需要通过状态(即特征)的泛化来使用 Q 值近似。例如,如果代理是吃 bean ,那么功能将是:
然后,而不是每个状态的 q 值,您只需要每个特征的 q 值。
所以我的问题是:
强化学习代理是否可以创建或生成附加特征?
我做过的一些研究:
This post 提到了 Geramifard 的 iFDD 方法
这是一种“发现特征依赖关系”的方法,但我不确定这是否是特征生成,因为本文假设您从一组二进制特征开始。
我发现的另一篇论文是 Playing Atari with Deep Reinforcement Learning ,它“使用一系列神经网络架构提取高级特征”。
我已经阅读了这篇论文,但仍然需要充实/完全理解他们的算法。这是我要找的吗?
谢谢
最佳答案
好像你已经回答了你自己的问题:)
特征生成不是 Q-learning(和 SARSA)算法的一部分。但是,在称为预处理的过程中,您可以使用多种算法(您展示了其中的一些)从数据中生成/提取特征。结合不同的机器学习算法会产生混合架构,这是您在研究最适合您的问题的方法时可能会考虑的术语。
这是一个 example of using features with SARSA(与 Q-learning 非常相似)。
你引用的论文是否对你的场景有帮助,你必须自己决定。与机器学习一样,您的方法高度依赖于问题。如果您从事机器人技术并且很难手动定义离散状态,那么神经网络可能会有所帮助。如果您可以自己思考启发式方法(如 pacman 示例),那么您可能不需要它。
关于machine-learning - 在使用函数逼近的 Q-learning 中,是否可以避免手工制作特征?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27370495/