【译文】A*算法与AI方法from redblobgames

英文原文链接:http://theory.stanford.edu/~amitp/GameProgramming/AITechniques.html

AI 技术

路径搜索算法通常与AI相结合,因为A*算法和其它很多路径规划算法都是由AI研究人员开发的。目前有几种受生物学启发的算法比较受欢迎,同时我也收到过关于我为什么不使用它们的问题。神经网络构造了一个学习了诸多给定的正确案例的大脑模型,它可以学到案例的通用模式。强化学习构造了一个学习了诸多行动和奖惩经验的模型,它可以分辨行动的好坏。遗传算法构造了自然选择的进化模型,通过给定的一组个体,对其完成优胜劣汰的进化过程。通常情况下,遗传算法不允许个体在其生命周期内进行学习,神经网络只允许其在生命周期内学习,而强化学习不仅允许,还可以将个体间经验进行分享。

神经网络

神经网络是通过训练来识别输入模式的结构,用来实现函数逼近,如:给定y1=f(x1),y2=f(x2)…yn=f(xn),构建一个函数f’来逼近f。f’通常是光滑的,对于接近x的x’,期望f(x’)也接近f(x)。故函数逼近有两个目的:
大小:近似函数的表现形式比实际函数小很多;
通用性:近似函数可以用于不知道函数值的输入;
神经网络通常用一组输入向量来产生一组输出向量。在神经网络内部,训练的是“神经元”的权重。网络适用监督学习,这种情况下,输入输出都是已知的,目标是建立一个近似输入输出关系的函数映射表示。
在路径搜索时,函数是f(起始点,终点)=路径,此刻并不清楚输出的路径,我们或许可以用A**算
法计算,但是如果我们能够计算出已知起始点和终点的路径,那么我们就已知函数f了,就没有再去逼近求函数的意义了。当我们已经完全已知f就没有对其进行概述的作用了。如果去逼近函数,可能的潜在优势是这会减少函数f的表示量,变为简单的算法,占用小空间。所以作者认为这没有什么用。而且神经网络的输出大小是固定的,但路径是大小可变的。
相反的,函数近似可能对构建路径搜索的组成部分更有用,比如移动成本函数是未知的,举例来说,在没有实际移动和战斗的情况下,穿越森林的移动代价就是未知的。利用函数近似,每次穿越森林,移动成本都可以被记录并输入神经网络。在未来的路径搜索过程中,新的移动代价可以被用来找到更好的路线。即使函数是未知的,函数近似在不同游戏中函数变化时也有作用。如果某一步移动代价在玩家玩游戏的时候每次都一致,那么游戏开发者就可以事先对其进行计算。
另一个可以从函数近似中获益的是启发式函数,A中的启发式函数估计到达目标的最小代价,如果某个单元沿着路径P=p1,p2……pn移动,那么穿越这条路径后,可以给启发式函数h提供n次更新,即g(pi,pn)=(从i到n的实际成本),近似函数h。当函数h更优时,A计算的也更快。
神经网络尽管不完全能用于路径搜索本身,但可以用于A*使用的函数,移动和启发式函数都可以被测量,然后反馈到网络进行函数近似。

遗传算法

注意:函数近似可以被转换为函数优化问题,要找到能逼近 f(x) 的 f’(x),设置 g(f’) = 所有输入 x 的(f’(x)-f(x))2 之和。
遗传算法允许你探索参数空间,根据 "适应度函数 "找到得分较高的解决方案。遗传算法是实现函数优化的一种方法:给定函数 g(x)(其中 x 通常是参数向量),找出能使 g(x) 最大化(或最小化)的 x 值。这是一个无监督学习问题,即事先并不知道正确答案。就路径搜索而言,给定一个起始位置和一个目标,x 是两者之间的路径,g(x) 是该路径的成本。简单的优化方法(如爬山法)会以增加 g(x) 的方式改变 x。不幸的是,在某些问题中,你会达到 “局部最大值”,即附近的 x 值都没有更大的 g 值,但远处的某个 x 值却更好。遗传算法在爬坡算法的基础上进行了改进,保留了多个 x,并使用突变和交叉等进化方法来改变 x。爬坡算法和遗传算法都可以用来学习 x 的最佳值。
遗传编程将遗传算法向前推进了一步,将程序视为参数。例如,你可以(原文:breeding)路径搜索算法,而不是路径,你的适应度函数将根据每种算法的表现进行评分。对于路径搜索算法,我们已经有了一个很好的算法,不需要再进化出一个新的算法。
与神经网络一样,遗传算法也可以应用于路径搜索问题的某些部分。不过,我不知道遗传算法在这方面有什么用途。相反,一个更有前途的方法似乎是使用已知解决方案的路径搜索技术,将其作为进化个体可用的众多工具之一。

强化学习

与遗传算法一样,强化学习也是一个无监督学习问题。不过,与遗传算法不同的是,agent(遗传算法译为个体)可以在其生命周期内学习,而不必等待它们是 "生 "还是 “死”。此外,经历过不同事情的多个代理也可能分享它们所学到的知识。强化学习与 A* 的核心有一些相似之处。在 A* 中,达到最终目标后,会回传标记沿途的所有选择;其他选择则会被丢弃。在强化学习中,可以对每个状态进行评估,并将其奖赏(或惩罚)传播回去,以标记所有导致该状态的选择。奖励(或惩罚)是通过一个值函数进行传播的,这个值函数有点像 A* 中的启发式函数,但它会随着代理尝试新事物和学习有效方法而更新。与更简单的方法相比,强化学习和遗传算法的主要优势之一是,可以在探索新事物和利用迄今所学信息之间做出选择。在遗传算法中,探索是通过突变进行的;而在强化学习中,探索是通过明确允许选择新行动的概率进行的。
与遗传算法一样,作者认为强化学习不应用于路径搜索问题本身,而应作为指导如何在游戏世界中行动的指南。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值