tensorflow - 有没有办法通过 httprequests(或等效)与客户端设置 TensorFlow RL 训练?
问题描述
情况:
我有一个无法直接控制的环境。但是,我可以连接到该环境并从中调用 httprequests。使用 Post/Get 请求,我想发送当前状态数据并检索最有可能采取的下一步行动。我想为至少 1 个客户执行此操作,但可以使用更多。期望的学习方法将是强化学习(所以我会在状态下通过 Post 请求发送奖励)。
我在 Unity 的 TensorFlow 实现中看到了类似的行为,它会生成多个客户端实例来训练 AI。
解决方案
OpenAI 的Gym环境是一种非常流行的工具,用于训练和可视化强化学习问题。如果 Gym 中不存在您的环境,您可以创建自己的. 健身房学习的基本结构如下:
- 从初始状态开始
s
- 向服务器发送带有状态信息的 HTTP 请求。等待服务器发送包含操作的响应。
- 您的代理执行此操作并与您的环境交互并最终进入新状态
s'
并产生奖励r
。 - 向服务器发送带有奖励的 HTTP 请求,
r
以便您可以更新您的策略。
在您的服务器中,您想编写一个接受状态信息的请求处理程序s
,计算下一个操作并将此请求发回。
从您的政策中选择一项行动。您可以使用Q-Learning,它存储在状态中执行操作的值,然后使用 epsilon-greedy 方法选择操作。您还可以实现一个神经网络,您的输入将是您的状态向量,您的输出将是您可能操作的概率分布。这被称为策略梯度法。
收到奖励后,您可以使用它来改进您的政策。这对于策略梯度方法会更棘手,它需要您发送带有梯度信息的向量以利用自动反向传播工具。
请注意,这种选择动作的方法对于训练来说非常慢。最好在本地进行训练,并在必要时在部署代理时使用服务器。
推荐阅读
- python - 自条件成立以来计算上面的行数
- jquery - $(window).blur() 不适用于 FF Windows 10
- php - 未定义的偏移量:尝试更改 woocommerce 面包屑时出现 1 个错误
- sql - 如何从sql中的日期时间获取日期?
- android - viewmodel 函数可以有一个接收片段的参数吗?
- android - 从其他活动返回时显示活动的最后一个片段
- amazon-sqs - 端口转发到 LocalStack sqs 不起作用
- maven - Maven BOM Pattern,是否支持继承
- angular - 像在 Excel 中一样在角度网格内创建一个注释框
- javascript - 如何删除拖动项目的元素阴影