我和我的团队开始为特定应用程序深入研究 RL。我们有大量代理执行次优策略(状态和奖励......)的数据。
模拟代理(执行动作并评估奖励)对我们来说成本太高,这意味着我们唯一的选择是使用离策略算法在我们的数据集上学习最优策略。但是我仍然不知道如何做到这一点,Q-learning 虽然不合规矩,但仍然需要一个模拟器。
你能给我一些关于如何做到这一点的指导吗?我应该使用哪种类型的算法?
我和我的团队开始为特定应用程序深入研究 RL。我们有大量代理执行次优策略(状态和奖励......)的数据。
模拟代理(执行动作并评估奖励)对我们来说成本太高,这意味着我们唯一的选择是使用离策略算法在我们的数据集上学习最优策略。但是我仍然不知道如何做到这一点,Q-learning 虽然不合规矩,但仍然需要一个模拟器。
你能给我一些关于如何做到这一点的指导吗?我应该使用哪种类型的算法?
Q-learning其实不需要在线,也不需要模拟器,完全可以从经验回放中学习。如果您将所有历史记录放入表格或状态、动作、奖励、下一个状态,然后从中采样,那么应该可以以这种方式训练您的代理。
为此,您需要跳过执行操作和存储结果的算法步骤。然后,该算法将从您拥有的数据中学习。只是不可能收集更多。根据您要解决的问题,这可能没问题,或者可能会抑制学习。
RL 算法在复杂环境中学习最优控制受益于接近其当前策略的采样,因此在您的情况下,您的代理可能会达到从历史数据中学习的限制。尽管它应该有合理的机会改进历史数据显示的最佳行为,但它最终可能与最佳行为相去甚远。
如果由于状态、动作空间的大小需要使用函数逼近(例如神经网络),那么要格外小心,因为很难检测动作值是否正确收敛。这是因为您正在学习最佳Q 值,并且您将没有测试数据来证明这些值应该是什么(要收集该数据,您需要遵循最佳策略并测量总奖励)。
以下是仅体验重放 Q 学习算法的大致情况:
输入:历史, 由行组成
初始化 NN 以进行计算
重复直到 NN 收敛:
样本从
训练NN单步,
您可以利用小批量处理生成多个立即价值观并对其进行培训。一个值得改进的稳定性是在计算 值,并且每 N 步更新一次,作为最近网络的副本,N 可能是 1000 步。