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