在强化学习中设置gamma和lambda

在使用广义时序差分的标准强化学习算法中(例如SARSA、Q-learning),一个常见的问题是对于特定任务应使用什么样的lambda和gamma超参数值。

我理解lambda与资格迹的长度有关,gamma可以被解释为对未来奖励的折扣程度,但是我如何知道我的lambda值对于某个任务来说是否太低,或者我的gamma值是否太高呢?

我意识到这些问题没有明确的答案,但了解一些关于不适当值的“红旗”将会非常有用。

以标准的推车摆或倒立摆任务为例。我应该将gamma设置得较高,因为完成任务需要很多步骤,还是设置得较低,因为状态信息是完全马尔可夫的?至于lambda值的合理设置,我甚至无法想象……


回答:

Gamma

通常,gamma被视为问题的一部分,而不是算法的一部分。强化学习算法试图为每个状态优化累积折扣奖励:

r1 + gamma*r2 + gamma^2*r3 + gamma^3*r4 ...

其中rn是当前状态在时间步n接收到的奖励。因此,对于一种gamma选择,算法可能优化一件事,而对于另一种选择,它将优化另一件事。

然而,当你定义了一个特定的高层次目标时,通常仍然存在建模选择,因为许多不同的gamma可能满足目标的要求。例如,在推车摆中,目标是无限期地平衡杆子。如果每一步平衡时给予+1的奖励,那么所有gamma > 0的策略(即始终平衡杆子的策略)都是最优的。然而,不同gamma值对次优策略的排序——这决定了朝向此目标的学习特性——将会不同。

一般来说,大多数算法在不需要看得太远的未来时学习得更快。因此,有时将gamma设置得相对较低有助于提高性能。一个普遍的经验法则是:确定最低的gamma min_gamma,它仍然满足你的高层次目标,然后将gamma设置为gamma = (min_gamma + 1)/2。(你不希望使用gamma = min_gamma本身,因为这样一些次优目标将被认为几乎与所需目标一样好。)另一个有用的经验法则是:对于许多问题,gamma为0.9或0.95是可以的。然而,总是要考虑这样的gamma在结合你的奖励函数时对你正在优化的目标意味着什么。

Lambda

lambda参数决定了你对早期学习的值进行引导的程度,还是使用当前的蒙特卡洛展开。这意味着在更多偏差(低lambda)和更多方差(高lambda)之间进行权衡。在许多情况下,将lambda设置为零已经是一个不错的算法,但将lambda设置得稍高一些有助于加速过程。在这里,你不必担心你在优化什么:目标与lambda无关,这个参数仅有助于加速学习。换句话说,lambda完全是算法的一部分,而不是问题的一部分。

一个普遍的经验法则是使用0.9的lambda。然而,可能最好只是尝试几个设置(例如,0, 0.5, 0.8, 0.9, 0.95和1.0),并绘制学习曲线。然后,你可以选择看起来学习速度最快的设置。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注