ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

手把手教程:用 TorchCraftAI 训练神经网络模型,解决星际争霸建筑放置难题

手把手教程:用 TorchCraftAI 训练神经网络模型,解决星际争霸建筑放置难题 手把手教程用 TorchCraftAI 训练神经网络模型解决星际争霸建筑放置难题【免费下载链接】TorchCraftAIA platform that lets you build agents to learn to play StarCraft: Brood War.项目地址: https://gitcode.com/gh_mirrors/to/TorchCraftAI星际争霸 AI 开发中建筑放置Building Placement是一个看似简单、实则决定胜负的难题同样的建筑放在不同位置直接影响防守、扩张与进攻节奏。本教程将带你完整走一遍基于TorchCraftAI训练神经网络模型来解决星际争霸建筑放置难题的流程从问题拆解、模型设计、数据准备到监督学习与强化学习训练全程零代码门槛也能看懂核心原理。TorchCraftAI 是一个让开发者构建智能体Agent学习玩《星际争霸母巢之战》StarCraft: Brood War的开源平台它把游戏状态、地图信息与深度神经网络训练无缝衔接。如果你一直想尝试用深度学习训练星际争霸 AI却苦于找不到入手点这篇TorchCraftAI 建筑放置训练教程就是为你准备的。一、为什么建筑放置是星际争霸 AI 的难题在星际争霸中建筑承担着资源采集、单位生产、防御推进等核心功能。AI 不仅要决定造什么还要解决放在哪堵口Walling利用建筑卡住关键路口阻挡敌军推进防御建筑保护农民、封锁咽喉要道例如虫族的地堡Sunken Colony前压建筑神族、人族把兵营Barracks / Gateway贴近对手基地施加压力。建筑放错位置可能导致整局被一波流带走放对位置则能以少打多。然而哪里能放、哪里该放由地形、虫苔Creep、可建造性、视野、敌方出生点等多种因素共同决定手工编写规则既繁琐又难以泛化这正是引入神经网络模型的动力所在。上图是游戏内的建筑放置界面绿色高亮的是合法 buildtile 位置红色则不可用例如有其他单位挡路、处于悬崖或缺少虫苔。二、核心思路把建筑放置变成分类问题TorchCraftAI 对建筑放置问题的建模非常优雅把整张地图按 32x32 像素的 buildtile 网格划分让神经网络输出一个 128x128 的概率分布每个格子代表把建筑放在这里的偏好程度。训练完成后AI 只需选取概率最高的合法位置即可。这个思路带来的直接好处是模型输出天然适配地图无需复杂的坐标回归可以借助掩码Mask屏蔽非法位置把动作空间从 16384 个压缩到 10~50 个同一个模型既能做监督学习模仿人类选手也能做强化学习自主试错。2.1 模型的输入特征让 AI 看懂战场为了让模型判断哪里适合放建筑TorchCraftAI 准备了 8 类地图特征全部统一为 128x128 的 buildtile 分辨率张量特征含义Type请求建造的建筑类型Position (UPC)上层策略模块划定的目标区域二进制掩码GroundHeight地面高度0/1/2Walkability是否可通行Buildability是否可建造FogOfWar当前是否有视野Creep虫苔覆盖情况CandidateEnemyStartLocations敌方可能出生点TallDoodad树木等高障碍物Units当前存活单位稀疏表示通过查表嵌入上图是在 Visdom 中可视化的模型输入特征来自 StarData 数据集的真实对局每一格都是一张地图图层。2.2 模型架构卷积神经网络 特征金字塔模型采用带特征金字塔与侧向连接的卷积神经网络CNN左侧用步长为 2 的卷积把 128x128 输入逐级压缩到 32x32在中部用局部滤波器完成全图信息传播右侧再通过上采样与侧向连接恢复到原分辨率最后接 softmax 输出概率热力图。相关实现见 src/models/buildingplacer.cpp。三、第一步准备训练数据监督学习路线监督学习的思路是模仿人类高手从职业选手对局录像Replay中提取他在哪里放了什么建筑作为训练标签。3.1 提取对局样本TorchCraftAI 提供了样本提取工具 scripts/building-placer/collect-replay-samples.cpp它使用 bwreplib 解析录像重放对局以获得玩家视角的完整游戏状态再筛选出成功的建造指令并记录当时的全部特征。提取出的样本用 Cereal 序列化、Zstandard 压缩存储。以虫族为例一条典型的提取日志是这样的Found 37 build actions in bwrep_twaw9.rep for player 1 Wrote 16 samples to ./7/bwrep_twaw9_1/3.2 启动监督训练准备好训练集后运行 scripts/building-placer/train-supervised.cpp 中的训练程序./build/scripts/building-placer/bp-train-supervised -sample_path $OUTPUT_PATH训练采用负对数似然损失把 16384 个格子当成 16384 个类别SGD 优化器并在验证集上做早停验证损失上升就把学习率降低 10 倍连续三次则停止训练。从训练曲线可以看到模型在 Top-1、Top-5、D-1预测位置落在真实位置 3x3 范围内、D-39x9 范围内几项指标上均稳定收敛——说明它确实学到了人类选手的放置规律。四、第二步强化学习路线让 AI 自主进化监督学习能模仿人类但人类未必是最优解。TorchCraftAI 更进一步用**强化学习RL**让 AI 自己试错放对了给正奖励放错了给负奖励。4.1 动作空间掩码加速学习的关键技巧在强化学习中模型输出是 128x12816384 个动作但大部分位置根本不合法不可建造、不在目标区域、虫族建筑需要虫苔。TorchCraftAI 在 softmax 计算时应用合法位置掩码把无效动作的概率直接置零动作空间从 16384 骤降到 10~50 个学习效率大幅提升。对于扩张基地、气矿等场景甚至直接绕过模型采用内置规则。4.2 场景设计沉没殖民地防御战教程配套的示例场景见 tutorials/building-placer/scenarios.cpp是虫族内战对手速出小狗施压我方试图转型飞龙Mutalisk。成败关键在于沉没殖民地Sunken Colony的摆放位置——摆得好能顶住小狗潮摆不好则一触即溃。这个设计把建筑放置的战略价值体现得淋漓尽致。4.3 启动强化学习训练强化学习主循环位于 tutorials/building-placer/train-rl.cpp训练与评估共用同一程序./build/tutorials/building-placer/bp-train-rl # 定期评估-evaluate_every 500 表示每 500 次模型更新评估一次 # 评估内置规则./build/tutorials/building-placer/bp-train-rl -evaluate rules -num_eval_games 5000 # 评估训练好的模型./build/tutorials/building-placer/bp-train-rl -evaluate argmax -num_eval_games 5000 -checkpoint /path/to/checkpoint训练流程中RL 模块 tutorials/building-placer/rlbuildingplacer.cpp 负责把模型采样出的动作翻译成游戏指令并跟踪建筑是否成功开工自定义的强化学习训练器 tutorials/building-placer/bpgtrainer.h 在 REINFORCE 基础上加入了熵正则项鼓励探索并用逐转移采样保证每轮 batch 大小一致、训练更稳定。奖励设计非常简洁建筑成功开工且赢得比赛0.5建筑成功开工但输掉比赛-0.5其他情况0。4.4 训练效果胜率从 65.8% 提升到 78.5%上图是 3 次独立强化学习训练的胜率曲线随着模型更新次数增加胜率从约 55% 稳步爬升至接近 80%。在 5000 局大规模评估中内置规则的平均胜率为 65.8%而强化学习训练出的模型达到78.5%——绝对胜率提升了超过 10 个百分点证明了神经网络模型确实比手工规则更擅长解决建筑放置难题。五、相关文件与源码速查如果你想深入源码学习下面是本教程涉及的关键文件均位于 TorchCraftAI 仓库内模型实现src/models/buildingplacer.cpp强化学习训练主循环tutorials/building-placer/train-rl.cppRL 放置模块tutorials/building-placer/rlbuildingplacer.cpp自定义强化学习训练器tutorials/building-placer/bpgtrainer.h场景与开局配置tutorials/building-placer/scenarios.cpp监督样本提取scripts/building-placer/collect-replay-samples.cpp监督训练程序scripts/building-placer/train-supervised.cpp完整教程文档docs/bptut-intro.md、docs/bptut-model.md、docs/bptut-supervised.md、docs/bptut-rl.md安装指南docs/install-linux.md六、总结与下一步通过这篇教程你应该已经理解了 TorchCraftAI 解决星际争霸建筑放置难题的完整方法论问题建模把建筑放置转化为 128x128 网格上的概率分布分类问题特征设计用地形、虫苔、视野、单位等多通道特征让模型看懂战场监督学习从人类高手录像中学习快速获得可用模型强化学习用掩码压缩动作空间 简洁奖励设计让 AI 超越人类规则。下一步挑战你可以尝试把方法推广到其他种族人族、神族、联合学习何时造、造什么、放哪里或者引入多机分布式训练-c10d_size、-c10d_rank、-c10d_rdvu参数加速实验。星际争霸 AI 的进阶之路就从攻克建筑放置这个经典难题开始【免费下载链接】TorchCraftAIA platform that lets you build agents to learn to play StarCraft: Brood War.项目地址: https://gitcode.com/gh_mirrors/to/TorchCraftAI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表