当环境不简单时,我应该如何为 SARSA 代理生成数据集?

人工智能 强化学习 数据集 环境 萨尔萨 策略方法
2021-10-23 10:03:06

我目前正在写我的硕士论文,并将应用Deep-SARSA作为我的 DRL 算法。问题是没有可用的数据集,我想我应该以某种方式生成它们。如 [ 1 ]中所述,数据集生成似乎是这个特定主题的一个共同特征

当数据集不可用时,通过经验进行学习。

我想知道当环境不像井字游戏或迷宫问题那么简单时如何生成数据集以及经验意味着什么

PS:环境由15个移动用户和3个边缘服务器组成,每个边缘服务器覆盖多个移动用户。每个移动用户可能会在每个时间步开始时生成计算量大的任务,并且可以自己处理任务或请求其关联的边缘服务器进行处理。如果关联的边缘服务器由于某些原因无法处理,它会请求附近的边缘服务器帮助它。优化问题(奖励)是减少时间和能源消耗(多目标优化)。每个服务器都有一个 DRL 代理来做出卸载决策。

我非常感谢您的建议和帮助。

1个回答

我想知道当环境不像井字游戏或迷宫问题那么简单时如何生成数据集

概念上没有区别,这就是为什么要用井字游戏和迷宫问题来教学的原因。

正如您所指出的,强化学习 (RL) 和监督学习之间的主要区别在于 RL 不使用标记数据集。如果您使用的是 SARSA,那么您也不希望使用任何以前的经验记录,因为 SARSA 旨在在策略和在线上工作 - 这意味着需要训练期间生成数据。SARSA 的训练数据通常仅在使用前临时存储,或立即使用(您可能会保留日志以供分析或帮助记录您的论文,但该日志不会被代理用于进一步训练)。这与 Q-learning 和 DQN 不同,后者在理论上可以利用长期存储的经验。

获取数据有两种主要选择:

  • 使用真实环境。在您的情况下,设置 15 个移动用户和 3 个边缘服务器。检测环境以收集代理的状态和奖励数据。在此环境中将代理实现为真正的决策者。

  • 模拟环境。编写一个模拟用户行为和服务器负载的模拟。提供状态和奖励数据的工具,并将您的学习代理与之集成。通常,代理将调用环境的step函数,将动作选择作为参数传递并接收奖励和状态数据。

如果您可以模拟环境,这可能更适合您,因为您可能会使用更少的计算资源(比 3 台服务器和 15 部手机),并且可以比实时更快地运行训练。深度强化学习可以使用大量经验来收敛于接近最优的策略,而快速模拟可以提供帮助,因为它们比现实更快地产生经验。

您也可以同时采用这两种方法。在模拟中训练一个初始代理,然后在模拟中达到良好的性能水平后实施真实版本。您甚至可以让代理继续学习和改进生产中的行为。鉴于您正在使用 SARSA,这可能是您项目意图的一个重要部分,即代理会随着时间的推移继续适应用户行为和服务器负载的变化。事实上,这是 SARSA 相对于 Q-learning 的一个关键优势,即在部署到生产环境的这种持续学习场景中使用它应该更加可靠和安全。

以及经验意味着什么

强化学习的经验是代理在训练过程中遇到的状态、动作和奖励的记录。