我如何学习奖励功能?

时间:2013-09-12 07:56:20

标签: machine-learning artificial-intelligence

我目前正在开展一个班级项目,并试图在开箱即用于开发类似于othello的游戏的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)的内容时,我注意到它甚至不需要手动编码指示器。它会用什么样的奖励功能来学习?

我的理解中缺少什么?

2 个答案:

答案 0 :(得分:1)

我认为你会混淆通常被称为Q函数的东西,即通过奖励函数估计可以从州获得的最大总和(并且可能是折扣的)奖励。

详细说明:在(s,a,s')三元组中存在一个奖励函数R,它告诉我在状态下我收到的奖励我选择了行动a并最终在s'中。为了决定我应该采取哪种行动,我想要估计一些质量函数Q(s,a),它告诉我在状态s中采取行动a的预期贴现未来奖励。期望是因为在一般情况下,您的过渡函数可能是概率性的,因此在相同状态下的相同动作可能并不总是以相同的后继者结束。该q函数将当前状态的轨迹上的每个(s,a,s')三元组的Rs相加,可能应用折扣因子来加权更远的奖励,也可能采用地平线。

总而言之,给出了R.强化学习问题是提出Q的估计.Q可以通过对s和a的一系列特征进行线性回归来近似,就像你上面给出的形式一样,但是批判性的是你从你那里观察到的轨迹知道s为该轨迹的贴现未来奖励的真实价值,所以你有正确的答案来估计回归模型。学习奖励功能是一个完全不同的问题,不能通过Q学习,时间差异等来解决。

答案 1 :(得分:1)

学习评估功能的简单方法是让两个计算机玩家相互竞争很多次,同时记录所有的董事会职位。每场比赛后,你可以提取对

(x, y)

其中x是棋盘位置的特征向量,y为0或1,表示玩家1是丢失还是赢了。

这样的对是任何香草分类算法的合适输入,例如逻辑回归,神经网络,SVM以及你有什么。

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

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