引言
本篇将介绍我在对
《星际争霸2》进行AI开发
的一些笔记分享。相关代码已上传Github托管。
机器学习 (ML) 是人工智能 (AI)的一个分支,旨在构建能够根据所使用的数据进行学习或改进性能的系统。人工智能是一个宽泛的术语,指的是模仿人类智能的系统或机器。机器学习和人工智能这两个术语经常被相提并论,有时甚至互换使用,但它们的含义并不相同。其中一个重大区别是,所有的机器学习都是 AI,但不是所有的 AI 都是机器学习。
强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。强化学习的常见模型是标准的马尔可夫决策过程(Markov Decision Process, MDP)。按给定条件,强化学习可分为基于模式的强化学习(model-based RL)和无模式强化学习(model-free RL),以及主动强化学习(active RL)和被动强化学习(passive RL) 。强化学习的变体包括逆向强化学习、阶层强化学习和部分可观测系统的强化学习。求解强化学习问题所使用的算法可分为策略搜索算法和值函数(value function)算法两类。深度学习模型可以在强化学习中得到使用,形成深度强化学习 。
背景
游戏背景
《星际争霸2》(StarCraft2)是由暴雪娱乐在2010年7月27日推出的一款即时战略游戏,是《星际争霸》系列的第二部作品。游戏以三部曲的形式推出,即《星际争霸2:自由之翼》(Wings of Liberty)、《星际争霸2:虫群之心》(Heart of the Swarm)和《星际争霸2:虚空之遗》(Legacy of the Void)。游戏结构类似于《星际争霸》,主要的游戏技巧着重在资源上,玩家用采集的资源建造不同的建筑、军队并进行升级 。
《星际争霸》有着专业的职业赛事与选手选拔机制,其中不乏进入过早期有着“电子竞技奥运会”之称的WCG(World Cyber Games),官方赛事有着诸如:暴雪WCS(World Championship Series)世界锦标赛,ESL(Electronic Sports League)电子竞技联盟与GSL(Global StarCraft2 League)全球《星际争霸2》联赛等赛事。
DeepMind • AlphaStar
2016年,继AlphaGo在韩国首尔击败顶尖棋手李世石后,DeepMind的下一个目标战场来到了《星际争霸2》,尝试在战略游戏领域挑战顶尖人类选手。次年,DeepMind开始在欧服天梯上放出自己开发的人工智能AI,开始在PVP实战中训练AI。
时间转到2019年,在DeepMind的人工智能登顶星际争霸最高天梯级别(宗师)后,DeepMind释出了AlphaStar,一个专精于星灵(神族)的人工智能AI,并于1月首次公开挑战来自Team Liquid的职业选手Mana与TLO,结果也如DeepMind所愿,AlphaStar仅仅输了两局,便击败了这两位欧洲职业选手。
籍此,AlphaStar的胜利将AI的可能性再度拔高,并在《Nature》发表相关论文。
开发环境
本文使用 Anaconda + PyCharm 的开发环境对Ai进行编码。
Anaconda为大数据与人工智能开发者提供了开箱即用的工具包,使开发者无需在环境配置方面花费大量无用时间,并对原型进行快速编写;
在神经网络框架方面,使用Google的TensorFlow框架对模型进行编码;
开发使用IDE方面,采用了JetBrains的PyCharm辅以开发上的智能协助;
开发环境与所需软件包
- Windows 10 / 11
- Anaconda
- Python 3.9.10
主要
pip软件包
及版本:
- PySC2:3.0.0
- BurnySC2:5.0.12
- TensorFlow-GPU:2.7.0
pip install pysc2
pip install burnysc2==5.0.12
pip install opencv-contrib-python
pip install tensorflow
# if you want to training your model by GPU, try tensorflow-gpu
# pip install tensorflow-gpu
Ai设计
需求
在《星际争霸2》中,整个系统分为自然资源与人口(最高200)两种主要的资源,自然资源包括晶体矿与瓦斯,而人口则包括了采集单位人口与战斗单位人口;在对战方面,大量的职业联赛也为其带来了数不胜数的战术选择。
即时战略具有高度可变性与不确定性,通常的建筑都需要晶体矿,而对于科技建筑与科技升级,则往往需要额外的瓦斯支出;在人口方面,过量的采集单位会使战斗人口较少而导致正面军队疲软,而低效的采集单位占比则往往会导致后续战局中缓慢的经济收入,无法快速弥补前线战斗导致的战损与及时的攀升科技;战术选择方面,早期偏激的战术在可能的带来高收益(挫败对手采集单位,延缓其经济收入甚至一击制胜)的同时往往也带来高风险,若该战术被对手成功防下,优势将如滚雪球似伴随整场比赛,胜者可能易主;在操作方面,高质量的兵种搭配将为整只部队带来极大的人口优势,同人口下的高级兵种与低级兵种战斗中往往能出现以少胜多的局面。
合理的分配当前所采集到的资源并将其转化为单位,协调采集人口与战斗人口的占比,对当前战况进行分析并制定采取下一步行动,对现有兵种进行合理搭配与操作,是Ai设计中的一大挑战。