Robocode 是 IBM 开发的 Java 战斗机器人平台,游戏者可以在平台上设计一个 Java 坦克。每个坦克有个从战场上收集信息的感应器,并且它们还有一个执行动作的传动器。其规则和原理类似于现实中的坦克战斗。其融合了机器学习、物理、数学等知识,是研究人工智能的很好工具。 在 Robocode 坦克程序中,很多爱好者喜欢设计一些策略与移动模式,让自己的坦克机器人能更好的赢得战斗。但是由于 Robocode 环境时刻在变化,手写的代码只能对已知的环境做一些预测,机器人不能根据环境的变化而自我学习和改善。本文中,将用强化学习实现一个机器人。使用强化学习能创建一个自适应的战斗机器人。这个机器人能在战斗中根据环境取得最好的策略,并尽力使战斗行为最佳。并在此过程中不断学习以完善自身不足。 强化学习 强化学习(reinforcement learning)是人工智能中策略学习的一种, 是一种重要的机器学习方法,又称再励学习、评价学习. 是从动物学习、参数扰动自适应控制等理论发展而来. 强化学习一词来自于行为心理学,这一理论把行为学习看成是反复试验的过程,从而把动态环境状态映射成相应的动作。它通过不断尝试错误,从环境中得到奖惩的方法来自主学习到不同状态下哪些动作具有最大的价值,从而发现或逼近能够得到最大奖励的策略。它类似于传统经验中的“吃一堑长一智”。 原理与模型 考虑建造一个可学习的机器人,该机器人(或 agent)有一些传感器可以观察其环境的状态(state)并能做出一组动作(action)来适应这些状态。比如:一个移动的机器人有摄像头等传感器来感知状态,并可以做"前进","后退"等动作。学习的任务是获得一个控制策略(policy),以选择能达到的目的的行为。 强化学习基本原理也是基于上面的思想: 如果 Agent 的某个行为策略导致环境正的奖赏(强化信号),那么 Agent 以后产生这个行为策略的趋势便会加强。Agent 的目标可被定义为一个奖赏或回报函数(reward),它对 Agent 从不同状态中选取的不同动作赋予一个数字值,即立即支付(immediate payoff)。比如机器人寻找箱子中的回报函数:对能找到的状态-动作赋予正回报,对其他状态动作赋予零或负回报。机器人的任务执行一系列动作,观察结果,再学习控制策略,我们希望的控制策略是在任何初始离散状态中选择动作,使 Agent 随时间累积中发现最优策略以使期望的折扣奖赏(回报)和最大。 如图描述:Agent 选择一个动作(action)用于环境,环境(Enviironment...