首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >学习和累积奖励是评估RL模型的好指标吗?

学习和累积奖励是评估RL模型的好指标吗?
EN

Stack Overflow用户
提问于 2020-05-25 02:40:52
回答 1查看 92关注 0票数 0

我对强化学习还是个新手。

我在这里遇到了一个问题,我正在使用DQN。在学习和采取行动的同时,我绘制了一条累积奖励曲线。在100集之后,它显示了很多波动,这并没有告诉我它是否学到了什么。

然而,我没有使用学习和累积奖励,而是在每一集之后通过没有学习方法的整个模拟,这表明模型实际上学习得很好。这大大延长了程序的运行时间。

此外,我必须在整个过程中提取最好的模型,因为最终的模型有时似乎表现不佳。

对此有什么建议或解释吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-25 13:00:10

尝试使用平均回报,这通常是一个很好的衡量标准,以了解代理是否有所改善。

如果你使用的是tf_agent,你可以这样做:

代码语言:javascript
复制
...
checkpoint_dir = os.path.join('./', 'checkpoint')
train_checkpointer = common.Checkpointer(
    ckpt_dir=checkpoint_dir,
    max_to_keep=1,
    agent=agent,
    policy=agent.policy,
    replay_buffer=replay_buffer,
    global_step=train_step
)

policy_dir = os.path.join('./', 'policy')
tf_policy_saver = policy_saver.PolicySaver(agent.policy)


def train_agent(n_iterations):
    best_AverageReturn = 0
    time_step = None
    policy_state = agent.collect_policy.get_initial_state(tf_env.batch_size)
    iterator = iter(dataset)
    for iteration in range(n_iterations):
        time_step, policy_state = collect_driver.run(time_step, policy_state)
        trajectories, buffer_info = next(iterator)
        train_loss = agent.train(trajectories)
        if iteration % 10 == 0:
            print("\r{} loss:{:.5f}".format(iteration, train_loss.loss.numpy()), end="")
            
        if iteration % 1000 == 0 and averageReturnMetric.result() > best_AverageReturn:
            best_AverageReturn = averageReturnMetric.result()
            train_checkpointer.save(train_step)
            tf_policy_saver.save(policy_dir)

在1000步之后,train函数评估平均回报,如果有任何改进,则创建检查点

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61990680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档