伽玛
通常,伽玛被视为问题的一部分,而不是算法的一部分。强化学习算法尝试为每个状态优化累积折扣奖励:
r1 + gamma*r2 + gamma^2*r3 + gamma^3*r4 ...
哪里是从当前状态rn
的时间步收到的奖励。n
因此,对于伽玛的一种选择,算法可能会优化一件事,而对于另一种选择,它会优化另一件事。
但是,当您定义了某个高级目标时,通常仍然存在建模选择,因为许多不同的 gamma 可能满足目标的要求。例如,在推车杆中,目标是无限期地平衡杆。如果您对平衡的每一步给予 +1 的奖励,则相同的策略(始终平衡极点的策略)对于所有 gamma > 0 都是最优的。但是,次优策略的排名 - 决定了学习属性这个目标 - 对于不同的伽马值会有所不同。
一般来说,大多数算法在不必对未来展望太远的情况下学习得更快。因此,有时将 gamma 设置得相对较低有助于性能。一般的经验法则可能是:确定min_gamma
仍然满足您的高级目标的最低 gamma,然后将 gamma 设置为gamma = (min_gamma + 1)/2
. (你不想使用gamma = min_gamma
它自己,因为那样的话,一些次优的目标将被认为实际上与期望的目标一样好。)另一个有用的经验法则:对于许多问题,0.9 或 0.95 的 gamma 是可以的。但是,当与奖励函数结合使用时,请始终考虑这样的 gamma 对您正在优化的目标意味着什么。
拉姆达
lambda 参数决定了您在早期学习值与使用当前蒙特卡洛推出时引导的程度。这意味着在更多偏差(低 lambda)和更多方差(高 lambda)之间进行权衡。在许多情况下,将 lambda 设置为零已经是一种很好的算法,但是将 lambda 设置得更高一些有助于加快速度。在这里,您不必担心要优化什么:目标与 lambda 无关,此参数仅有助于加快学习速度。换句话说,lambda 完全是算法的一部分,而不是问题的一部分。
一般的经验法则是使用等于 0.9 的 lambda。但是,尝试一些设置(例如,0、0.5、0.8、0.9、0.95 和 1.0)并绘制学习曲线可能会更好。然后,您可以选择似乎学得最快的那个。