1

我必须和 Q Learning 一起做一些工作,关于一个必须在房子周围移动家具的人(基本上就是这样)。如果房子足够小,我可以有一个代表行动/奖励的矩阵,但是随着房子的大小变得越来越大,这还不够。所以我必须使用某种泛化函数来代替它。我的老师建议我不要只用一个,而是用几个,这样我就可以比较它们等等。大家推荐什么?

我听说对于这种情况,人们正在使用支持向量机,也就是神经网络。我不是真正的领域内,所以我不能说。我过去在神经网络方面有过一些经验,但 SVM 似乎更难掌握。还有其他我应该寻找的方法吗?我知道肯定有无数个,但我需要一些东西才能开始。

谢谢

4

1 回答 1

2

就像术语的复习一样,在 Q-learning 中,您正在尝试学习 Q-functions,它取决于状态和动作:

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 学习视为使用这些线性函数进行学习的特例。所以,想想普通的 Q 学习算法做了什么,你应该做什么。

希望您能找到比 K*M 少得多的小功能基础,这将使您能够很好地表示您的空间。

于 2009-10-13T05:48:32.080 回答