You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity ML-Agents无法学习简单赛车任务,求训练配置优化建议

多人赛车游戏ML-Agents训练失效问题分析与优化建议

问题背景

  • 多人赛车玩法,操控球形赛车,车辆自动加速且有最高速度限制
  • 仅提供两种核心控制:刹车(按住持续减速)、Boost(短时间加速至更高速度,持续2秒,冷却10秒)
  • 赛道设围墙,速度过快或撞墙过猛会导致车辆掉落,掉落1秒后从最近checkpoint重生;赛道遍布Unity盒碰撞体类型的checkpoint触发器

当前ML-Agents配置

核心目标

  • 尽快完成赛道并避免掉落;单轮次为完成一圈赛道或最多2500步(正常完成一圈需少于2000步)

动作空间

  • 单离散分支,包含刹车、Boost、无操作三种动作
  • Boost触发后进入状态,1.5秒后自动退出,冷却10秒;刹车持续输入保持刹车状态,且会直接取消Boost状态

奖励惩罚机制

  • 惩罚项:掉落扣1分;通过弯道未掉落扣0.5分;0.2ms内重复刹车(spam操作)扣0.01分;Boost后1秒内刹车取消扣0.5分;每步扣0.001分(鼓励快速完成)
  • 奖励项:通过checkpoint时奖励0.1×(归一化速度平方)

观测输入

  • 归一化速度、Boost取消惩罚激活状态、Spam Boost/Brake惩罚激活状态、车辆状态(独热编码)、前方弯道难度(独热编码)、弯道方向(独热编码)、弯道距离(归一化)、赛道位置检测射线、弯道检测射线

训练配置代码

behaviors:
  Race:
    trainer_type: ppo
    hyperparameters:
      batch_size: 512
      buffer_size: 102400
      learning_rate: 3.0e-4
      beta: 5.0e-4
      epsilon: 0.2
      lambd: 0.99
      num_epoch: 5
      learning_rate_schedule: linear
    network_settings:
      normalize: false
      hidden_units: 128
      num_layers: 2
    reward_signals:
      extrinsic:
        gamma: 0.99
        strength: 1.0
      gail:
        gamma: 0.99
        strength: 0.05
        demo_path: Assets/ML-Agents/Demos/LegoV7.demo
    behavioral_cloning:
      strength: 0.5
      demo_path: Assets/ML-Agents/Demos/LegoV7.demo
    max_steps: 4000000
    time_horizon: 64
    summary_freq: 50000
    threaded: true

训练困境

尝试1-50层堆叠观测、有无演示数据(演示数据共12000步)等多种配置,先在简单赛道训练200万步,再迁移至较难赛道训练400万步后,AI仍无法完成一圈,核心问题包括:

  • 不会在弯道前主动刹车,频繁因速度过快掉落
  • Boost使用逻辑混乱,几乎一冷却就触发,完全不结合赛道场景

问题诊断

  1. 奖励信号逻辑失衡

    • 存在逻辑矛盾:"通过弯道未掉落扣0.5分"反向惩罚了安全行为,严重误导AI决策
    • 惩罚权重不匹配风险等级:Boost后刹车取消的惩罚(0.5分)与掉落惩罚(1分)接近,但实际掉落的后果远严重于取消Boost
    • checkpoint奖励仅与速度挂钩,未结合路径合理性,导致AI盲目追求高速而忽略赛道边界
    • 每步惩罚(0.001分)力度太弱,无法有效驱动AI优先完成赛道
  2. 观测信息不足或冗余

    • 独热编码的弯道难度、方向无法提供连续的场景细节(如弯道曲率、转向角度),AI无法精准判断减速时机
    • 未明确将Boost冷却剩余时间、当前刹车状态纳入观测,AI无法感知动作的持续影响与可用状态
    • 堆叠观测层数跨度太大:50层导致观测空间冗余,增加网络学习难度;1层则无法捕捉Boost冷却、刹车持续效果等时序依赖
  3. 演示数据与训练策略冲突

    • 行为克隆(BC)强度设为0.5过高,限制AI自主探索更优策略;GAIL强度0.05过低,无法有效利用演示数据的行为模式
    • 演示数据仅12000步,覆盖的关键场景(如弯道前刹车、Boost合理使用时机)不足,无法提供有效参考
  4. 动作空间设计局限

    • 单离散分支的刹车动作无法区分减速幅度,AI难以精准控制弯道前的减速力度
    • 未区分Boost的瞬时触发特性与刹车的持续状态特性,AI无法理解动作的不同影响模式

优化建议

1. 重构奖励惩罚机制

  • 修正逻辑错误:移除"通过弯道未掉落扣0.5分"的惩罚,改为通过弯道且保持安全速度奖励0.3-0.5分
  • 调整惩罚权重:将掉落惩罚提升至-5分,Boost后刹车取消惩罚降至-0.2分,强化核心风险规避优先级
  • 优化checkpoint奖励:改为0.1×(归一化速度平方 × 赛道方向匹配度),其中赛道方向匹配度为当前车头朝向与赛道最优路径方向的余弦值,引导AI兼顾速度与路径正确性
  • 加大每步惩罚力度:改为每步扣0.005分,强化"快速完成"的目标导向

2. 优化观测输入

  • 替换独热编码:将弯道难度、方向改为连续归一化值(如弯道曲率、转向角度),让AI精准感知弯道特征
  • 补充关键状态:加入Boost冷却剩余时间(归一化)、当前刹车激活状态至观测输入
  • 调整堆叠观测层数:建议使用4-8层堆叠,既捕捉动作的时序影响,又避免冗余
  • 优化射线检测:增加3-5条不同角度的弯道边界检测射线,让AI提前感知弯道位置与危险距离

3. 调整演示数据与训练策略

  • 降低行为克隆强度:将BC强度设为0.1-0.2,保留演示引导性的同时给AI足够探索空间
  • 提升GAIL强度:设为0.2-0.3,强化演示数据的行为模式学习
  • 扩充演示数据:录制至少30000步包含关键场景的演示(如不同难度弯道前的刹车操作、Boost合理使用时机),覆盖更多赛道场景

4. 动作空间与训练配置优化

  • 优化动作分支:将刹车改为连续动作(0-1的刹车力度),Boost保持离散触发,让AI精准控制减速幅度;若坚持离散动作,可拆分刹车为"轻刹车""重刹车""无刹车"三个选项
  • 调整超参数:
    • 将hidden_units改为256,num_layers改为3,增强网络对复杂场景的拟合能力
    • 将time_horizon提升至128,让AI捕捉更长时间的时序依赖(如Boost的10秒冷却周期)
    • 关闭threaded改为单线程训练,确保训练过程稳定性

5. 分阶段训练策略

  • 第一阶段:在极简单赛道(直线+平缓弯道)训练100万步,目标是让AI学会"不掉落""合理使用Boost"
  • 第二阶段:在中等难度赛道训练200万步,引入弯道前刹车的奖励引导,强化路径规划能力
  • 第三阶段:迁移至目标赛道训练,确保单人模式稳定完成一圈后,再加入多人对抗元素

内容的提问来源于stack exchange,提问作者Saifullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:13:12