分层强化学习的实现

时间:2014-10-28 04:28:40

标签: machine-learning reinforcement-learning

任何人都可以推荐一个可以通过抽象来处理大型状态空间的强化学习库或框架吗?

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

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绑定)或者我可以自己实现的未实现的算法吗?

1 个答案:

答案 0 :(得分:3)

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

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

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