学习者可能正处于训练阶段,在那里它更新了Q-table的一堆时代。
在此阶段,Q-table将使用gamma(折扣率),学习率(alpha)进行更新,并且将通过随机动作率选择行动。
在一段时间之后,当奖励变得稳定时,让我称之为"培训已经完成"。那之后我必须忽略这些参数(伽玛,学习率等)吗?
我的意思是,在训练阶段,我从Q-table那里得到了一个动作:
rar
但是在训练阶段之后,我是否必须删除action = np.argmax(self.Q[s_prime])
,这意味着我必须从Q-table中获取这样的动作?
{{1}}
答案 0 :(得分:2)
一旦值函数收敛(值停止变化),您就不再需要运行Q值更新。这意味着gamma和alpha不再相关,因为它们只会影响更新。
epsilon参数是探索策略(e-greedy)的一部分,有助于确保代理在限制内无限次访问所有状态。这是确保代理的价值函数最终收敛到正确值的重要因素。一旦我们认为价值函数收敛了,就没有必要继续随机采取我们的价值函数并不认为最好的行动;我们认为价值函数是最优的,因此我们通过贪婪地选择它所说的每个州的最佳行动来提取最优政策。我们可以将epsilon设置为0。
答案 1 :(得分:1)
虽然@Nick Walker提供的答案是正确的,但这里有一些额外的信息。
您所谈论的内容与技术上被称为" 勘探 - 开发权衡"的概念密切相关。来自Sutton & Barto book:
代理人必须利用它已经知道的东西才能获得 奖励,但它也必须探索,以便采取更好的行动 将来的选择。困境是无论是探索还是探索 剥削可以完全在没有失败的情况下进行。 代理必须尝试各种操作并逐渐支持这些操作 这似乎是最好的。
实现探索利用权衡的一种方法是使用 epsilon-greedy exploration ,这就是您在代码示例中使用的内容。因此,最后,一旦代理收敛到最优策略,代理必须只选择利用当前知识的那些,即你可以忘记rand_float < rar
部分。理想情况下,您应该使用剧集(或步骤)的数量减少epsilon参数(在您的情况下为rar)。
另一方面,关于学习率,值得注意的是理论上这个参数应该遵循Robbins-Monro conditions:
这意味着学习率应逐渐减少。所以,再一次,一旦算法收敛,你可以(或者更好,你应该)安全地忽略学习率参数。
在实践中,有时您可以简单地维护固定的epsilon和alpha参数,直到算法收敛,然后将它们设为0(即忽略它们)。