Machine learning 分层强化学习的实现

Machine learning 分层强化学习的实现,machine-learning,reinforcement-learning,Machine Learning,Reinforcement Learning,有人能推荐一个强化学习库或框架,通过抽象它们来处理大型状态空间吗 我正试图在游戏世界中实现一个小代理的智能。代理由一个小型两轮机器人表示,该机器人可以前后移动,也可以左右转弯。它有一对用于检测地面边界的传感器,一对用于检测远处物体的超声波传感器,以及一对用于检测与物体或对手接触的碰撞传感器。它还可以做一些简单的航位推算,以它的起始位置作为参考来估计它在世界上的位置。因此,所有可用的状态功能包括: edge_detected=0|1 edge_left=0|1 edge_right=0|1 edg

有人能推荐一个强化学习库或框架,通过抽象它们来处理大型状态空间吗

我正试图在游戏世界中实现一个小代理的智能。代理由一个小型两轮机器人表示,该机器人可以前后移动,也可以左右转弯。它有一对用于检测地面边界的传感器,一对用于检测远处物体的超声波传感器,以及一对用于检测与物体或对手接触的碰撞传感器。它还可以做一些简单的航位推算,以它的起始位置作为参考来估计它在世界上的位置。因此,所有可用的状态功能包括:

edge_detected=0|1
edge_left=0|1
edge_right=0|1
edge_both=0|1
sonar_detected=0|1
sonar_left=0|1
sonar_left_dist=near|far|very_far
sonar_right=0|1
sonar_right_dist=near|far|very_far
sonar_both=0|1
contact_detected=0|1
contact_left=0|1
contact_right=0|1
contact_both=0|1
estimated_distance_from_edge_in_front=near|far|very_far
estimated_distance_from_edge_in_back=near|far|very_far
estimated_distance_from_edge_to_left=near|far|very_far
estimated_distance_from_edge_to_right=near|far|very_far
目标是识别收到奖励信号的状态,并学习尽快获得该奖励的策略。在传统的马尔可夫模型中,这个离散表示的状态空间将有2985984个可能值,这对于使用Q-learning或SARSA之类的方法来探索每个可能值来说太多了


有谁能推荐一个适合这个领域的强化库(最好是使用Python绑定)或一个我可能自己实现的未实现算法吗?

您的实际状态是机器人在世界上的位置和方向。使用这些传感器读数是一种近似值,因为它可能使许多状态无法区分

现在,如果你沿着这条路走,你可以使用线性函数近似。那么这只是24个二进制特征(12 0 | 1+6*2近|远|远)。这是一个非常小的数字,您甚至可以使用所有功能对进行学习。沿着这条路走得更远的是在线发现特征相关性(例如,参见Alborz Geramifard的论文)。这与你对分层学习的兴趣直接相关


另一种方法是使用传统算法来跟踪机器人的位置,并将该位置作为RL的输入。

您能推荐介绍RL中的线性函数近似吗?我对它不熟悉。是的,状态近似是有意的,因为它的目的是在“真实世界”中模拟机器人,机器人永远不会真正知道它的绝对欧几里德位置和方向。我推荐经典的萨顿和巴托。我偶然发现了这个答案“你甚至可以使用所有的功能对”。听起来像(2^24)^2=2^48~10^14。这并不小。@javadba,使用线性函数近似,它只有24个特性,而不是2²⁴. 24²=576仍然是微不足道的。