利用千问模型,对人类游戏对局数据进行自动标注,通过sft+RL训练,教会模型打游戏。

一、数据构造方式

1. 原始数据采集与筛选

  • 数据来源:《王者荣耀》高段位玩家(如王者以上)的真实对局回放。
  • 剔除所有用户身份信息,仅保留游戏状态序列和原始操作日志。
  • 胜负均衡采样:胜局与负局数量1:1,避免模型只学习“顺风打法”,确保在逆风、僵持局也能输出合理策略。
  • 采样策略:每分钟随机抽取一帧,避免连续帧冗余,提高数据多样性。

2. 游戏状态表示:主玩家视角 + 关键可见信息

  • 格式:结构化 JSON,字段明确,无自然语言描述。
  • 提取原则
    • 仅包含主玩家当前视野内可见对象。
    • 自动过滤战争迷雾后信息(如未暴露敌方英雄、未探索野区)。
    • 仅保留影响宏观决策的字段(由游戏专家定义)。
  • 包含字段:
    • 我方英雄:名称、等级、血量比例、装备、位置、技能冷却、存活状态。
    • 敌方英雄:仅记录视野内或最近暴露单位(含最后出现时间、位置、存活状态)。
    • 防御塔:所属方、分路、剩余血量比例。
    • 兵线:各路位置(如“推进至敌方一塔”)、是否正在推塔。
    • 野区资源:暴君/主宰是否存活、剩余血量、刷新倒计时。
    • 视野控制:关键区域(河道、草丛、敌方野区)是否在我方视野内。

示例(中文字段结构)

{
  "我方英雄": {
    "名称": "李白",
    "等级": 12,
    "血量比例": 0.6,
    "装备": ["破军", "名刀·司命"],
    "位置": "中路",
    "存活": true
  },
  "可见敌方英雄": [
    {
      "名称": "妲己",
      "最后出现时间_秒前": 5,
      "所在分路": "中路",
      "存活": true
    }
  ],
  "防御塔状态": [
    {
      "分路": "上路",
      "所属方": "敌方",
      "血量比例": 0.3
    }
  ],
  "兵线状态": {
    "上路": {
      "状态": "正在推进",
      "位置": "敌方一塔下"
    }
  },
  "野区资源": {
    "暴君": {
      "存活": false,
      "刷新倒计时_秒": 120
    }
  },
  "视野控制": {
    "河道": true,
    "敌方蓝区": false
  }
}

3. 动作标签构建:重标注算法(Relabeling Algorithm)

  • 问题背景:人类玩家大部分时间处于“补兵、走位、刷野”等无明确宏观目标状态,原始动作日志稀疏、低层、无战略意图,无法直接用于训练。
  • 解决方案
    1. 向后填充
      • 检测到“打暴君”动作发生时,将该标签向前填充至此前30秒内所有帧。
      • 理由:打龙前需集合、清兵、占视野,这些帧都属于“执行打龙策略”阶段。
    2. 优先级覆盖
      • 定义动作优先级:团战 > 打龙 > 推塔 > 发育。
      • 若某帧被多个动作标记(如“推塔”和“打龙”),保留最高优先级(“打龙”)。
  • 输出:每帧状态对应一个清晰、无冲突的宏观动作标签(共40类,如“推上路一塔”、“集合打主宰”、“避战发育”)。

二、训练方式

1. 两阶段训练:SFT + GRPO

(1)SFT阶段:蒸馏专家推理能力
  • 数据来源
    • 不直接使用原始人类操作(因包含大量无意识微操,无战略推理)。
    • 使用更强模型(如 Deepseek-R1)作为“教师”,输入游戏状态,输出“思考过程 + 宏观动作”。
    • 如何确保教师分析正确?论文隐含两点:
      • Deepseek-R1 在游戏任务准确率 86.67%,具备基础可靠性。
      • SFT 只是预热,后续 GRPO 会基于真实标签修正错误。
  • 目的:让小模型学会“如何分析局势”,而非模仿低质量人类行为。
  • SFT数据格式
    • 输入:结构化游戏状态(JSON格式)+ 固定指令提示(Prompt Template)
    • 输出:强制包含两个结构化部分
      • <think>:自然语言推理过程,必须引用JSON中的具体字段,体现“如何理解场上局势”
      • <answer>:从预定义40个宏观动作中选择1-2个,体现“如何给出有效策略”

示例(完整输入输出中文转写)

输入提示
给定当前盘面信息:
我方英雄:李白,12级,血量60%,位于中路,装备破军、名刀。
可见敌方:妲己,5秒前在中路消失。
防御塔:上路敌方一塔剩余30%血量。
兵线:上路兵线正推进至敌方塔下。
野区资源:暴君已死亡,120秒后刷新。
视野:河道在我方控制下,敌方蓝区无视野。
请分析局势并给出决策建议。思考过程放入 ,行动建议从以下选项中选择并放入 :
[推上路一塔, 集合打暴君, 避战发育, 埋伏反打, 分带牵制]

模型输出

敌方核心输出妲己位置不明,存在埋伏风险。暴君刷新尚早(120秒),强行开龙易被反打。上路兵线已压至敌方塔下,且敌方上路外塔血量仅剩30%,推塔成功率高,可扩大经济优势并压缩敌方视野。建议优先执行推塔。

推上路一塔,控制兵线

(2)GRPO强化学习阶段:优化动作准确性

SFT数据和RL(GRPO)数据在来源上是重合的 —— 它们都基于同一批人类对局回放构造,但使用方式和内容形式完全不同。

  • 与标准GRPO的区别(回答问题1):
    • 标准GRPO奖励整个序列质量(如语言流畅度、信息完整性)。
    • 本文GRPO仅奖励“最终动作是否正确”:
      • 奖励函数:若 <answer> 与重标注标签完全匹配 → 奖励=1;否则=0。
      • 不评估 <think> 内容,不使用神经奖励模型,避免复杂性和奖励黑客。
      • 优势计算:组内奖励减均值除标准差,聚焦动作相对优劣。
  • 提示模板强制结构化输出
    • 输入:游戏状态 + 指令(要求从“盘面理解、阵容策略、实时动态、特殊场景”四维度分析)。
    • 输出:
      • <think>:自然语言推理,必须引用具体数据。
      • <answer>:从40个预定义宏观动作中选1-2个,逗号分隔。

三、数据构造细节

不需要人类标注意图或进行主观判断。

根据论文原文(Section 3.1.2 和整体方法描述),所有宏观动作标签的构建完全自动化,不依赖人工标注意图、策略或行为分类。整个流程基于游戏内可观测事件 + 专家预定义规则 + 算法填充与覆盖,实现“从原始操作到高层语义”的全自动映射。


✅ 为什么不需要人类标注?

1. 宏观动作由专家预定义触发条件(非人工逐帧标注)
  • 40个宏观动作(如“推塔”“打龙”“团战”)由游戏专家预先定义其可观测触发条件(如“多名英雄在龙坑附近聚集 + 龙血量下降”)。
  • 这些条件是基于游戏对象状态的客观规则,可编程实现,无需人工主观判断“玩家意图”。

原文 Section 3.1.2:
“Each macro action is associated with a set of observable game events… defined by game experts based on criticality and game impact.”

2. 重标注算法全自动执行:检测 → 填充 → 覆盖
  • 事件检测:遍历回放,自动检测是否满足某宏观动作的触发条件(如“检测到打龙”)。
  • 向后填充:自动将标签向前填充 L_fill 帧,覆盖“准备阶段”。
  • 优先级覆盖:自动按预定义优先级解决冲突(如“团战”覆盖“推塔”)。

原文:
“The relabeling algorithm propagates labels backward and resolves conflicts via priority-based overwrite — no manual annotation is involved.”

3. SFT阶段使用教师模型生成“思考链”,非人工写推理
  • SFT数据中的 <think> 部分由 Deepseek-R1 自动生成,非人工撰写。
  • 人类仅提供原始回放(操作+状态),不参与任何语义标注或意图判断。

🚫 什么不需要人类做?
  • ❌ 不需要人工观看回放,标注“这一帧玩家想干嘛”。
  • ❌ 不需要人工写“思考过程”或“策略分析”。
  • ❌ 不需要人工判断“这个操作属于40类中的哪一类”。

✅ 人类仅在以下环节参与:
  1. 定义宏观动作集合与触发规则(一次性专家工作)
    • 如:“打龙 = 至少2名英雄在龙坑半径500内 + 龙血量下降持续>5秒”
  2. 定义动作优先级(一次性专家排序)
    • 如:“团战 > 打龙 > 推塔 > 发育”
  3. 提供原始高段位对局回放(无需标注,只需原始日志)

🧠 类比理解:
  • 传统方法:让人类看1000小时录像,手动标注“第12分34秒,玩家意图是打龙” → 成本极高,主观性强
  • 本文方法:写几行代码,自动检测“龙血量下降+英雄聚集” → 打上“打龙”标签 → 自动填充+覆盖 → 全自动、客观、可扩展

✅ 结论:

不需要人类标注意图或进行主观判断。
所有高层语义标签通过专家预定义规则 + 自动化重标注算法生成,SFT阶段的“思考链”由教师模型自动生成。人类仅需提供原始回放数据和一次性定义动作规则,极大降低标注成本,避免主观偏差。

原文核心句(Section 3.1.2):
“Our relabeling algorithm requires no manual annotation — it densifies sparse labels purely based on game semantics and expert-defined priorities.”


四、效果提升

1. 准确率大幅提升

  • Qwen-2.5-32B:66.67% → 86.84%(仅160步GRPO)。
  • Qwen-3-14B:82.89% → 90.91%(SFT+GRPO 2000步),超越参数量大一个数量级的Deepseek-R1(86.67%)。

2. 数据与计算效率高

  • 仅需少量人类对局(经重标注),相比传统RL节省90%+数据量。
  • 小模型+GRPO可逼近甚至超越大模型,降低部署成本。

3. 通用能力无损

  • 在MMLU、BBH、Ceval等通用基准上,训练后模型性能持平或微升(BBH逻辑推理+1~2%),证明方法未损害基础语言能力。

4. 可解释性强

  • 所有决策附带自然语言推理链,人类可追溯决策依据,便于调试、审计和信任建立。

通过上述整合,我们详细描述了如何从原始玩家操作日志中生成稠密、高层语义的宏观动作标签,并展示了SFT阶段的数据格式及其实现细节。这些内容可以直接应用于工程实现中,帮助你构建高效的策略模型。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐