我对强化学习很陌生,并且正在使用 PPO 和 DQN 算法的一些代码。查看代码后,我注意到作者没有包含任何代码来设置验证或测试数据加载器。在大多数其他机器学习训练循环中,我们通常包括一个验证和测试数据集,以确保模型不会过度拟合训练数据。但是,在强化学习中,数据都是从同一环境中模拟出来的,所以也许过度拟合问题不是什么大问题?
无论如何,有人可以指出仅使用训练数据集或数据加载器进行强化学习并忽略验证或测试数据集是否是标准做法?
我对强化学习很陌生,并且正在使用 PPO 和 DQN 算法的一些代码。查看代码后,我注意到作者没有包含任何代码来设置验证或测试数据加载器。在大多数其他机器学习训练循环中,我们通常包括一个验证和测试数据集,以确保模型不会过度拟合训练数据。但是,在强化学习中,数据都是从同一环境中模拟出来的,所以也许过度拟合问题不是什么大问题?
无论如何,有人可以指出仅使用训练数据集或数据加载器进行强化学习并忽略验证或测试数据集是否是标准做法?
不,我们通常不在强化学习 (RL) 中使用验证/测试数据集。这是因为我们如何在 RL 中使用数据。数据集的使用与经典的有监督/无监督范式非常不同。一些 RL 算法甚至没有这样的数据集。例如,vanilla tabular Q-learning 不使用数据集——它会看到一个体验元组并基于此进行更新并丢弃它,直到在训练期间可能再次看到它。
我没有看过你为 PPO 和 DQN 看过的代码,但我敢打赌,他们使用的数据加载器是用于 a) 在 PPO 中优化最新轨迹时,或者 b) 使用数据加载器进行采样来自 DQN 中的重播缓冲区的经验。
请注意,重播缓冲区在技术上是一个数据集,但它不是其他范例中的传统数据集。这本质上是因为
为了验证 RL 代理,我们通常会评估受过训练的代理在其预期任务上的表现。