machine-learning - 分层强化学习的实现

标签 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 学习或 SARSA 之类的工具来探索每一个值来说太多了。

任何人都可以推荐适合该领域的强化库(最好使用 Python 绑定(bind))或我可以自己实现的未实现的算法吗?

最佳答案

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

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

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

关于machine-learning - 分层强化学习的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26600905/

相关文章:

algorithm - 如何将强化学习应用于连续 Action 空间?

machine-learning - Caffe的输入数据量

python - 为什么支持向量机二元分类中的决策边界在我的图上重叠?

python - 线性回归梯度

tensorflow - 当某个 Action 不可执行时如何减少神经网络输出

tensorflow - 如何提高机器学习性能——DQ学习模型

machine-learning - keras 中使用 CNN 对图像进行二元分类时正确预测的总数

python - 如何在 numpy 中优化此函数的计算?

machine-learning - 利用强化学习中学到的策略的方法

c++ - 使用 softmax 进行 Action 选择?