2017-04-25 39 views
0

学习者可能正处于训练阶段,在那里它会更新一堆时代的Q表。加强学习:在Q-learning培训完成后,我是否必须忽略超参数(?)?

在这个阶段,Q表会更新为gamma(贴现率),学习率(alpha),并且动作将由随机动作率选择。

经过一段时间后,当奖励变得稳定后,让我称之为“训练完成”。那么在那之后我必须忽略这些参数(伽马,学习率等)吗?

我的意思是,在训练阶段,我从Q-表像这样的动作:

if rand_float < rar: 
    action = rand.randint(0, num_actions - 1) 
else: 
    action = np.argmax(Q[s_prime_as_index]) 

但经过训练阶段,我必须删除rar,这意味着我得从操作像这样的Q桌子?

action = np.argmax(self.Q[s_prime]) 
+0

你使用哪些语言和库?添加标签。 – user31264

+0

我不使用任何库...我自己做了整个系统 – user3595632

+0

似乎这是一个问题stats.stackexchange.com或ai.stackexchange.com – user31264

回答

2

一旦价值函数收敛(值停止变化),您不再需要运行Q值更新。这意味着gamma和alpha不再相关,因为它们只影响更新。

epsilon参数是探索策略(e-greedy)的一部分,有助于确保代理无限次访问所有状态。这是确保代理人的价值函数最终收敛到正确价值的重要因素。然而,一旦我们认为价值函数收敛了,就没有必要继续随机采取行动,我们的价值函数并不认为是最好的;我们认为价值函数是最优的,所以我们通过贪婪地选择它所说的在每个州中最好的行为来提取最优策略。我们可以将epsilon设置为0.

+0

谢谢,尼克! :) – user3595632

+0

还有一件事。在训练状态下,我是否必须在每个新时代重新启动“rar”?如果我在每个时代都重新启动'rar',它就不会收敛! ..认为它会花费那么多时间....? – user3595632

+0

正如巴勃罗的回答指出的那样,“你应该减少剧集数量(或步骤)的epsilon参数(在你的情况下)。”所以不要每一集重新初始化它,只要让它继续衰减。 –

1

尽管@Nick Walker提供的答案是正确的,但这里还是一些附加信息。

你所谈论与技术上称为“勘探开采权衡”的理念密切相关。从Sutton & Barto book

剂具有利用它已经知道为了获得 奖励,但它也有为了做出更好的行动 选择在未来的探索。困难之处在于,无论是勘探还是开采都不能在没有完成任务的情况下完成。 代理商必须尝试各种操作,并逐渐倾向于看起来最好的那些 。实现勘探开采权衡

一种方法是使用的ε-贪婪探索,这是您使用的代码示例中的内容。所以,最后,一旦代理人已经收敛到最优策略,代理人必须只选择那些利用当前知识的人,即,你可以忘记rand_float < rar部分。理想情况下,你应该减少epsilon参数(在你的情况下)与剧集(或步骤)的数量。

在另一方面,对于学习率,这一点,实在值得指出的是,理论上该参数应遵循Robbins-Monro conditions

enter image description here

这意味着,学习率应渐进下降。所以,再一次,一旦算法已经收敛,你可以(或更好地,你应该)安全地忽略学习速率参数。

实际上,有时您可以简单地保持一个固定的epsilon和alpha参数,直到您的算法收敛,然后将它们设置为0(即忽略它们)。