就像术语的复习一样,在 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 少得多的小功能基础,这将使您能够很好地表示您的空间。