有没有可能动态问Q-功能?

人工智能 人工智能设计 q学习 优化
2021-11-10 20:13:46

我正在尝试使用 Q-learning 进行能量优化。我只希望学习代理将访问的状态,并且对于每个状态,我都有一个生成可能动作的函数,这样我就有一个嵌套字典形式的 Q 表,其中包含状态(添加当它们出现时)作为键,其值也是作为键的可能操作的字典,作为值的 Q 值。这可能吗?它将如何影响学习?我还可以使用哪些其他方法?

如果可能并且没问题,并且我想更新 Q 值,但下一个状态是以前从未出现过的状态,并且必须添加到我的嵌套字典中,所有可能的操作都具有初始 Q 值为零,如何我要更新 Q 值吗,现在下一个状态中的所有动作的 Q 值都为零?

1个回答

我有一个生成可能动作的函数,这样我就有一个嵌套字典形式的 Q 表,状态(在它们发生时添加)作为键,其值也是可能动作的字典,作为键和 q 值作为价值观。这可能吗?它将如何影响学习?我还可以使用什么其他方法?

(免责声明:我在这里向 OP 提供了这个建议,作为对 Data Science Stack Exchange 上一个问题的回答

是的,这是可能的。假设您已经决定了 Q 学习的所有其他决定(例如奖励、折扣因子或时间范围等),那么与任何其他建表方法相比,它对学习没有逻辑影响。表的结构与 Q 学习的收敛方式无关,它是一个实现细节。

这种结构的选择可能会对代码运行的速度产生影响——与使用过度指定所有可能状态和动作的张量相比,当它显着减少内存开销时,设计效果最佳。如果状态向量的所有部分都可以采用任意组合的所有值,并且所有状态具有相同数量的允许动作,那么 Q 表的张量模型可能比散列更有效。

我想更新 Q 值,但下一个状态是以前从未出现过的状态,必须将所有可能的操作添加到我的嵌套字典中,初始 Q 值为零;我如何更新 Q 值,现在下一个状态下的所有动作的 Q 值都为零。

我假设您指的是单步 Q 学习中的更新规则:

Q(s,a)Q(s,a)+α(r+γmaxaQ(s,a)Q(s,a))

当你第一次访问时你会做什么(s,a), 并想计算maxaQ(s,a)对于上述更新,但所有Q(s,a)=0,因为您实际上只是创建了它们?

您所做的是在更新中使用零值。无论您是按需创建条目还是从一个大的零表开始,都没有区别。零值是您对操作值的最佳估计,因为您没有数据。随着时间的推移,由于状态和动作对被多次访问,可能跨越多个情节,由于更新公式在状态之间建立链接的方式,经验值将随着时间步长而备份ss.

实际上,您可以使用除零以外的任意值。如果您有一些来自强化学习程序之外的方法或信息,那么您可以使用它。此外,如果您使用乐观的起始值,有时它有助于探索- 即可能高于真正最佳值的某个值。这种方法有一定的局限性,但它是一种快速简单的尝试技巧,有时它有助于更​​可靠地探索和发现最佳策略。