首页 > 解决方案 > 有没有办法通过 httprequests(或等效)与客户端设置 TensorFlow RL 训练?

问题描述

情况:

我有一个无法直接控制的环境。但是,我可以连接到该环境并从中调用 httprequests。使用 Post/Get 请求,我想发送当前状态数据并检索最有可能采取的下一步行动。我想为至少 1 个客户执行此操作,但可以使用更多。期望的学习方法将是强化学习(所以我会在状态下通过 Post 请求发送奖励)。

我在 Unity 的 TensorFlow 实现中看到了类似的行为,它会生成多个客户端实例来训练 AI。

标签: tensorflowhttp

解决方案


OpenAI 的Gym环境是一种非常流行的工具,用于训练和可视化强化学习问题。如果 Gym 中不存在您的环境,您可以创建自己的. 健身房学习的基本结构如下:

  1. 从初始状态开始s
  2. 向服务器发送带有状态信息的 HTTP 请求。等待服务器发送包含操作的响应。
  3. 您的代理执行此操作并与您的环境交互并最终进入新状态s'并产生奖励r
  4. 向服务器发送带有奖励的 HTTP 请求,r以便您可以更新您的策略。

在您的服务器中,您想编写一个接受状态信息的请求处理程序s,计算下一个操作并将此请求发回。

从您的政策中选择一项行动。您可以使用Q-Learning,它存储在状态中执行操作的值,然后使用 epsilon-greedy 方法选择操作。您还可以实现一个神经网络,您的输入将是您的状态向量,您的输出将是您可能操作的概率分布。这被称为策略梯度法

收到奖励后,您可以使用它来改进您的政策。这对于策略梯度方法会更棘手,它需要您发送带有梯度信息的向量以利用自动反向传播工具。

请注意,这种选择动作的方法对于训练来说非常慢。最好在本地进行训练,并在必要时在部署代理时使用服务器。


推荐阅读