历史数据的强化学习

机器算法验证 强化学习
2022-03-10 16:58:58

我一直在努力学习针对客户的最佳沟通策略(发送哪些通知、发送多少以及何时发送)。我有过去发送的通知(带有时间戳)及其表现的历史数据。试图将 RL 应用于这个问题,以学习最优策略。然而,这里的一个关键限制是我没有即时(在线)学习策略的奢侈,因为我目前无法控制操作(哪些通知可以发送给哪些客户)。我有两个问题:

  1. 在这样的限制下,强化学习是正确的框架吗?
  2. 在这种情况下,我们如何离线学习最优策略以及如何评估?
3个回答
  1. 在这样的限制下,强化学习是正确的框架吗?

看起来可能,但也许您没有提供的一些小细节会使其他方法更可行。例如,如果通知事件可以被视为或多或少独立,那么监督学习方法可能会更好,或者至少更实用。

更实际的是,您的状态、时间步长和行动选择将是什么并不是 100% 清楚的。这些需要明确定义才能使 RL 方法发挥作用。此外,您希望能够构建具有(或几乎具有)马尔可夫属性的状态 - 本质上,关于预期奖励和下一个状态的任何已知且非随机的事物都包含在状态中。

  1. 在这种情况下我们如何离线学习最优策略

您需要离线(数据是历史数据,而不是“实时”)和离线(数据由与您要评估的策略不同的策略生成)学习器。另外,我猜你不知道生成数据的行为策略,所以你不能使用重要性抽样

可能您可以使用Q 学习方法,并通过使用 Q(λ) 分批,或使用小批量采样的 DQN 的某些变体

这并不能保证有效,因为离线学习往往不如在线学习稳定,并且可能需要多次尝试才能获得有效的超参数。您将需要大量样本来涵盖每个步骤的最优或接近最优选择(不一定在同一剧集中),因为 Q 学习依赖于自举——本质上是将价值估计从动作选择复制到更早的时间步,以影响较早前指出代理更愿意采取行动前往。

如果您的状态/动作空间足够小(当您完全枚举状态和动作时),您可能更喜欢使用 Q-learning 的表格形式,因为它有一些收敛保证。但是,对于大多数实际问题,这实际上是不可能的,因此您需要查看使用近似函数的选项。

...我们如何评估相同的?

如果您可以从 Q 学习(通过检查)中获得看起来逼真的收敛动作值,那么只有 2 种合理的方法来评估性能:

  • 通过在模拟中运行代理(并可能在那里进一步完善它) - 我不认为这对您的场景是可行的,因为您的环境包括您的客户做出的决策。然而,这对于某些场景来说是一个很好的垫脚石,例如,如果环境以基本的现实世界物理为主。

  • 通过实际运行代理,可能在工作负载的某个子集上运行,并在足够长的时间内将实际奖励与预测奖励进行比较,以建立统计置信度。

您还可以与现有操作员一起试运行代理,并获得有关其行动建议(和奖励预测)是否现实的反馈。这将是主观反馈,并且很难在可能使用或不使用这些操作时以数字方式评估性能。但是,它会给你一点质量保证。

最简洁的答案是不。

现在您已经有了历史行为和性能,这是一个经典的监督学习问题,将您的(客户资料,行为)元组映射到性能分数。

以下原因是强化学习对你的任务来说不是一个糟糕的选择的原因:

  1. 强化学习对数据的使用非常低效,因此通常它需要来自模拟器或真实经验的无限量的提供数据。我认为这些情况都不适用于您,因为您不希望未经训练的模型在训练开始时向您的客户发送随机通知,如果您已经有模拟器,您的问题将被认为已解决。

  2. 强化学习通常用于处理长序列的动作,而早期的动作可能会对最终结果产生巨大影响,例如在国际象棋中。在这种情况下,你的行为的每一步最后收到的最终奖励没有明确的划分,因此在强化学习中明确或隐含地使用贝尔曼方程来解决这个奖励归因问题。另一方面,您的问题似乎不具有这种顺序性(除非我误解或您的系统正在与客户来回发送电子邮件),并且您数据中的每个样本都是单步 IID。

这些论文提供了一种名为 Fitted Q Iteration 的方法,用于批量强化学习(即从过去的经验中学习策略) https://pdfs.semanticscholar.org/2820/01869bd502c7917db8b32b75593addfbbc68.pdf https://pdfs.semanticscholar.org/03fd/37aba0c900e232550cf8cc7f66e9465fae94 .pdf

您将需要一个明确定义的奖励函数、状态和动作。

对于测试,最好的方法是针对您的指标使用小型用户群组和 A/B 测试。