我在尝试为一个类似于奥赛罗的游戏开发AI时,想尝试一些非常规的方法。
我正在研究多种不同的技术和算法来确定最佳移动,比如Negascout和MTD(f)。然而,这些都需要一个好的评估函数。
我已经想出了一系列可能的指标{A_0…A_n},可以用于一个函数中
G(state) = p_0*A_0 + p_1*A_1 + ... +p_n*A_n
我想找到p_0到p_n的好值
有人建议使用机器学习来生成函数的参数,但在阅读过程中,我发现像Q学习这样的算法都需要我已经有一个奖励函数。
此外,在阅读关于Td(lambda)的内容时,我注意到它甚至不需要手动编码这些指标。它会使用什么样的奖励函数来学习呢?
我对这些理解有什么遗漏的地方吗?
回答:
我认为你把通常被称为Q函数的东西和奖励函数混淆了,Q函数是对从一个状态可以获得的最大总和(可能还有折扣)的奖励的估计。
详细说明如下:存在一个在(s,a,s’)三元组上定义的奖励函数R,它告诉我当我在状态s中选择动作a并最终到达状态s’时,我会获得的奖励。为了决定我应该采取哪个动作,我需要对某个质量函数Q(s,a)进行估计,它告诉我采取动作a在状态s中的预期折扣未来奖励。由于在一般情况下你的转换函数可能是概率性的,所以在相同状态下采取相同动作可能不会总是以相同的后继状态结束。这个q函数对从当前状态开始的轨迹上的每个(s,a,s’)三元组的R进行求和,可能应用一个折扣因子来降低更远奖励的权重,也可能使用一个时间范围。
总之,R是给定的。强化学习的问题是提出Q的估计。Q可以通过对s和a的一系列特征进行线性回归来近似,就像你上面给出的形式一样,但关键是如果你观察到从s开始的轨迹,你就知道从s开始的折扣未来奖励的真实值,因此你有正确的答案来估计回归模型。学习奖励函数是一个完全不同的问题,不能通过Q学习、时间差分等方法解决。