在线机器学习MDP的Python库

8 投票
1 回答
2296 浏览
提问于 2025-04-17 12:21

我正在尝试用Python创建一个迭代的马尔可夫决策过程(MDP)代理,具备以下特点:

  • 可观察的状态
    • 我通过预留一些状态空间来处理可能的“未知”状态,以应对决策过程中的查询类型动作(在t+1时的状态会识别之前的查询[如果之前的动作不是查询则为零]以及嵌入的结果向量)。这个空间用0填充到固定长度,以保持状态框架的对齐,无论回答的查询数据长度如何变化。
  • 在某些状态下可能并不总是有可用的动作
  • 奖励函数可能会随时间变化
  • 策略收敛应该是逐步的,并且只在每次动作时计算

基本的想法是,MDP应该在时间点T使用当前的概率模型做出最佳的优化动作(由于它是概率性的,所以它的动作是随机的,意味着可能会有一些随机性),然后将时间点T+1的新输入状态与时间点T的上一个动作的奖励结合起来,重新评估模型。收敛不能是永久的,因为奖励可能会变化,或者可用的动作可能会改变。

我想知道是否有现成的Python库(最好是跨平台的,因为我需要在Windows和Linux之间切换环境)可以实现这种功能(或者可以通过适当的自定义支持,比如派生类支持,允许重新定义奖励方法等)。

我发现关于在线每次动作的MDP学习的信息相当稀少。我能找到的大多数MDP的使用似乎都集中在作为预处理步骤解决整个策略上。

1 个回答

1

这里有一个用于马尔可夫决策过程(MDP)的Python工具箱

注意:这个工具箱是针对普通的教科书式的MDP,不适用于部分可观察的MDP(POMDP)或者奖励不稳定的情况。

第二个注意:我发现这个工具的说明文档真的不太够用。如果你想知道它具体实现了什么,你得去看Python代码,或者你可以快速查看他们为MATLAB提供的类似工具箱的文档

撰写回答