强化学习:原理与Python实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 强化学习算法的性能指标

强化学习任务各种各样,每个算法都有自己的适用范围。有些强化学习算法对于某些任务性能好,而对于另外一些任务根本就不适用。比如回合更新算法,它可能在某些回合制的任务上表现还行,但是它根本就不适用于连续性任务。所以这个指标和选取的任务直接有关。如果我们要解决某个特定的任务,那么我们最应该关注在这个特定任务下的性能。对于纯粹的学术研究而言,也常常选用一些学界通用的基准任务,比如Gym库里的各种任务。如果某个算法是针对某些特定的任务特别有效,那么就常常定制出一些特定的任务来体现这个算法的优势。所以有句话说:“一千篇声称自己达到最优性能(State-Of-The-Art,SOTA)的论文实际上达到的是一千种不同的最优性能。”

一般而言,我们会看长期奖励及长期奖励在训练过程中的收敛状况,最常见的是给出长期奖励和学习曲线。学习曲线不是一个定量的东西,但是它可以进一步定量化。另外,对于不同类型的强化学习的任务,特别是在线学习任务、离线学习任务、多任务等,每个类型也可能会有自己独特的性能指标。

按通常情况下的重要性排序,我们会关注下列指标。

长期奖励:这个指标是指将强化学习应用到目标任务或基准任务时,可以得到的长期奖励。它的定义有回报、平均奖励等。16.1节比较了几种不同的定义。我们希望这个值的期望越大越好。对这个值的其他统计量往往也有要求,比如在均值相同的条件下会希望它的方差越小越好。

❑最优性和收敛性:在理论上,特别关注强化学习算法是否能在给定的任务上收敛到最优解。能收敛到最优解自然是好的。

样本复杂度(sample complexity):智能体和环境交互往往非常耗费资源,收集样本往往代价高昂。利用尽可能少的样本完成学习非常有价值。值得一提的是,还有一些算法可以利用环境的数学描述或已有的一些历史样本来提高样本的利用率,这样的算法可能会大大降低样本复杂度。甚至有些算法(比如模型价值迭代)仅仅靠模型就能得到最优策略,这种情况下不需要样本,严格来说它就不算强化学习算法。对于离线强化学习算法,它仅仅使用历史样本就可以完成学习,并不需要与环境交互,这样的算法可以认为其“在线的”样本复杂度为0。但是,离线强化学习算法往往只能获得有限的历史样本,所以“离线的”样本复杂度就非常关键。其中,样本复杂度越小越好。

遗憾(regret):这个指标指在训练过程中每个回合的遗憾之和,其中每个回合的遗憾定义为实际获得的回合奖励和收敛后得到的回合奖励的差。遗憾越小越好。在线的任务会关注这个指标。有些算法从0开始训练,关注的遗憾可能是从一开始训练就开始统计了。有些任务可能是先在一个环境下预训练,然后换一个环境再进行训练,并且只关注切换环境后的遗憾。比如,预训练的环境可以是仿真环境,而真正要用的环境是现实生活中的环境,而在现实环境中的失败代价比较大,所以主要关注现实环境中的遗憾值。再例如,预训练的环境可以是研发人员实验室里的可控环境,而真正要用的环境是在客户办公室里的演示,所以需要在客户办公室里训练的遗憾值比较小。

❑并行扩展性(scalability):有些强化学习算法可以利用多个副本加快学习。我们遇到的强化学习任务往往比较复杂,如果能并行加速学习是很有帮助的。

❑收敛速度、训练时间与时间复杂度(time complexity):在理论上,特别关注强化学习算法收敛速度是什么。如果用复杂度的记号来表示,则可以表示为时间复杂度。收敛速度越快越好,时间复杂度越小越好。

❑占用空间和空间复杂度(space complexity):占用空间显然越小越好。有些应用场景比较关注用来存储和回放历史样本占用的空间,另外一些应用场景更在乎需要放置在GPU等特定计算硬件上的存储空间。