我的学习和应用强化学习的玩具项目是:
- 一个智能体尝试“安全”且“快速”地到达目标状态……
- 但在途中会有投射物和火箭向智能体发射……
- 智能体只能在火箭“靠近”时确定其位置,且带有一些噪声……
- 然后智能体必须学会避免撞击这些火箭……
- 智能体拥有随时间可充电的燃料,这些燃料在智能体移动时消耗……
- 连续动作:向前加速 – 以角度转向
我需要一些提示和适合这种情况的强化学习算法的名称……
– 我认为这是POMDP,但可以将其建模为MDP并忽略噪声吗?
– 如果是POMDP,评估概率的推荐方法是什么?
– 在这种情况下,使用价值函数还是策略迭代更好?
– 我可以使用神经网络来建模环境动态而不是使用显式方程吗?
– 如果可以,有没有推荐的特定类型/模型的神经网络?
– 我认为动作必须离散化,对吗?
回答:
如果这是你第一次尝试强化学习,我建议从比这简单得多的项目开始。你可以从简单的开始,掌握要领,然后再转向像这样的更复杂的项目。我在强化学习领域工作了很长时间,对POMDP仍然感到困惑。现在我会尽力回答我能回答的问题。
我认为这是POMDP,但可以将其建模为MDP并忽略噪声吗?
是的。POMDP代表部分可观察马尔可夫决策过程。部分可观察部分指的是智能体无法完美地知道其状态,但可以基于观察进行估计。在你的案例中,你会将火箭的位置作为带有噪声的观察,基于智能体之前的知识,你可以更新它对导弹位置的信念。这增加了很多复杂性。使用火箭位置作为绝对值而不处理不确定性会更容易。这样你就不需要使用POMDP了。
如果是POMDP,评估概率的推荐方法是什么?
我不明白你的问题。你会使用某种形式的贝叶斯规则。也就是说,你会有一个信念状态的分布(在任何给定状态下的概率),这是你的先验分布,基于观察你会调整这个分布并得到后验分布。如果你需要更多信息,请查看贝叶斯规则。
在这种情况下,使用价值函数还是策略迭代更好?
我大部分经验是使用价值函数,并且发现它们相对容易使用/理解。但我不知道还能告诉你什么。我认为这可能是你的选择,我需要花时间在项目上才能做出更好的选择。
我可以使用神经网络来建模环境动态而不是使用显式方程吗?如果可以,有没有推荐的特定类型/模型的神经网络?
我对使用神经网络建模环境一无所知,很抱歉。
我认为动作必须离散化,对吗?
是的。你需要有一组离散的动作和一组离散的状态。通常,算法会为任何给定状态选择最佳动作,对于最简单的算法(如QLearning),你只需跟踪每个给定状态-动作对的值即可。
如果你正在学习这些内容,我推荐Sutton和Barto的文本。如果你想看到一个简单的强化学习算法示例,我在github上有一个非常简单的基类和使用它的示例(用Python编写)。abstract_rl类旨在为强化学习任务扩展,但非常简单。simple_rl.py是一个简单任务的示例(它是一个简单的网格,其中一个位置是目标,并使用QLearning作为算法),使用base_rl运行并将打印一些显示随时间变化的奖励图表的图表。两者都不太复杂,但如果你刚开始,可能会给你一些想法。我希望这对你有帮助。如果你有更多或更具体的问题,请告诉我。