在没有外部库的情况下使用Q学习模型

时间:2019-04-07 17:58:03

标签: python machine-learning keras openai-gym q-learning

我正在尝试在基于Pacman的游戏上使用强化学习。我想使用Q学习技术来生成代理的动作。我当时计划使用openai-gym和keras库来训练我的模型,但是我希望有一种方法可以保存我的模型,而无需使用open-gym和keras库(在训练后)。据我了解,Q学习可用于生成状态-动作对,我想知道是否有可能将所有这些可能的组合保存到像Pacman这样的可解决系统中。这似乎有些不切实际,因此,如果您有其他想法,我很想听听他们的想法。

1 个答案:

答案 0 :(得分:0)

从您的问题来看,您似乎有一个世界模型(基于吃豆子的游戏),并且想要训练一种Q学习算法来解决环境。完成后,您要保存模型。

要保存模型,它完全取决于您使用的RL算法。而且,当然,所有这些都可以保存,否则在现实世界中将毫无用处。

表格RL :表格Q学习基本上将代理的策略(Q值)存储在形状矩阵(S x A)中,其中s是所有状态,a是所有可能的动作。解决环境后,只需将此矩阵另存为csv文件即可。我可以在我的GitHub上的“强化学习”中对此进行快速实施。

线性RL :如果状态空间和/或动作空间太大,则可以使用函数逼近。在这种情况下,您将建立一个近似于Q矩阵的线性模型。要保存此模型,只需将线性模型的权重另存为csv甚至文本文件即可。

深层RL :与线性RL相同。您只需要保存神经网络的权重即可。如果您自己编码网络,将其另存为csv文件应该很简单。如果您使用的是tensorflow,则可以通过以下方式创建检查点:

saver = tf.train.Saver()  # Builds the saver

培训结束的地方,放在:

saver.save(sess, model_path)

对于我的GitHub上的确定性较深的策略梯度,我也有此实现。