我目前正在从事一个课堂项目,正在尝试为类似于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)的信息时,我注意到它甚至不需要手动编码指示符。它会使用哪种奖励功能?
我的理解中缺少什么?
最佳答案
我认为您将通常被称为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学习,时间差异等解决。
关于machine-learning - 如何学习奖励功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18758615/