在强化学习中将离散动作转换为连续动作
Transfer Discrete action to Continuous action in Reinforcement Learning
在强化学习中,我们凭经验知道使用离散动作比使用连续动作更容易训练。
但从理论上讲,连续的动作更加准确和快速,就像我们人类一样,我们的大部分动作都是连续的。
那么有没有什么方法或相关研究可以训练一个离散的动作策略以便更容易开始,然后将该策略转移到输出连续动作以获得更好的精度?
谢谢。
你当然可以做到这一点,任何使用强化学习进行连续控制的论文都会做到这一点。唯一没有的是使用 deep 强化学习或函数逼近强化学习的研究人员。我的研究是在动力系统上应用强化学习和深度强化学习。我将我的状态和动作 space 离散化到足够的分辨率,然后应用它来控制问题。
我目前正在研究一些方法来使离散化系统连续工作 spaces。一种方法是使用线性插值。如果你的状态落在 2 个离散点之间,你可以使用线性插值来确定最佳动作(在连续 space 中)。它特别适用于线性系统,因为控制律是线性的,如下所示:
u = Kx
而且这个方法直接符合你的要求:训练离散space,然后将其应用于连续控制问题。
但是,传统上,连续控制问题是使用线性函数逼近(例如分块编码)或非线性函数逼近(例如人工神经网络)来解决的。这些方法更高级,我建议首先尝试使用更基本的离散 RL 方法。我的 Github 上有一个 RL 代码,您可以使用,如果您有任何问题,请告诉我。
在强化学习中,我们凭经验知道使用离散动作比使用连续动作更容易训练。
但从理论上讲,连续的动作更加准确和快速,就像我们人类一样,我们的大部分动作都是连续的。
那么有没有什么方法或相关研究可以训练一个离散的动作策略以便更容易开始,然后将该策略转移到输出连续动作以获得更好的精度?
谢谢。
你当然可以做到这一点,任何使用强化学习进行连续控制的论文都会做到这一点。唯一没有的是使用 deep 强化学习或函数逼近强化学习的研究人员。我的研究是在动力系统上应用强化学习和深度强化学习。我将我的状态和动作 space 离散化到足够的分辨率,然后应用它来控制问题。
我目前正在研究一些方法来使离散化系统连续工作 spaces。一种方法是使用线性插值。如果你的状态落在 2 个离散点之间,你可以使用线性插值来确定最佳动作(在连续 space 中)。它特别适用于线性系统,因为控制律是线性的,如下所示:
u = Kx
而且这个方法直接符合你的要求:训练离散space,然后将其应用于连续控制问题。
但是,传统上,连续控制问题是使用线性函数逼近(例如分块编码)或非线性函数逼近(例如人工神经网络)来解决的。这些方法更高级,我建议首先尝试使用更基本的离散 RL 方法。我的 Github 上有一个 RL 代码,您可以使用,如果您有任何问题,请告诉我。