首页 > 解决方案 > 用于连续动作空间的 REINFORCE 算法

问题描述

我最近开始探索和玩强化学习,并设法围绕离散的动作空间,并使用 Q-learning 和 Expected SARSA 在 OpenAI Gym 中实现了一些环境。但是,我在理解连续动作空间的处理方面遇到了一些麻烦。

根据我目前的理解,我已经构建了一个输出高斯分布均值的神经网络,目前标准差是固定的。然后使用神经网络的输出,我从高斯分布中采样一个动作并在环境中执行这个动作。对于情节中的每一步,我都会保存起始状态、动作和奖励。一旦这一集结束,我应该训练网络,但这是我正在努力的。

据我了解,策略网络的损失是通过所选动作的对数概率乘以该动作的折扣奖励来计算的。对于离散动作,这似乎很简单,将 softmax 层作为最后一层,并定义一个自定义损失函数,将损失定义为 softmax 输出层的对数乘以我们设置为折扣奖励的目标值。

但是你如何为一个连续的动作做到这一点呢?神经网络输出平均值,而不是动作的概率,甚至不是动作本身,那么如何定义一个损失函数以传递给 keras 以在 TensorFlow 中针对连续情况执行学习步骤?

我已经阅读了各种关于策略优化的文章,虽然文章可能会提到连续案例,但所有相关代码总是关注策略优化的离散动作空间案例,这开始变得相当令人沮丧。有人可以帮我理解如何在 TensorFlow 2.0 中实现连续案例吗?

标签: neural-networktensorflow2.0reinforcement-learning

解决方案


推荐阅读