首页 文章

可视化强化学习代理的进度

提问于
浏览
0

随着培训的继续,我已经看到很多帖子可视化强化剂的改进 . 他们通常追踪所有奖励的总和或胜率的移动平均值,但我认为我从未读过它们是如何实际做到的 . 我应该将所有会话的结果导出到CSV文件,然后将其可视化吗?当然,可视化部分并不困难,但我一直想知道他们是如何首先收集数据的 .

1 回答

  • 0

    您的问题主要是收集一集中收到的奖励总额或评估代理商的成功率 . 这两种方法都取决于程序员 .

    在第一种情况下,通常通过实施执行一个完整剧集的方法并返回关于剧集中发生的事件的信息来完成 . 您可以返回几个不同的统计信息,它只是关于您的偏好 - 您想要跟踪什么 . 在奖励总和的情况下,您设置一个变量(即 total_reward ),其中0为初始值,并在每个步骤中将观察到的奖励添加到此变量 . 然后,您将在剧集结束时返回此变量的值 . 你可以在外循环中收集每一集的这些值 - 如你所说,在学习结束后将它们可视化并不困难 .

    在评估success_rate的情况下,您可以尝试几种方法 . 您可以向上述方法添加其他信息 - 剧集是否已成功结束(即 is_success ) . 如果您为每集都收集了这样的布尔值,则可以通过计算每10个或更多集的'success episodes'的百分比来汇总信息,然后绘制它 .

    这种方法的缺点是,由于您在代理执行剧集时使用的探索技术,这些结果可能不准确 . 如果探索技术产生太大的影响,那么学习代理人就无法取得成功 . 那个's why another option is frequently used for success rates: after every given number of episodes, you run your agent in an evaluation loop, where you let him choose actions without any exploration technique added (and you don' t在这个过程中培训代理人!) . 评估循环可以包含任意数量的此类测试集(测试集数越多,评估越准确),您只需计算成功剧集并将此数字除以 N 即可计算成功率 . 您可以保存评估的成功率并在培训期间记录它们/在培训结束后将其可视化 . 当然,您可以在绘制值之前计算移动平均值(我相信我不必在这里解释这个计算) .

    就个人而言,我经常使用第二种方法 - 但你可以清楚地看到,这种方法增加了更多的时间开销 . 如果您每10集播放一次评估循环,并且循环由10个测试集组成,那么您的程序执行时间大约是一倍 . 因此,如果性能已经成为一个问题,而且探索技术随着时间的推移会产生衰减影响,那么您也可以使用第一个更简单的版本 .

    我的最后一条评论是 - 请注意,对于总奖励,您实际上可以做同样的事情 - 而不是使用我所解释的收集的值,评估循环也是一个选项 . 因为这些值通常很嘈杂,并且它们不是那么精确(它更像是看到趋势),我从未见过有人那样做 . 但是,你应该意识到一个人有很多选择,这一切都取决于你需要多少精确值和你能承受多少开销 .

相关问题