conda create -n mlagents python=3.8
conda activate mlagents
```
2.安装核心框架:在激活的虚拟环境里,安装ML-Agents的工具包。
```bash
pip install mlagents
```
注意,这里可能还会依赖PyTorch或TensorFlow,根据框架文档提示安装对应版本即可。
3.Unity侧配置:在你的Unity项目中,通过Package Manager导入ML-Agents插件。然后,你需要创建一个最简单的训练场景:一个AI角色(Agent),一个目标(比如一个方块),并给Agent挂上脚本,定义它的观察(Observation)、行动(Action)和奖励(Reward)。
*观察:告诉AI它“看到”什么,比如自己离目标多远、面向哪个方向。
*行动:AI能做什么,比如向前/后/左/右移动。
*奖励:AI做对事就加分,做错事就扣分。这是它学习的唯一指南针。比如,离目标越近,每帧给一点点小奖励;碰到目标,给一个大奖励。
这个过程听起来复杂,但框架提供了大量示例。一开始,强烈建议直接跑通一个官方示例,比如“3D Ball”,确保整个数据通路从Unity到Python训练端是畅通的。这能排除掉80%的环境问题。
环境跑通了,接下来才是真正决定AI聪明与否的关键:你怎么设计它的学习任务。这主要就是上面提到的观察、行动、奖励。
*观察设计:给AI一双“慧眼”。你不能直接把游戏画面像素丢给它,那太复杂了。要想办法提取关键特征。比如,在一个格斗游戏AI里,观察向量应该包括:自身血量、对手血量、双方距离、关键技能冷却状态等。这相当于把复杂的图像信息,提炼成了AI能理解的“结构化数据”。好的观察设计能极大加速训练进程。
*行动空间:让AI知道“手脚”怎么动。行动可以是离散的(比如:0=跳跃,1=蹲下,2=攻击),也可以是连续的(比如:摇杆推送到(-1, 1)之间的任意值)。对于新手,先从简单的离散动作开始,比如训练一个只会移动和跳跃的AI。
*奖励函数:AI的“红绿灯”和“糖果”。这是最难也是最有趣的部分。奖励函数设计是一门艺术。你不能只给最终胜利一个大奖励,那样AI可能永远学不会中间步骤。你需要设计密集奖励(Dense Reward),引导它一步步走向成功。例如,训练AI走到某个地点:
*错误设计:只有到达终点才给+1奖励。
*更好设计:每向目标靠近一小步,就给一个微小的正奖励(如+0.01);远离则给微小的负奖励。这样AI就像被“糖果”一步步引向终点。
这里有个小技巧,也是现在一些先进框架(如ART)在用的:引入“裁判模型”。当奖励规则很难用代码精确描述时,可以调用一个大语言模型(比如GPT-4)来实时评判AI的这一步走得好不好,并给出分数反馈。这相当于请了一个“高级教练”,虽然成本高些,但对于复杂策略的学习非常有效。
配置好一切,就可以输入训练命令了。比如在ML-Agents中:
```bash
mlagents-learn config/ppo/3dball.yaml --run-id=my_first_training
```
训练开始后,别干等着。打开TensorBoard之类的可视化工具,实时查看关键指标:
*累积奖励(Cumulative Reward):整体趋势是否在上升?这说明AI在进步。
*策略损失(Policy Loss)、价值损失(Value Loss):是否在震荡中下降?平稳下降是好事。
*熵(Entropy):衡量AI探索的随机性。初期应该较高(积极探索),后期应逐渐降低(策略趋于稳定)。
训练过程很少一帆风顺。如果奖励一直上不去,你得像个侦探一样排查:
1.奖励给得是不是太“小气”了?尝试放大奖励值。
2.AI是不是根本探索不到正奖励的路径?可以试试课程学习(Curriculum Learning),就像教小孩先学爬再学走。先在一个简单版本的环境(比如目标很近)中训练,等它学会了,再逐步增加难度(目标变远、加入障碍物)。
3.超参数要不要调?学习率、神经网络层大小这些参数,初期可以直接用框架的默认值。等有了一定感觉,再根据文档的指导进行微调。
训练满意后,你会得到一个模型文件。在Unity ML-Agents中,你可以轻松地将它转换为一个“推理模型”,并挂载到Agent上。这时,关掉Python训练端,直接在Unity里运行游戏,你就会看到一个由你亲手训练出来的AI在自主行动了!这种感觉,非常奇妙。
对于SerpentAI这类框架,部署就是让训练好的模型接管图像识别和输入控制模块,在真实的游戏窗口里运行。
最后,我想说,使用AI训练游戏框架,最大的门槛可能不是技术,而是心态。它不像写传统程序,输入确定就有确定输出。训练过程有随机性,需要反复实验、观察和调整。但每一次看到AI从懵懂无知到逐渐掌握规则,甚至玩出你都没想到的“骚操作”时,那种成就感是无与伦比的。
别再只是看视频感叹了,选一个框架,从今天,从第一个“Hello World”级别的游戏AI开始吧。每一步,你都在亲手创造“智能”。
