0

我目前正在做一个课堂项目,并试图跳出框框为类似于奥赛罗的游戏开发人工智能。

我正在研究许多不同的技术和算法来确定最佳移动,例如 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 learning 之类的算法都要求我已经有一个奖励函数。

此外,在阅读 Td(lambda) 时,我注意到它甚至不需要手动编码指标。它会使用什么样的奖励函数来学习?

我的理解中缺少什么?

4

2 回答 2

1

学习评估函数的简单方法是让两个计算机玩家相互大量竞争,同时记录所有棋盘位置。每场比赛结束后,您可以提取对

(x, y)

其中 x 是来自棋盘位置的特征向量,y 是 0 或 1,表示玩家 1 是输还是赢。

这样的对是任何普通分类算法的合适输入,例如逻辑回归、神经网络、SVM 等等。

然后,您可以根据分类器的概率输出定义一个评估函数,即 P(y|x):给定棋盘位置 x,玩家 1 获胜的概率。(在 SVM 中,您将需要使用与超平面的距离而不是概率。)

然而,这是一个计算成本很高的过程,因为它需要让计算机与自己进行很多次对抗。您还需要以某种方式选择合理的随机配置而不是开始配置,以防止算法一遍又一遍地学习相同的东西。

于 2013-09-12T10:21:47.057 回答
1

我认为你混淆了通常称为 Q 函数的东西,即从一个状态获得的最大总和(可能是折扣)奖励的估计值与奖励函数。

详细说明:存在一个在 (s,a,s') 三元组上定义的奖励函数 R,它告诉我在状态 s 中我选择动作 a 并最终进入 s' 时我收到的奖励。为了决定我应该采取什么行动,我想要一些质量函数 Q(s,a) 的估计,它告诉我在状态 s 中采取行动 a 的预期折扣未来奖励。期望是因为在一般情况下,您的转换函数可能是概率性的,因此相同状态下的相同动作可能并不总是以相同的后继者结束。这个 q 函数对从当前状态开始的轨迹上的每个 (s,a,s') 三元组的 Rs 求和,可能应用折扣因子来降低更远的奖励的权重,也可能使用范围。

所以总而言之,给出了 R。强化学习问题是提出 Q 的估计值。Q 可以通过对 s 和 a 的一堆特征的线性回归来近似,就像你在上面给出的形式一样,但关键是你观察到你从 s 开始的轨迹从 s 中知道该轨迹的贴现未来奖励的真实值,因此您有正确的答案来估计回归模型。学习奖励函数是一个完全不同的问题,不能通过 Q 学习、时间差异等来解决。

于 2013-09-12T09:47:40.387 回答