neural-network - 用于连续动作空间的 REINFORCE 算法
问题描述
我最近开始探索和玩强化学习,并设法围绕离散的动作空间,并使用 Q-learning 和 Expected SARSA 在 OpenAI Gym 中实现了一些环境。但是,我在理解连续动作空间的处理方面遇到了一些麻烦。
根据我目前的理解,我已经构建了一个输出高斯分布均值的神经网络,目前标准差是固定的。然后使用神经网络的输出,我从高斯分布中采样一个动作并在环境中执行这个动作。对于情节中的每一步,我都会保存起始状态、动作和奖励。一旦这一集结束,我应该训练网络,但这是我正在努力的。
据我了解,策略网络的损失是通过所选动作的对数概率乘以该动作的折扣奖励来计算的。对于离散动作,这似乎很简单,将 softmax 层作为最后一层,并定义一个自定义损失函数,将损失定义为 softmax 输出层的对数乘以我们设置为折扣奖励的目标值。
但是你如何为一个连续的动作做到这一点呢?神经网络输出平均值,而不是动作的概率,甚至不是动作本身,那么如何定义一个损失函数以传递给 keras 以在 TensorFlow 中针对连续情况执行学习步骤?
我已经阅读了各种关于策略优化的文章,虽然文章可能会提到连续案例,但所有相关代码总是关注策略优化的离散动作空间案例,这开始变得相当令人沮丧。有人可以帮我理解如何在 TensorFlow 2.0 中实现连续案例吗?
解决方案
推荐阅读
- c++ - 返回方法中对象的名称
- python - CVXR 中 DCP 规则的问题
- python - 个人令牌的 Python API 标头 Oauth 问题
- javascript - 即使在它正在侦听的对象被销毁后,eventListner 函数也会继续触发
- python - 每当我尝试执行命令 python manage.py runserver 或 python manage.py shell 时,我都在处理 DjangoRest 项目它不会工作
- javascript - 尝试设置 Struct 的属性时出现 TypeError(Nashorn,Kafka Connect 转换器)
- javascript - 为什么在 laravel 的 foreach 循环内部视图中使用按钮元素不起作用?
- amazon-web-services - 通过 Cloudformation 和 OAI 访问 S3 存储桶时的 NoSuchKey 和 HTTP 404
- spring - 刷新物化视图(非同时)以“没有剩余空间”错误结束
- java - 如何将库导入 Netbeans IDE