我们如何拥有 RF-QLearning 或 SVR-QLearning(将这些算法与 Q-Learning 相结合)

数据挖掘 随机森林 强化学习 q学习 dqn 支持
2022-03-14 04:13:34

我们如何拥有 RF-QLearning 或 SVR-QLearning(将这些算法与 Q-Learning 相结合)?我想用 RF 或 SVR 替换 Qlearning 的 DNN 部分,但问题是没有明确的训练数据可以在 tensorflow 或 keras 中放入我的代码中!我们怎么能做到这一点?

1个回答

您需要在非常大的批次/样本上训练 RF-QN 或 SVR-QN,该批次/样本的生成方式与 DQN 版本中的小批量相同。输入数据将是在模拟或运行批处理环境时访问的状态和操作,标签将是TD 目标 r+γmaxaq^(s,a)使用RF 或 SVR 模型的副本来计算q^损失函数为 MSE。

您需要一个非常大的批次的原因(以及为什么您通常看不到这样做,因为它比 NN 慢得多)是因为基本形式的 RF 和 SVR 都不能在线运行。但是,如果您设法找到该算法的在线版本(我知道有一些用于 RF),那么您几乎可以像使用 DNN 一样使用它们。

无论你在哪里看到q^在伪代码中,您知道需要向前运行模型来估计 Q 值。通常,您需要这样做以进行动作选择(通过为可能的动作找到最佳 Q 值)并生成 TD 目标以进行进一步训练。

以下是您一般需要更改 DQN 实现的方法:

  • 您需要两个 SVR 或 RF 模型副本:一个“目标模型”和一个“学习模型”。您将从一个基本目标模型开始,该模型可以预测随机值或固定值Q(s,a)- 这些显然是错误的,但没关系。每个模型都将使用前一个模型的输出以及有关转换和奖励的真实数据进行训练。在每次训练中,模型变得更加准确,并允许更好地选择动作。

  • 无论您在哪里看到预测或训练 DNN 的调用,都可以替换为预测或训练 SVR 或 RF 的相同调用。当您看到当前网络被克隆到“目标网络”时,对 SVR 或 RF 模型执行相同操作。注意代码何时使用学习网络或目标网络,并使用合适的SVR或RF模型。

  • 如果您使用 RF 或 SVR 的默认全批量训练,那么您将需要立即生成一个大型数据集进行训练,并且您应该立即将生成的新训练的 SVR 或 RF 模型直接克隆到目标模型。此外,由于 SVR 或 RF 中的学习模型无法在线工作,您将需要使用目标网络来选择适合您的操作 - 这应该没问题,尽管它可能会进一步减慢学习速度。根据您的 RL 问题,如果没有在线版本的算法,您的数据集可能很容易在每个训练和克隆步骤中需要 100,000 条或更多记录。