强化学习:在 Q-learning 中完成训练后,我是否必须忽略超参数(?)?
Reinforce Learning: Do I have to ignore hyper parameter(?) after training done in Q-learning?
Learner 可能正处于训练阶段,它会更新 Q-table for bunch of epoch。
在这个阶段,Q-table会随着gamma(discount rate),learning rate(alpha)更新,动作会根据随机动作率来选择。
经过一段时间后,当奖励获得 stable,我称之为 "training is done"。那么我是否必须在之后忽略这些参数(gamma,学习率等)?
我的意思是,在训练阶段,我从 Q-table 得到了这样一个动作:
if rand_float < rar:
action = rand.randint(0, num_actions - 1)
else:
action = np.argmax(Q[s_prime_as_index])
但是在训练阶段之后,我是否必须删除 rar
,这意味着我必须像这样从 Q-table 获得一个动作?
action = np.argmax(self.Q[s_prime])
一旦值函数收敛(值停止变化),您不再需要 运行 Q 值更新。这意味着 gamma 和 alpha 不再相关,因为它们只影响更新。
epsilon 参数是探索策略 (e-greedy) 的一部分,有助于确保代理在极限内无限次访问所有状态。这是确保智能体的价值函数最终收敛到正确值的重要因素。然而,一旦我们认为价值函数收敛了,就没有必要继续随机采取我们的价值函数认为不是最好的行动;我们相信价值函数是最优的,所以我们通过贪婪地选择它所说的在每个状态下的最佳行动来提取最优策略。我们可以将 epsilon 设置为 0。
虽然@Nick Walker 提供的答案是正确的,但这里有一些额外的信息。
您所说的与技术上称为“探索-利用权衡”的概念密切相关。来自 Sutton & Barto book:
The agent has to exploit what it already knows in order to obtain
reward, but it also has to explore in order to make better action
selections in the future. The dilemma is that neither exploration nor
exploitation can be pursued exclusively without failing at the task.
The agent must try a variety of actions and progressively favor those
that appear to be best.
实现探索-利用权衡的一种方法是使用 epsilon-greedy 探索,这就是您在代码示例中使用的方法。因此,最后,一旦智能体收敛到最优策略,智能体必须 select 仅利用当前知识的那些,即,您可以忘记 rand_float < rar
部分。理想情况下,您应该随着剧集(或步骤)的数量减少 epsilon 参数(在您的情况下为 rar)。
另一方面,关于学习率,值得注意的是理论上这个参数应该遵循Robbins-Monro conditions:
这意味着学习率应该逐渐下降。因此,再次强调,一旦算法收敛,您就可以(或者更好的是,您应该)安全地忽略学习率参数。
实际上,有时您可以简单地保持固定的 epsilon 和 alpha 参数,直到您的算法收敛,然后将它们设为 0(即忽略它们)。
Learner 可能正处于训练阶段,它会更新 Q-table for bunch of epoch。
在这个阶段,Q-table会随着gamma(discount rate),learning rate(alpha)更新,动作会根据随机动作率来选择。
经过一段时间后,当奖励获得 stable,我称之为 "training is done"。那么我是否必须在之后忽略这些参数(gamma,学习率等)?
我的意思是,在训练阶段,我从 Q-table 得到了这样一个动作:
if rand_float < rar:
action = rand.randint(0, num_actions - 1)
else:
action = np.argmax(Q[s_prime_as_index])
但是在训练阶段之后,我是否必须删除 rar
,这意味着我必须像这样从 Q-table 获得一个动作?
action = np.argmax(self.Q[s_prime])
一旦值函数收敛(值停止变化),您不再需要 运行 Q 值更新。这意味着 gamma 和 alpha 不再相关,因为它们只影响更新。
epsilon 参数是探索策略 (e-greedy) 的一部分,有助于确保代理在极限内无限次访问所有状态。这是确保智能体的价值函数最终收敛到正确值的重要因素。然而,一旦我们认为价值函数收敛了,就没有必要继续随机采取我们的价值函数认为不是最好的行动;我们相信价值函数是最优的,所以我们通过贪婪地选择它所说的在每个状态下的最佳行动来提取最优策略。我们可以将 epsilon 设置为 0。
虽然@Nick Walker 提供的答案是正确的,但这里有一些额外的信息。
您所说的与技术上称为“探索-利用权衡”的概念密切相关。来自 Sutton & Barto book:
The agent has to exploit what it already knows in order to obtain reward, but it also has to explore in order to make better action selections in the future. The dilemma is that neither exploration nor exploitation can be pursued exclusively without failing at the task. The agent must try a variety of actions and progressively favor those that appear to be best.
实现探索-利用权衡的一种方法是使用 epsilon-greedy 探索,这就是您在代码示例中使用的方法。因此,最后,一旦智能体收敛到最优策略,智能体必须 select 仅利用当前知识的那些,即,您可以忘记 rand_float < rar
部分。理想情况下,您应该随着剧集(或步骤)的数量减少 epsilon 参数(在您的情况下为 rar)。
另一方面,关于学习率,值得注意的是理论上这个参数应该遵循Robbins-Monro conditions:
这意味着学习率应该逐渐下降。因此,再次强调,一旦算法收敛,您就可以(或者更好的是,您应该)安全地忽略学习率参数。
实际上,有时您可以简单地保持固定的 epsilon 和 alpha 参数,直到您的算法收敛,然后将它们设为 0(即忽略它们)。