我需要用 Q Learning 做一些工作,关于一个人必须在房子里搬运家具(基本上就是这样)。如果房子足够小,我可以简单地使用一个矩阵来表示动作/奖励,但是随着房子尺寸变大,这就不够了。所以我必须使用某种泛化函数来代替。我的老师建议我不只使用一个,而是使用几个,这样我可以比较它们。你们有什么建议?
我听说在这种情况下,人们正在使用支持向量机,还有神经网络。我不太了解这个领域,所以说不准。我过去有过一些神经网络的经验,但 SVM 似乎更难掌握。还有其他我应该寻找的方法吗?我知道肯定有很多,但我只需要一些入门的东西。
谢谢
回答:
作为术语的复习,在 Q-learning 中,你试图学习 Q 函数,它取决于状态和动作:
Q(S,A) = ????
大多数课程中教授的标准 Q-learning 版本告诉你,对于每个 S 和 A,你需要学习一个表格中的单独值,并告诉你如何执行 Bellman 更新以收敛到最佳值。
现在,假设你不使用表格,而是使用不同的函数逼近器。例如,让我们尝试线性函数。获取你的 (S,A) 对,并考虑你可以从中提取的一堆特征。一个特征的例子是“我是否在墙旁边”,另一个特征是“该动作是否会将对象放置在墙旁边”等等。对这些特征进行编号 f1(S,A), f2(S,A), …
现在,尝试将 Q 函数学习为这些特征的线性函数
Q(S,A) = w1 * f1(S,A) + w2*f2(S,A) ... + wN*fN(S,A)
你应该如何学习权重 w?好吧,既然这是一个家庭作业,我让你自己思考一下。
但是,作为提示,假设你有 K 个可能的状态和每个状态中 M 个可能的动作。假设你定义了 K*M 个特征,每个特征都指示你是否处于特定状态并将采取特定动作。所以
Q(S,A) = w11 * (S==1 && A == 1) + w12 * (S == 1 && A == 2) + w21 * (S==2 && A==3) ...
现在,请注意,对于任何状态/动作对,只有一个特征为 1,其余特征都为 0,因此 Q(S,A) 将等于相应的 w,并且你本质上是在学习一个表格。因此,你可以将标准表格 Q-learning 视为使用这些线性函数进行学习的特例。因此,想想正常的 Q-learning 算法做了什么,以及你应该做什么。
希望你能找到一个小的特征基础,远小于 K*M,这将使你能够很好地表示你的空间。